Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including tafel with all npm packages installed. Try it out:

var tafel = require("tafel")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

tafel v1.2.0

Routing table built on routington

tafel Build Status

Routing table built on routington

Tafel encourages the creation of weakmap-powered routers. Route definitions are immutable. Weakmapping eliminates the need to use paths or arbitrary string keys to store and manipulate routing state.

Install

$ npm install --save tafel

Usage

var Table = require('tafel')
var table = Table()

var users = table.add('/users')
var user = table.add('/users/:id')

var match1 = table.match('/users')
//=> match1.key === users
//=> match1.params === {}

var match2 = table.match('/users/123')
//=> match2.key === user
//=> match2.params === {id: '123'}

table.path(user, {id: 123})
//=> /users/123

API

Table() -> object

Creates a new routing table.

table.add(path) -> object

Defines a new route. Returns a key that can be used for weakmapping other data associated with routing.

path

Required
Type: string

A routing path definition. See routington.define for more details on defining paths.

table.match(path) -> null / object

Matches a path against the routing table. Returns null if no match was found. Otherwise returns an object with:

params

Type: object

Matched path params. For the route definition /users/:id and the path /users/123, the path params are {id: '123'}. Note that all values are strings.

key

Type: object

The same key returned by table.add.

path

Required
Type: string

An application path (not a path definition).

table.path(key, [params]) -> string

Generates the path for a given route in the same form expected by table.match as input.

key

Required
Type: object

The route key returned by route.add.

params

Type: object
Default: {}

Path parameters to interpolate. Each parameter in the URL must be defined.

var route = table.add({path: '/packages/:name'})
var path = table.path(route, {name: 'tafel'})
//=> /packages/tafel

License

MIT © Ben Drucker

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free