diff --git a/lib/params.js b/lib/params.js index 473576d..f85d4ed 100644 --- a/lib/params.js +++ b/lib/params.js @@ -7,6 +7,8 @@ var BuiltinTypes = new Types(); var Params = { normalize: function(params, types, source) { + if( ! params ) return {}; + types = types || BuiltinTypes; for (var name in params) { diff --git a/lib/route.js b/lib/route.js index 3df8109..15c858b 100644 --- a/lib/route.js +++ b/lib/route.js @@ -5,6 +5,20 @@ var Params = require("./params"); var flatten = require("./utils").flatten; var error = require("http-error"); +function prepareParams( options, types, parent ){ + var params = Params.normalize(options.params, types ); + + if ( parent ){ + for ( var key in parent.params ){ + if ( params[key] ) continue; + params[key] = parent.params[key]; + } + } + + return params; +} + + module.exports = function Route(route, options, handler, types, parent ) { // options is optional @@ -14,7 +28,6 @@ module.exports = function Route(route, options, handler, types, parent ) { options = {}; } - parent = parent || {}; options.route = route; @@ -33,16 +46,8 @@ module.exports = function Route(route, options, handler, types, parent ) { var self = this; var keys = []; - var params = options.params || {}; - - params = Params.normalize(params, types ); - - for ( var key in parent.params ){ - if ( params[key] ) continue; - params[key] = parent.params[key]; - } - - + + var params = prepareParams( options, types, parent ); var routeRe = normalizePath(options.route, keys, params); function wrapHandler(handler) {