UNPKG

sails-generate

Version:
41 lines (39 loc) 1.41 kB
/** * From Express core: (MIT License) * https://github.com/visionmedia/express/blob/cec0c06a70c874298761282984573475293c0071/lib/utils.js#L173 * * -------------------------------------------------- * * 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|Array} path * @param {Array} keys * @param {Boolean} sensitive * @param {Boolean} strict * @return {RegExp} * @api private */ module.exports = function pathToRegexp(path, keys, sensitive, strict) { if (toString.call(path) === '[object RegExp]') {return path;} if (Array.isArray(path)) {path = '(' + path.join('|') + ')';} path = path .concat(strict ? '' : '/?') .replace(/\/\(/g, '(?:/') .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star) { keys.push({ name: key, optional: !! optional }); slash = slash || ''; return '' + (optional ? '' : slash) + '(?:' + (optional ? slash : '') + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + (optional || '') + (star ? '(/*)?' : ''); }) .replace(/([\/.])/g, '\\$1') .replace(/\*/g, '(.*)'); return new RegExp('^' + path + '$', sensitive ? '' : 'i'); };