(url)
| 1582 | }; |
| 1583 | |
| 1584 | function parseRoute(url) { |
| 1585 | var ret = { |
| 1586 | regexp: url |
| 1587 | }, |
| 1588 | keys = ret.keys = []; |
| 1589 | |
| 1590 | if (!url || !angular.isString(url)) return ret; |
| 1591 | |
| 1592 | url = url |
| 1593 | .replace(/([().])/g, '\\$1') |
| 1594 | .replace(/(\/)?:(\w+)([?*])?/g, function(_, slash, key, option) { |
| 1595 | var optional = option === '?' ? option : null; |
| 1596 | var star = option === '*' ? option : null; |
| 1597 | keys.push({ name: key, optional: !!optional }); |
| 1598 | slash = slash || ''; |
| 1599 | return '' |
| 1600 | + (optional ? '' : slash) |
| 1601 | + '(?:' |
| 1602 | + (optional ? slash : '') |
| 1603 | + (star && '(.+?)' || '([^/]+)') |
| 1604 | + (optional || '') |
| 1605 | + ')' |
| 1606 | + (optional || ''); |
| 1607 | }) |
| 1608 | .replace(/([/$*])/g, '\\$1'); |
| 1609 | |
| 1610 | ret.regexp = new RegExp('^' + url, 'i'); |
| 1611 | return ret; |
| 1612 | } |
| 1613 | |
| 1614 | /** |
| 1615 | * @ngdoc method |
no outgoing calls
no test coverage detected