/
githubmirror
/
angular.js
Обзор
Документация
Войти
/
githubmirror
/
angular.js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v1.7.3
src/routeToRegExp.js
46 строк
1 KB
Georgii Dolzhykov
fix(ngMock/$httpBackend): correctly ignore query params in {expect,when}Route
18 июн 2018, 19:50
18 июн 2018, 19:50
be417f2
Код
Авторство
О чём код?
'use strict'; /* global routeToRegExp: true */ /** * @param path {string} path * @param opts {Object} options * @return {?Object} * * @description * Normalizes the given path, returning a regular expression * and the original path. * * Inspired by pathRexp in visionmedia/express/lib/utils.js. */ function routeToRegExp(path, opts) { var keys = []; var pattern = path .replace(/([().])/g, '\\$1') .replace(/(\/)?:(\w+)(\*\?|[?*])?/g, function(_, slash, key, option) { var optional = option === '?' || option === '*?'; var star = option === '*' || option === '*?'; keys.push({ name: key, optional: optional }); slash = slash || ''; return ( (optional ? '(?:' + slash : slash + '(?:') + (star ? '([^?#]+?)' : '([^/?#]+)') + (optional ? '?)?' : ')') ); }) .replace(/([/$*])/g, '\\$1'); if (opts.ignoreTrailingSlashes) { pattern = pattern.replace(/\/+$/, '') + '/*'; } return { originalPath: path, keys: keys, regexp: new RegExp( '^' + pattern + '(?:[?#]|$)', opts.caseInsensitiveMatch ? 'i' : '' ) }; }