clown
Version:
clown computing with pkgcloud
46 lines (37 loc) • 1.13 kB
JavaScript
var zip = require('zippy').zip;
var log = require('./log');
var Router = function() {
this._routes = [];
this._handlers = [];
};
Router.prototype.on = function(route, handler) {
if (typeof route === 'string') {
route = route.split(' ');
}
log.silly('router', 'Registered route %j', route);
router._routes.push(typeof route === 'string' ? route.split(' ') : route);
router._handlers.push(handler);
return router;
};
Router.prototype.route = function(route) {
var router = this,
handler = false;
route = route.length ? route : [''];
router._routes.some(function(potential, i) {
log.silly('router', 'Checking potential route %j...', potential);
var isAMatch = zip(potential, route).every(function(t) {
return t[0] == t[1];
});
if (isAMatch) {
log.silly('router', 'Potential route %j is a match!', potential);
handler = router._handlers[i];
}
else {
log.silly('router', 'Potential route %j is not a match', potential);
}
return isAMatch;
});
return handler;
};
var router = module.exports = new Router();
router.Router = Router;