(url)
| 1626 | }; |
| 1627 | |
| 1628 | function parseRoute(url) { |
| 1629 | var ret = { |
| 1630 | regexp: url |
| 1631 | }, |
| 1632 | keys = ret.keys = []; |
| 1633 | |
| 1634 | if (!url || !angular.isString(url)) return ret; |
| 1635 | |
| 1636 | url = url |
| 1637 | .replace(/([().])/g, '\\$1') |
| 1638 | .replace(/(\/)?:(\w+)([?*])?/g, function(_, slash, key, option) { |
| 1639 | var optional = option === '?' ? option : null; |
| 1640 | var star = option === '*' ? option : null; |
| 1641 | keys.push({ name: key, optional: !!optional }); |
| 1642 | slash = slash || ''; |
| 1643 | return '' |
| 1644 | + (optional ? '' : slash) |
| 1645 | + '(?:' |
| 1646 | + (optional ? slash : '') |
| 1647 | + (star && '(.+?)' || '([^/]+)') |
| 1648 | + (optional || '') |
| 1649 | + ')' |
| 1650 | + (optional || ''); |
| 1651 | }) |
| 1652 | .replace(/([/$*])/g, '\\$1'); |
| 1653 | |
| 1654 | ret.regexp = new RegExp('^' + url, 'i'); |
| 1655 | return ret; |
| 1656 | } |
| 1657 | |
| 1658 | /** |
| 1659 | * @ngdoc method |
no outgoing calls
no test coverage detected