diff --git a/WakaTime/Helpers/MonitoringManager.swift b/WakaTime/Helpers/MonitoringManager.swift index 9550907..a04dc70 100644 --- a/WakaTime/Helpers/MonitoringManager.swift +++ b/WakaTime/Helpers/MonitoringManager.swift @@ -378,25 +378,29 @@ class MonitoringManager { } } + struct Pattern { + var expression: String + var group: Int + } + static func project(from url: String) -> String? { - let patterns = [ - "github.com/([^/]+/[^/]+)/?.*$", - "gitlab.com/([^/]+/[^/]+)/?.*$", - "bitbucket.org/([^/]+/[^/]+)/?.*$", - "app.circleci.com/.*/?(github|bitbucket|gitlab)/([^/]+/[^/]+)/?.*$", - "app.travis-ci.com/(github|bitbucket|gitlab)/([^/]+/[^/]+)/?.*$", - "app.travis-ci.org/(github|bitbucket|gitlab)/([^/]+/[^/]+)/?.*$" + let patterns: [Pattern] = [ + Pattern(expression: "github.com/[^/]+/([^/]+)/?.*$", group: 1), + Pattern(expression: "gitlab.com/[^/]+/([^/]+)/?.*$", group: 1), + Pattern(expression: "bitbucket.org/[^/]+/([^/]+)/?.*$", group: 1), + Pattern(expression: "app.circleci.com/.*/?(github|bitbucket|gitlab)/[^/]+/([^/]+)/?.*$", group: 2), + Pattern(expression: "app.travis-ci.com/(github|bitbucket|gitlab)/[^/]+/([^/]+)/?.*$", group: 2), + Pattern(expression: "app.travis-ci.org/(github|bitbucket|gitlab)/[^/]+/([^/]+)/?.*$", group: 2) ] for pattern in patterns { do { - let regex = try NSRegularExpression(pattern: pattern) + let regex = try NSRegularExpression(pattern: pattern.expression) let nsrange = NSRange(url.startIndex..