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