Skip to content

Instantly share code, notes, and snippets.

@kpdecker
Created November 2, 2012 23:53
Show Gist options
  • Save kpdecker/4005095 to your computer and use it in GitHub Desktop.
Save kpdecker/4005095 to your computer and use it in GitHub Desktop.
lumbar-route-grouper
/*jshint node: true */
var _ = require('underscore'),
Config = require('lumbar').config;
var queryStringParam = /^\?(.*)/,
namedParam = /:([\w\d]+)/g,
splatParam = /\*([\w\d]+)/g,
escapeRegExp = /[-[\]{}()+?.,\\^$|#\s]/g;
var config = Config.readConfig('./lumbar.json');
console.log('function simplifyRoute(url) {');
_.each(config.modules, function(module) {
var routes = module.routes;
_.each(routes, function(method, route) {
console.log('if (\/' + _routeToRegExp(route) + '\/.test(url)) { return \'' + route + '\'; }');
});
});
console.log('return url;\n}');
function _routeToRegExp(route) {
route = route.replace(escapeRegExp, "\\$&")
.replace(namedParam, "([^\/?]*)")
.replace(splatParam, "([^\?]*)");
route += '([\?]{1}.*)?';
return '^' + route.replace(/\//g, '\\/') + '$';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment