angular-gem 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +8 -8
  2. data/lib/angular-gem/version.rb +1 -1
  3. data/vendor/assets/javascripts/1.3.4/angular-animate.js +2136 -0
  4. data/vendor/assets/javascripts/1.3.4/angular-aria.js +321 -0
  5. data/vendor/assets/javascripts/1.3.4/angular-cookies.js +206 -0
  6. data/vendor/assets/javascripts/1.3.4/angular-loader.js +405 -0
  7. data/vendor/assets/javascripts/1.3.4/angular-messages.js +400 -0
  8. data/vendor/assets/javascripts/1.3.4/angular-mocks.js +2380 -0
  9. data/vendor/assets/javascripts/1.3.4/angular-resource.js +667 -0
  10. data/vendor/assets/javascripts/1.3.4/angular-route.js +996 -0
  11. data/vendor/assets/javascripts/1.3.4/angular-sanitize.js +678 -0
  12. data/vendor/assets/javascripts/1.3.4/angular-scenario.js +37269 -0
  13. data/vendor/assets/javascripts/1.3.4/angular-touch.js +622 -0
  14. data/vendor/assets/javascripts/1.3.4/angular.js +25915 -0
  15. data/vendor/assets/javascripts/angular-animate.js +15 -15
  16. data/vendor/assets/javascripts/angular-aria.js +83 -23
  17. data/vendor/assets/javascripts/angular-cookies.js +1 -1
  18. data/vendor/assets/javascripts/angular-loader.js +6 -23
  19. data/vendor/assets/javascripts/angular-messages.js +1 -1
  20. data/vendor/assets/javascripts/angular-mocks.js +21 -17
  21. data/vendor/assets/javascripts/angular-resource.js +1 -1
  22. data/vendor/assets/javascripts/angular-route.js +21 -7
  23. data/vendor/assets/javascripts/angular-sanitize.js +26 -26
  24. data/vendor/assets/javascripts/angular-scenario.js +646 -453
  25. data/vendor/assets/javascripts/angular-touch.js +3 -3
  26. data/vendor/assets/javascripts/angular.js +641 -448
  27. metadata +14 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -245,7 +245,7 @@
245
245
  * You then configure `$animate` to enforce this prefix:
246
246
  *
247
247
  * ```js
248
- * $animateProvider.classNamePrefix(/animate-/);
248
+ * $animateProvider.classNameFilter(/animate-/);
249
249
  * ```
250
250
  * </div>
251
251
  *
@@ -976,9 +976,9 @@ angular.module('ngAnimate', ['ng'])
976
976
  * | 3. $animate waits for the next digest to start the animation | class="my-animation ng-animate" |
977
977
  * | 4. the .ng-leave class is added to the element | class="my-animation ng-animate ng-leave" |
978
978
  * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-leave" |
979
- * | 6. $animate blocks all CSS transitions on the element to ensure the .ng-leave class styling is applied right away | class="my-animation ng-animate ng-leave |
979
+ * | 6. $animate blocks all CSS transitions on the element to ensure the .ng-leave class styling is applied right away | class="my-animation ng-animate ng-leave" |
980
980
  * | 7. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate ng-leave" |
981
- * | 8. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-leave |
981
+ * | 8. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-leave" |
982
982
  * | 9. the .ng-leave-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-leave ng-leave-active" |
983
983
  * | 10. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate ng-leave ng-leave-active" |
984
984
  * | 11. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
@@ -1022,9 +1022,9 @@ angular.module('ngAnimate', ['ng'])
1022
1022
  * | 4. $animate runs the JavaScript-defined animations detected on the element | class="my-animation ng-animate" |
1023
1023
  * | 5. the .ng-move class is added to the element | class="my-animation ng-animate ng-move" |
1024
1024
  * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-move" |
1025
- * | 7. $animate blocks all CSS transitions on the element to ensure the .ng-move class styling is applied right away | class="my-animation ng-animate ng-move |
1025
+ * | 7. $animate blocks all CSS transitions on the element to ensure the .ng-move class styling is applied right away | class="my-animation ng-animate ng-move" |
1026
1026
  * | 8. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate ng-move" |
1027
- * | 9. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-move |
1027
+ * | 9. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-move" |
1028
1028
  * | 10. the .ng-move-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-move ng-move-active" |
1029
1029
  * | 11. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate ng-move ng-move-active" |
1030
1030
  * | 12. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
@@ -1069,8 +1069,8 @@ angular.module('ngAnimate', ['ng'])
1069
1069
  * | 3. the .super-add class is added to the element | class="my-animation ng-animate super-add" |
1070
1070
  * | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate super-add" |
1071
1071
  * | 5. the .super and .super-add-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate super super-add super-add-active" |
1072
- * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-add" |
1073
- * | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation super super-add super-add-active" |
1072
+ * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super super-add super-add-active" |
1073
+ * | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate super super-add super-add-active" |
1074
1074
  * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation super" |
1075
1075
  * | 9. The super class is kept on the element | class="my-animation super" |
1076
1076
  * | 10. The returned promise is resolved. | class="my-animation super" |
@@ -1103,7 +1103,7 @@ angular.module('ngAnimate', ['ng'])
1103
1103
  * | 3. the .super-remove class is added to the element | class="my-animation super ng-animate super-remove" |
1104
1104
  * | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation super ng-animate super-remove" |
1105
1105
  * | 5. the .super-remove-active classes are added and .super is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate super-remove super-remove-active" |
1106
- * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation super ng-animate super-remove" |
1106
+ * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-remove super-remove-active" |
1107
1107
  * | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate super-remove super-remove-active" |
1108
1108
  * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
1109
1109
  * | 9. The returned promise is resolved. | class="my-animation" |
@@ -1128,11 +1128,11 @@ angular.module('ngAnimate', ['ng'])
1128
1128
  *
1129
1129
  * | Animation Step | What the element class attribute looks like |
1130
1130
  * |--------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
1131
- * | 1. $animate.removeClass(element, on’, off) is called | class="my-animation super off|
1132
- * | 2. $animate runs the JavaScript-defined animations detected on the element | class="my-animation super ng-animate off|
1133
- * | 3. the .on-add and .off-remove classes are added to the element | class="my-animation ng-animate on-add off-remove off |
1134
- * | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate on-add off-remove off |
1135
- * | 5. the .on, .on-add-active and .off-remove-active classes are added and .off is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active |
1131
+ * | 1. $animate.setClass(element, 'on', 'off') is called | class="my-animation off" |
1132
+ * | 2. $animate runs the JavaScript-defined animations detected on the element | class="my-animation ng-animate off" |
1133
+ * | 3. the .on-add and .off-remove classes are added to the element | class="my-animation ng-animate on-add off-remove off" |
1134
+ * | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate on-add off-remove off" |
1135
+ * | 5. the .on, .on-add-active and .off-remove-active classes are added and .off is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
1136
1136
  * | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
1137
1137
  * | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
1138
1138
  * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation on" |
@@ -1889,7 +1889,7 @@ angular.module('ngAnimate', ['ng'])
1889
1889
  //the jqLite object, so we're safe to use a single variable to house
1890
1890
  //the styles since there is always only one element being animated
1891
1891
  var oldStyle = node.getAttribute('style') || '';
1892
- if (oldStyle.charAt(oldStyle.length-1) !== ';') {
1892
+ if (oldStyle.charAt(oldStyle.length - 1) !== ';') {
1893
1893
  oldStyle += ';';
1894
1894
  }
1895
1895
  node.setAttribute('style', oldStyle + ' ' + style);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -10,33 +10,49 @@
10
10
  * @name ngAria
11
11
  * @description
12
12
  *
13
- * The `ngAria` module provides support for adding <abbr title="Accessible Rich Internet Applications">ARIA</abbr>
14
- * attributes that convey state or semantic information about the application in order to allow assistive technologies
15
- * to convey appropriate information to persons with disabilities.
13
+ * The `ngAria` module provides support for common
14
+ * [<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](http://www.w3.org/TR/wai-aria/)
15
+ * attributes that convey state or semantic information about the application for users
16
+ * of assistive technologies, such as screen readers.
16
17
  *
17
18
  * <div doc-module-components="ngAria"></div>
18
19
  *
19
- * # Usage
20
- * To enable the addition of the ARIA tags, just require the module into your application and the tags will
21
- * hook into your ng-show/ng-hide, input, textarea, button, select and ng-required directives and adds the
22
- * appropriate ARIA attributes.
20
+ * ## Usage
23
21
  *
24
- * Currently, the following ARIA attributes are implemented:
22
+ * For ngAria to do its magic, simply include the module as a dependency. The directives supported
23
+ * by ngAria are:
24
+ * `ngModel`, `ngDisabled`, `ngShow`, `ngHide`, `ngClick`, `ngDblClick`, and `ngMessages`.
25
25
  *
26
- * + aria-hidden
27
- * + aria-checked
28
- * + aria-disabled
29
- * + aria-required
30
- * + aria-invalid
31
- * + aria-multiline
32
- * + aria-valuenow
33
- * + aria-valuemin
34
- * + aria-valuemax
35
- * + tabindex
26
+ * Below is a more detailed breakdown of the attributes handled by ngAria:
36
27
  *
37
- * You can disable individual ARIA attributes by using the {@link ngAria.$ariaProvider#config config} method.
28
+ * | Directive | Supported Attributes |
29
+ * |---------------------------------------------|----------------------------------------------------------------------------------------|
30
+ * | {@link ng.directive:ngModel ngModel} | aria-checked, aria-valuemin, aria-valuemax, aria-valuenow, aria-invalid, aria-required |
31
+ * | {@link ng.directive:ngDisabled ngDisabled} | aria-disabled |
32
+ * | {@link ng.directive:ngShow ngShow} | aria-hidden |
33
+ * | {@link ng.directive:ngHide ngHide} | aria-hidden |
34
+ * | {@link ng.directive:ngClick ngClick} | tabindex |
35
+ * | {@link ng.directive:ngDblclick ngDblclick} | tabindex |
36
+ * | {@link module:ngMessages ngMessages} | aria-live |
37
+ *
38
+ * Find out more information about each directive by reading the
39
+ * {@link guide/accessibility ngAria Developer Guide}.
40
+ *
41
+ * ##Example
42
+ * Using ngDisabled with ngAria:
43
+ * ```html
44
+ * <md-checkbox ng-disabled="disabled">
45
+ * ```
46
+ * Becomes:
47
+ * ```html
48
+ * <md-checkbox ng-disabled="disabled" aria-disabled="true">
49
+ * ```
50
+ *
51
+ * ##Disabling Attributes
52
+ * It's possible to disable individual attributes added by ngAria with the
53
+ * {@link ngAria.$ariaProvider#config config} method. For more details, see the
54
+ * {@link guide/accessibility Developer Guide}.
38
55
  */
39
-
40
56
  /* global -ngAriaModule */
41
57
  var ngAriaModule = angular.module('ngAria', ['ng']).
42
58
  provider('$aria', $AriaProvider);
@@ -47,10 +63,20 @@ var ngAriaModule = angular.module('ngAria', ['ng']).
47
63
  *
48
64
  * @description
49
65
  *
50
- * Used for configuring ARIA attributes.
66
+ * Used for configuring the ARIA attributes injected and managed by ngAria.
67
+ *
68
+ * ```js
69
+ * angular.module('myApp', ['ngAria'], function config($ariaProvider) {
70
+ * $ariaProvider.config({
71
+ * ariaValue: true,
72
+ * tabindex: false
73
+ * });
74
+ * });
75
+ *```
51
76
  *
52
77
  * ## Dependencies
53
78
  * Requires the {@link ngAria} module to be installed.
79
+ *
54
80
  */
55
81
  function $AriaProvider() {
56
82
  var config = {
@@ -113,7 +139,41 @@ function $AriaProvider() {
113
139
  *
114
140
  * @description
115
141
  *
116
- * Contains helper methods for applying ARIA attributes to HTML
142
+ * The $aria service contains helper methods for applying common
143
+ * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
144
+ *
145
+ * ngAria injects common accessibility attributes that tell assistive technologies when HTML
146
+ * elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
147
+ * let's review a code snippet from ngAria itself:
148
+ *
149
+ *```js
150
+ * ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
151
+ * return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
152
+ * }])
153
+ *```
154
+ * Shown above, the ngAria module creates a directive with the same signature as the
155
+ * traditional `ng-disabled` directive. But this ngAria version is dedicated to
156
+ * solely managing accessibility attributes. The internal `$aria` service is used to watch the
157
+ * boolean attribute `ngDisabled`. If it has not been explicitly set by the developer,
158
+ * `aria-disabled` is injected as an attribute with its value synchronized to the value in
159
+ * `ngDisabled`.
160
+ *
161
+ * Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
162
+ * anything to enable this feature. The `aria-disabled` attribute is automatically managed
163
+ * simply as a silent side-effect of using `ng-disabled` with the ngAria module.
164
+ *
165
+ * The full list of directives that interface with ngAria:
166
+ * * **ngModel**
167
+ * * **ngShow**
168
+ * * **ngHide**
169
+ * * **ngClick**
170
+ * * **ngDblclick**
171
+ * * **ngMessages**
172
+ * * **ngDisabled**
173
+ *
174
+ * Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
175
+ * directive.
176
+ *
117
177
  *
118
178
  * ## Dependencies
119
179
  * Requires the {@link ngAria} module to be installed.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -43,40 +43,23 @@ function minErr(module, ErrorConstructor) {
43
43
  prefix = '[' + (module ? module + ':' : '') + code + '] ',
44
44
  template = arguments[1],
45
45
  templateArgs = arguments,
46
- stringify = function(obj) {
47
- if (typeof obj === 'function') {
48
- return obj.toString().replace(/ \{[\s\S]*$/, '');
49
- } else if (typeof obj === 'undefined') {
50
- return 'undefined';
51
- } else if (typeof obj !== 'string') {
52
- return JSON.stringify(obj);
53
- }
54
- return obj;
55
- },
46
+
56
47
  message, i;
57
48
 
58
49
  message = prefix + template.replace(/\{\d+\}/g, function(match) {
59
50
  var index = +match.slice(1, -1), arg;
60
51
 
61
52
  if (index + 2 < templateArgs.length) {
62
- arg = templateArgs[index + 2];
63
- if (typeof arg === 'function') {
64
- return arg.toString().replace(/ ?\{[\s\S]*$/, '');
65
- } else if (typeof arg === 'undefined') {
66
- return 'undefined';
67
- } else if (typeof arg !== 'string') {
68
- return toJson(arg);
69
- }
70
- return arg;
53
+ return toDebugString(templateArgs[index + 2]);
71
54
  }
72
55
  return match;
73
56
  });
74
57
 
75
- message = message + '\nhttp://errors.angularjs.org/1.3.2/' +
58
+ message = message + '\nhttp://errors.angularjs.org/1.3.4/' +
76
59
  (module ? module + '/' : '') + code;
77
60
  for (i = 2; i < arguments.length; i++) {
78
- message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
79
- encodeURIComponent(stringify(arguments[i]));
61
+ message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
62
+ encodeURIComponent(toDebugString(arguments[i]));
80
63
  }
81
64
  return new ErrorConstructor(message);
82
65
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -117,7 +117,7 @@ angular.mock.$Browser = function() {
117
117
  self.defer.now += delay;
118
118
  } else {
119
119
  if (self.deferredFns.length) {
120
- self.defer.now = self.deferredFns[self.deferredFns.length-1].time;
120
+ self.defer.now = self.deferredFns[self.deferredFns.length - 1].time;
121
121
  } else {
122
122
  throw new Error('No deferred tasks to be flushed');
123
123
  }
@@ -428,7 +428,7 @@ angular.mock.$LogProvider = function() {
428
428
  });
429
429
  });
430
430
  if (errors.length) {
431
- errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or "+
431
+ errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " +
432
432
  "an expected log message was not checked and removed:");
433
433
  errors.push('');
434
434
  throw new Error(errors.join('\n---------\n'));
@@ -461,17 +461,17 @@ angular.mock.$LogProvider = function() {
461
461
  * @returns {promise} A promise which will be notified on each iteration.
462
462
  */
463
463
  angular.mock.$IntervalProvider = function() {
464
- this.$get = ['$rootScope', '$q',
465
- function($rootScope, $q) {
464
+ this.$get = ['$browser', '$rootScope', '$q', '$$q',
465
+ function($browser, $rootScope, $q, $$q) {
466
466
  var repeatFns = [],
467
467
  nextRepeatId = 0,
468
468
  now = 0;
469
469
 
470
470
  var $interval = function(fn, delay, count, invokeApply) {
471
- var deferred = $q.defer(),
472
- promise = deferred.promise,
473
- iteration = 0,
474
- skipApply = (angular.isDefined(invokeApply) && !invokeApply);
471
+ var iteration = 0,
472
+ skipApply = (angular.isDefined(invokeApply) && !invokeApply),
473
+ deferred = (skipApply ? $$q : $q).defer(),
474
+ promise = deferred.promise;
475
475
 
476
476
  count = (angular.isDefined(count)) ? count : 0;
477
477
  promise.then(null, null, fn);
@@ -494,7 +494,11 @@ angular.mock.$IntervalProvider = function() {
494
494
  }
495
495
  }
496
496
 
497
- if (!skipApply) $rootScope.$apply();
497
+ if (skipApply) {
498
+ $browser.defer.flush();
499
+ } else {
500
+ $rootScope.$apply();
501
+ }
498
502
  }
499
503
 
500
504
  repeatFns.push({
@@ -581,10 +585,10 @@ function jsonStringToDate(string) {
581
585
  tzMin = int(match[9] + match[11]);
582
586
  }
583
587
  date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3]));
584
- date.setUTCHours(int(match[4]||0) - tzHour,
585
- int(match[5]||0) - tzMin,
586
- int(match[6]||0),
587
- int(match[7]||0));
588
+ date.setUTCHours(int(match[4] || 0) - tzHour,
589
+ int(match[5] || 0) - tzMin,
590
+ int(match[6] || 0),
591
+ int(match[7] || 0));
588
592
  return date;
589
593
  }
590
594
  return string;
@@ -663,7 +667,7 @@ angular.mock.TzDate = function(offset, timestamp) {
663
667
  }
664
668
 
665
669
  var localOffset = new Date(timestamp).getTimezoneOffset();
666
- self.offsetDiff = localOffset*60*1000 - offset*1000*60*60;
670
+ self.offsetDiff = localOffset * 60 * 1000 - offset * 1000 * 60 * 60;
667
671
  self.date = new Date(timestamp + self.offsetDiff);
668
672
 
669
673
  self.getTime = function() {
@@ -815,7 +819,7 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
815
819
  animate.queue.push({
816
820
  event: method,
817
821
  element: arguments[0],
818
- options: arguments[arguments.length-1],
822
+ options: arguments[arguments.length - 1],
819
823
  args: arguments
820
824
  });
821
825
  return $delegate[method].apply($delegate, arguments);
@@ -1770,7 +1774,7 @@ angular.mock.$RAFDecorator = ['$delegate', function($delegate) {
1770
1774
  }
1771
1775
 
1772
1776
  var length = queue.length;
1773
- for (var i=0;i<length;i++) {
1777
+ for (var i = 0; i < length; i++) {
1774
1778
  queue[i]();
1775
1779
  }
1776
1780
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.2
2
+ * @license AngularJS v1.3.4
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -41,7 +41,7 @@ var ngRouteModule = angular.module('ngRoute', ['ng']).
41
41
  */
42
42
  function $RouteProvider() {
43
43
  function inherit(parent, extra) {
44
- return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra);
44
+ return angular.extend(Object.create(parent), extra);
45
45
  }
46
46
 
47
47
  var routes = {};
@@ -151,6 +151,9 @@ function $RouteProvider() {
151
151
  if (angular.isUndefined(routeCopy.reloadOnSearch)) {
152
152
  routeCopy.reloadOnSearch = true;
153
153
  }
154
+ if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {
155
+ routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;
156
+ }
154
157
  routes[path] = angular.extend(
155
158
  routeCopy,
156
159
  path && pathRegExp(path, routeCopy)
@@ -158,9 +161,9 @@ function $RouteProvider() {
158
161
 
159
162
  // create redirection for trailing slashes
160
163
  if (path) {
161
- var redirectPath = (path[path.length-1] == '/')
162
- ? path.substr(0, path.length-1)
163
- : path +'/';
164
+ var redirectPath = (path[path.length - 1] == '/')
165
+ ? path.substr(0, path.length - 1)
166
+ : path + '/';
164
167
 
165
168
  routes[redirectPath] = angular.extend(
166
169
  {redirectTo: path},
@@ -171,6 +174,17 @@ function $RouteProvider() {
171
174
  return this;
172
175
  };
173
176
 
177
+ /**
178
+ * @ngdoc property
179
+ * @name $routeProvider#caseInsensitiveMatch
180
+ * @description
181
+ *
182
+ * A boolean property indicating if routes defined
183
+ * using this provider should be matched using a case sensitive
184
+ * algorithm. Defaults to `false`.
185
+ */
186
+ this.caseInsensitiveMatch = false;
187
+
174
188
  /**
175
189
  * @param path {string} path
176
190
  * @param opts {Object} options
@@ -639,11 +653,11 @@ function $RouteProvider() {
639
653
  */
640
654
  function interpolate(string, params) {
641
655
  var result = [];
642
- angular.forEach((string||'').split(':'), function(segment, i) {
656
+ angular.forEach((string || '').split(':'), function(segment, i) {
643
657
  if (i === 0) {
644
658
  result.push(segment);
645
659
  } else {
646
- var segmentMatch = segment.match(/(\w+)(.*)/);
660
+ var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/);
647
661
  var key = segmentMatch[1];
648
662
  result.push(params[key]);
649
663
  result.push(segmentMatch[2] || '');