annotate node_modules/express/lib/router/layer.js @ 101:52e44ee1c791 tip master

enabled all scores in autostart script
author Rob Canning <rc@kiben.net>
date Tue, 21 Apr 2015 16:20:57 +0100
parents 0c3a2942ddee
children
rev   line source
rc@73 1 /**
rc@73 2 * Module dependencies.
rc@73 3 */
rc@73 4
rc@73 5 var pathRegexp = require('path-to-regexp');
rc@73 6 var debug = require('debug')('express:router:layer');
rc@73 7
rc@73 8 /**
rc@73 9 * Expose `Layer`.
rc@73 10 */
rc@73 11
rc@73 12 module.exports = Layer;
rc@73 13
rc@73 14 function Layer(path, options, fn) {
rc@73 15 if (!(this instanceof Layer)) {
rc@73 16 return new Layer(path, options, fn);
rc@73 17 }
rc@73 18
rc@73 19 debug('new %s', path);
rc@73 20 options = options || {};
rc@73 21 this.regexp = pathRegexp(path, this.keys = [], options);
rc@73 22 this.handle = fn;
rc@73 23 }
rc@73 24
rc@73 25 /**
rc@73 26 * Check if this route matches `path`, if so
rc@73 27 * populate `.params`.
rc@73 28 *
rc@73 29 * @param {String} path
rc@73 30 * @return {Boolean}
rc@73 31 * @api private
rc@73 32 */
rc@73 33
rc@73 34 Layer.prototype.match = function(path){
rc@73 35 var keys = this.keys;
rc@73 36 var params = this.params = {};
rc@73 37 var m = this.regexp.exec(path);
rc@73 38 var n = 0;
rc@73 39 var key;
rc@73 40 var val;
rc@73 41
rc@73 42 if (!m) return false;
rc@73 43
rc@73 44 this.path = m[0];
rc@73 45
rc@73 46 for (var i = 1, len = m.length; i < len; ++i) {
rc@73 47 key = keys[i - 1];
rc@73 48
rc@73 49 try {
rc@73 50 val = 'string' == typeof m[i]
rc@73 51 ? decodeURIComponent(m[i])
rc@73 52 : m[i];
rc@73 53 } catch(e) {
rc@73 54 var err = new Error("Failed to decode param '" + m[i] + "'");
rc@73 55 err.status = 400;
rc@73 56 throw err;
rc@73 57 }
rc@73 58
rc@73 59 if (key) {
rc@73 60 params[key.name] = val;
rc@73 61 } else {
rc@73 62 params[n++] = val;
rc@73 63 }
rc@73 64 }
rc@73 65
rc@73 66 return true;
rc@73 67 };