Installation

Usage

// some assertion library (such as the one provided by NodeJS)var assert =require('assert');
// Create instance of routervar router =require('path-based-router').create({
routes: [
// simple String paths'/cars',
// :carId is a placeholder'/cars/:carId',
// simple path'/trucks',
// :truckId is a placeholder'/trucks/:truckId',
// "**" matches any characters (including forward slashes)// so it will typically appear at the end of the path'/search/**',
// If you want to attach metadata to route use object with "path" property
{
// "path" is a required property
path:'/boats/:boatId',
// Anything else is extra...
anyExtraInformation:'something'
}
]
});
// You can also add routes after creationrouter.addRoute('/some/thing');
// You can also add routes after creationrouter.addRoute({
path:'/some/thing/else'
});
var match =router.findRoute('/boats/123');
// match is not null then match was foundif (match) {
// match will contain "route" which is an instance of Route.// match will also contain "params" which is an object that// contains values that were found for each placeholder.// A Route has a "path" property and any extra metadata.var route =match.route;
var params =match.params;
// this assertion will be trueassert(params.boatId==='123');
// this assertion will be trueassert(route.anyExtraInformation==='something');
// toString() will return the original path with no placeholder substitutionassert(route.toString() ==='/boats/:boatId');
// toString(params) will return the path with placeholders substituted// (NOTE: placeholders that did not have a value will be replaced with// empty string)assert(route.toString(params) ==='/boats/123');
}
var searchMatch =router.findRoute('/search/abc/123');
// wildcard (**) search parameter values are keyed by their indexassert(searchMatch.params[0] ==='abc/123');