UNPKG

lazyload-js

Version:

An ancient tiny JS and CSS loader from the days before everyone had written one, Fork from @github/rgrove/lazyload

71 lines (64 loc) 1.64 kB
/*! * 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'); }