X-Git-Url: https://git.cworth.org/git?p=obsolete%2Fnotmuch-web;a=blobdiff_plain;f=node_modules%2Fexpress%2Flib%2Frouter%2Froute.js;fp=node_modules%2Fexpress%2Flib%2Frouter%2Froute.js;h=6b747a1cbcddbb5075619f9853d54906c687def8;hp=0000000000000000000000000000000000000000;hb=410c776334299b52b7df74c53dafe761ad51cf0d;hpb=df790f70fe96623e5d2469daedaf7114bde13426 diff --git a/node_modules/express/lib/router/route.js b/node_modules/express/lib/router/route.js new file mode 100644 index 0000000..6b747a1 --- /dev/null +++ b/node_modules/express/lib/router/route.js @@ -0,0 +1,71 @@ + +/*! + * Express - router - Route + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Expose `Route`. + */ + +module.exports = Route; + +/** + * Initialize `Route` with the given HTTP `method`, `path`, + * and callback `fn` and `options`. + * + * Options: + * + * - `sensitive` enable case-sensitive routes + * + * @param {String} method + * @param {String} path + * @param {Function} fn + * @param {Object} options. + * @api private + */ + +function Route(method, path, fn, options) { + options = options || {}; + this.callback = fn; + this.path = path; + this.regexp = normalize(path, this.keys = [], options.sensitive); + this.method = method; +} + +/** + * Normalize the given path string, + * returning a regular expression. + * + * An empty array should be passed, + * which will contain the placeholder + * key names. For example "/user/:id" will + * then contain ["id"]. + * + * @param {String|RegExp} path + * @param {Array} keys + * @param {Boolean} sensitive + * @return {RegExp} + * @api private + */ + +function normalize(path, keys, sensitive) { + if (path instanceof RegExp) return path; + path = path + .concat('/?') + .replace(/\/\(/g, '(?:/') + .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g, function(_, slash, format, key, capture, optional){ + keys.push(key); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (format || '') + (capture || '([^/]+?)') + ')' + + (optional || ''); + }) + .replace(/([\/.])/g, '\\$1') + .replace(/\*/g, '(.+)'); + return new RegExp('^' + path + '$', sensitive ? '' : 'i'); +} \ No newline at end of file