@@ -8,7 +8,7 @@ public struct Compass {
88 concreteMatchCount: Int ,
99 wildcardMatchCount: Int )
1010
11- private static var internalScheme = " "
11+ fileprivate static var internalScheme = " "
1212 public static var delimiter : String = " : "
1313
1414 public static var scheme : String {
@@ -18,21 +18,21 @@ public struct Compass {
1818
1919 public static var routes = [ String] ( )
2020
21- public static func parse( url: NSURL , payload: Any ? = nil ) -> Location ? {
22- let path = url. absoluteString. substringFromIndex ( scheme. endIndex)
21+ public static func parse( url: URL , payload: Any ? = nil ) -> Location ? {
22+ let path = url. absoluteString. substring ( from : scheme. endIndex)
2323
24- guard !( path. containsString ( " ? " ) || path. containsString ( " # " ) ) else {
25- return parseAsURL ( url, payload: payload)
24+ guard !( path. contains ( " ? " ) || path. contains ( " # " ) ) else {
25+ return parseComponents ( url : url, payload: payload)
2626 }
2727
2828 let results : [ Result ] = routes. flatMap {
29- return findMatch ( $0, pathString: path)
30- } . sort { ( r1: Result , r2: Result ) in
31- if r1. concreteMatchCount == r2. concreteMatchCount {
32- return r1. wildcardMatchCount > r2. wildcardMatchCount
33- }
29+ return findMatch ( routeString : $0, pathString: path)
30+ } . sorted { ( r1: Result , r2: Result ) in
31+ if r1. concreteMatchCount == r2. concreteMatchCount {
32+ return r1. wildcardMatchCount > r2. wildcardMatchCount
33+ }
3434
35- return r1. concreteMatchCount > r2. concreteMatchCount
35+ return r1. concreteMatchCount > r2. concreteMatchCount
3636 }
3737
3838 if let result = results. first {
@@ -42,10 +42,10 @@ public struct Compass {
4242 return nil
4343 }
4444
45- static func parseAsURL ( url: NSURL , payload: Any ? = nil ) -> Location ? {
45+ static func parseComponents ( url: URL , payload: Any ? = nil ) -> Location ? {
4646 guard let route = url. host else { return nil }
4747
48- let urlComponents = NSURLComponents ( URL : url, resolvingAgainstBaseURL: false )
48+ let urlComponents = URLComponents ( url : url, resolvingAgainstBaseURL: false )
4949 var arguments = [ String : String] ( )
5050
5151 urlComponents? . queryItems? . forEach { queryItem in
@@ -71,7 +71,8 @@ public struct Compass {
7171
7272 for (route, path) in zip ( routes, paths) {
7373 if route. hasPrefix ( " { " ) {
74- let key = route. replace ( " { " , with: " " ) . replace ( " } " , with: " " )
74+ let key = route. replacingOccurrences ( of: " { " , with: " " )
75+ . replacingOccurrences ( of: " } " , with: " " )
7576 arguments [ key] = path
7677
7778 wildcardMatchCount += 1
@@ -94,8 +95,8 @@ public struct Compass {
9495
9596extension Compass {
9697
97- public static func navigate( urn: String , scheme: String = Compass . scheme) {
98- guard let url = NSURL ( string: " \( scheme) \( urn) " ) else { return }
99- openURL ( url)
98+ public static func navigate( to urn: String , scheme: String = Compass . scheme) {
99+ guard let url = URL ( string: " \( scheme) \( urn) " ) else { return }
100+ open ( url : url)
100101 }
101102}
0 commit comments