123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /**
- * 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;
- };
|