|
1 |
| -var GlobBuilder = (function() { |
2 |
| - |
3 |
| - function Glob(text) { |
4 |
| - |
5 |
| - var glob = text.split('.'); |
6 |
| - |
7 |
| - // Returns true if glob matches current $state name. |
8 |
| - this.matches = function(state) { |
9 |
| - var segments = state.name.split('.'); |
10 |
| - |
11 |
| - // match greedy starts |
12 |
| - if (glob[0] === '**') { |
13 |
| - segments = segments.slice(segments.indexOf(glob[1])); |
14 |
| - segments.unshift('**'); |
15 |
| - } |
16 |
| - // match greedy ends |
17 |
| - if (glob[glob.length - 1] === '**') { |
18 |
| - segments.splice(segments.indexOf(glob[glob.length - 2]) + 1, Number.MAX_VALUE); |
19 |
| - segments.push('**'); |
20 |
| - } |
21 |
| - if (glob.length != segments.length) return false; |
22 |
| - |
23 |
| - // match single stars |
24 |
| - for (var i = 0, l = glob.length; i < l; i++) { |
25 |
| - if (glob[i] === '*') segments[i] = '*'; |
26 |
| - } |
27 |
| - |
28 |
| - return segments.join('') === glob.join(''); |
29 |
| - }; |
30 |
| - } |
31 |
| - |
32 |
| - return { |
33 |
| - // Checks text to see if it looks like a glob. |
34 |
| - is: function(text) { |
35 |
| - return text.indexOf('*') > -1; |
36 |
| - }, |
37 |
| - |
38 |
| - // Factories a glob matcher from a string |
39 |
| - fromString: function(text) { |
40 |
| - if (!this.is(text)) return null; |
41 |
| - return new Glob(text); |
42 |
| - } |
43 |
| - }; |
44 |
| -})(); |
45 |
| - |
46 |
| - |
47 | 1 | function StateQueueManager(states, builder, $urlRouterProvider, $state) {
|
48 | 2 | var queue = [], abstractKey = 'abstract';
|
49 | 3 |
|
@@ -1024,7 +978,7 @@ function $StateProvider( $urlRouterProvider, $urlMatcherFactoryProvider) {
|
1024 | 978 | var glob = isString(stateOrName) && GlobBuilder.fromString(stateOrName);
|
1025 | 979 |
|
1026 | 980 | if (glob) {
|
1027 |
| - if (!glob.matches($state.$current)) return false; |
| 981 | + if (!glob.matches($state.$current.name)) return false; |
1028 | 982 | stateOrName = $state.$current.name;
|
1029 | 983 | }
|
1030 | 984 | var state = matcher.find(stateOrName), include = $state.$current.includes;
|
|
0 commit comments