No description, website, or topics provided.
JavaScript Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A simple router that supports the following types of paths:



# Install latest version of path-based-router
# and save changes to package.json
npm install path-based-router --save


// some assertion library (such as the one provided by NodeJS)
var assert = require('assert');

// Create instance of router
var router = require('path-based-router').create({
    routes: [
        // simple String paths

        // :carId is a placeholder

        // simple path

        // :truckId is a placeholder

        // "**" matches any characters (including forward slashes)
        // so it will typically appear at the end of the path

        // 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 creation

// You can also add routes after creation
    path: '/some/thing/else'

var match = router.findRoute('/boats/123');
// match is not null then match was found
if (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 true
    assert(params.boatId === '123');

    // this assertion will be true
    assert(route.anyExtraInformation === 'something');

    // toString() will return the original path with no placeholder substitution
    assert(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 index
assert(searchMatch.params[0] === 'abc/123');

Alternative constructor:

var Router = require('path-based-router').Router;
var router = new Router();