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

pull-router

pull router

High level router using pull streams.

install

$ npm install pull-router

example

var S = require('pull-stream')
var Router = require('../')
var assert = require('assert')
 
// through streams go here 
var TestRouter = Router([
    ['/foo', function (params, route) {
        return S.map(function (ev) {
            return { count: ev }
        })
    }]
])
 
var router = TestRouter([
    // duplex streams go here 
    ['/foo', function (params, route) {
        return {
            source: S.once(1),
            sink: S.collect(function (err, res) {
                // our source is piped through the transform 
                // we defined above 
                console.log(route.route)  // => /foo 
                console.log(res[0])  // => { count: 1 } 
                assert.equal(res[0].count, 1)
            }),
            // in here we would do something to connect a view 
            // to the source and sink if we a in a browser 
            view: 'test'
        }
    }]
])
 
// `router()` returns a source stream that emits views and 
// listens for route events (in a browser). 
// In node call `router().push()` -- `router()` is an instance of 
// pull-pushable. 
// When the route changes, this stream will pipe the new route and 
// unpipe the old one 
var routeStream = router()
S(
    routeStream,
    S.drain(function onRoute (view) {
        assert.equal(view, 'test')
    })
)
routeStream.push('/foo')
routeStream.end()