Crossroad v3.0.0 Release Notes
Release Date: 2019-08-08 // over 4 years ago-
Crossroad 3.0.0 includes dramatically changes.
Careful treating URL in its RFC #18
According to the URL RFC, URL schemes and hosts must be case-insensitive.
However, other path components must be case-sensitive.Crossroad now treats case-insensitive URL.
router = DefaultRouter(scheme: "pokedex") router.register([("/pokemons", { context inlet type: Type? = context[parameter: "type"] presentPokedexListViewController(for: type) return true }), // ...])let canRespond25 = router.responds(to: URL(string: "POKEDEX://POKEMONS")!) // Accept!!!
๐ Support subscript #22
You can get arguments and parameters via
[]
.let pokemonID: Int = context[argument: "pokemonID"]let query: String = context[parameter: "query"]
๐ More Support relative path #17
I recommend to use relative path for routing patterns especially for Universal Links. It should be readable.
router = DefaultRouter(url: URL(string: "https://my-awesome-pokedex.com")!) router.register([("/pokemons", { context inlet type: Type? = context[parameter: "type"] presentPokedexListViewController(for: type) return true }), // ...])
๐ Introduce
URLParser
#16๐ In some use cases (such a complex applications), you need to use separated URL parser.
๐ Now, Crossroad 3 providesURLParser
to make Context.let parser = URLParser\<Void\>()let context = parser.parse(URL(string: "pokedex:/pokemons/25")!, in: URLPattern("pokedex://pokemons/:id")))
๐ Rename
Extractable
toParsable
#19Now rename
Extractable
toParsable
. You have to use constractors instead of the static methods.Before
public protocol Extractable { static func extract(from: String) -\> Self?}
After
public protocol Parsable { init?(from: String) }