routing, this and that.
- automatic path precedence
- ambiguity detection
- variables parts
- partially variable parts
- optional parts
- parameter parsing
Rhumb allows you to map paths to functions
rhumb.add("/happy/shoes", function(){
return shoes
})
If those paths contain variable parts, rhumb will grab them for you
rhumb.add("/happy/shoes/{color}", function(params){
return shoes.inColor(params.color)
})
Whatever you return in the callback will to handed back to the caller of match
redShoes = rhumb.match("/happy/shoes/red")
Fixed paths are the most simple
rhumb.add("/latest/potatoes")
will match /latest/potatoes
only
Use variable parts in your path to allow a range of options
rhumb.add("/potatoes/{variety}")
This route will match when anything is provided as a variety e.g.
- /potatoes/osprey
- /potatoes/saxon
- /potatoes/marabel
- /potatoes/321
- /potatoes/chips
A variety must be provided, so /potatoes
alone will not match
Paths with variable parts generate a params
object which is passed to the callback
rhumb.add("/potatoes/{variety}", function(params){
console.log(params.variety)
})
rhumb.match("/potatoes/marabel")
// > "marabel"
Partially variable parts allow you to capture more than one variable from a single segment of a URL.
If you wanted to capture a date in a url like /news-from/tue-march-1900
you could do so using partial parts.
rhumb.add("/news-from/{day}-{month}-{year}", function(params){
console.log(
params.day
, params.month
, params.year
)
})
Optional parts, well, are optional
rhumb.add("/stories(/{name})")
The above route matches for /stories
and for /stories/anything
Optionals can be nested e.g.
rhumb.add("/stories(/{author}(/{genre}))")
Will match
/stories
/stories/bob
/stories/sarah/scary
Have fun!
License: http://sammyt.mit-license.org