]> git.cworth.org Git - obsolete/notmuch-web/blobdiff - node_modules/express/lib/router/route.js
Install the "express" node module via npm
[obsolete/notmuch-web] / node_modules / express / lib / router / route.js
diff --git a/node_modules/express/lib/router/route.js b/node_modules/express/lib/router/route.js
new file mode 100644 (file)
index 0000000..6b747a1
--- /dev/null
@@ -0,0 +1,71 @@
+
+/*!
+ * Express - router - Route
+ * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
+ * 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