|
|
/** * Module dependencies. */
var utils = require('../utils');
/** * Expose `Route`. */
module.exports = Route;
/** * Initialize `Route` with the given HTTP `method`, `path`, * and an array of `callbacks` and `options`. * * Options: * * - `sensitive` enable case-sensitive routes * - `strict` enable strict matching for trailing slashes * * @param {String} method * @param {String} path * @param {Array} callbacks * @param {Object} options. * @api private */
function Route(method, path, callbacks, options) { options = options || {}; this.path = path; this.method = method; this.callbacks = callbacks; this.regexp = utils.pathRegexp(path , this.keys = [] , options.sensitive , options.strict); }
/** * Check if this route matches `path`, if so * populate `.params`. * * @param {String} path * @return {Boolean} * @api private */
Route.prototype.match = function(path){ var keys = this.keys , params = this.params = [] , m = this.regexp.exec(path);
if (!m) return false;
for (var i = 1, len = m.length; i < len; ++i) { var key = keys[i - 1];
var val = 'string' == typeof m[i] ? decodeURIComponent(m[i]) : m[i];
if (key) { params[key.name] = val; } else { params.push(val); } }
return true; };
|