tafel v1.2.0
tafel
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