Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

tafel

1.2.0 • Public • Published

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

install

npm i tafel

Downloadsweekly downloads

2

version

1.2.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability