angular-gem 1.3.2 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
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] || '');