Compare commits

...

113 Commits

Author SHA1 Message Date
Igor Minar dc6f149973 chore(release): cut the 1.0.7 monochromatic-rainbow release 2013-05-22 01:05:53 -07:00
Igor Minar 420f6bfccb docs(CHANGELOG.md): release notes for 1.1.5 and 1.0.7 releases 2013-05-22 01:03:55 -07:00
Anatoly Shikolay ae33e11694 style(*): fix up semicolon and var usage
Conflicts:

	src/ng/animation.js
	src/ng/animator.js
	src/ng/http.js
2013-05-21 14:41:22 -07:00
Lucas Galfasó 4d8b0282b4 test(parse): Test for the parsing not invoking twice to get self
New tests to not call twice a function to get self
2013-05-21 14:41:22 -07:00
Igor Minar 00845fca88 docs(changelog): fix the 1.0.6 header 2013-05-21 14:41:22 -07:00
Joakim Blomskøld 84fe86c7fd docs(Angular.js): add missing @returns to extend() 2013-05-21 21:39:53 +01:00
Matias Niemelä 5e1ed9d5d2 docs(tutorial): fix the float issue with the improve docs button 2013-05-21 14:09:42 +01:00
Ben Ripkens 2ba668732a docs(ngScenario): provide examples for element(...).query(fn)
element(selector, label).query(fn) is a very useful function, yet barely
explained. The developer guide should show how this function can be used
to conditionally execute behavior and assertions.
2013-05-21 13:36:35 +01:00
Jens Rantil 2cb73b71d1 doc($compile): clarify compile function return value
If a compile function (within a directive) returns a function, it is a
post-link function.

Closes: #2713
2013-05-21 13:18:59 +01:00
Jens Rantil 16a2ce2b13 docs(guide/type): remove empty "Type" page in guide
Closes #1316
2013-05-21 13:13:28 +01:00
Igor Minar 18e87a7544 chore(version.js): remove unused/obsolete script 2013-05-21 03:43:10 -07:00
Igor Minar f81431dd72 chore(package.json): kill version.yaml in favor of package.json
all versioning info is now in package.json and that's where the build scripts read it from
2013-05-20 16:48:21 -07:00
Dan Kohn 04bdb9f813 chore(package.json): use devDependencies instead of dependencies 2013-05-20 16:46:11 -07:00
Daniel Tse 1cfe281a76 docs(filters): fix minor typographical error
Fix a typographical error "it's" -> "its" in the dateFilter
documentation
2013-05-20 15:37:14 +01:00
David Holmes 6165bd7d1e doc(guide/compiler): fix grammatical error
"The compilation process happens into two phases." should be "The compilation process happens in two phases."
2013-05-20 10:24:29 +01:00
Misha Moroshko 0135564ad9 doc(filter): remove invalid character 2013-05-20 10:21:28 +01:00
Pete Bacon Darwin 6847cbeff8 docs(guide::testing): fix link to angular-seed 2013-05-18 22:17:28 +01:00
Chris M 84daf33c03 docs(ngMock::$log): improve the $log.*.logs descriptions
Because ngDoc generation only takes the last segment of a property name,
each $log.[error|warn|log...].logs property has the same name and is
confusing in the docs.
This commit helps this by adding a link to the $log.* method and also an
appropriate usage example.
2013-05-18 22:14:20 +01:00
Joakim Blomskøld 86cbdb893a doc(ngModel): $setViewValue calls all parsers, not formatters 2013-05-18 21:18:15 +01:00
Ben Ripkens 11ee680d38 docs(guide): add API documentation for ngScenario matchers
Matchers are briefly mentioned in the e2e test guide, but there is no
documentation for the available matchers.
2013-05-18 21:01:57 +01:00
Andrew Vida 4c5b382b69 docs(tutorial): update test config file name 2013-05-18 20:29:34 +01:00
Jeremy Wilken 39f4a776d6 doc(guide:$location): fix example for two way databinding.
When you are watching the $location.path(), it has to be wrapped in a
function since it is not attached to the scope and if you pass a string
to $scope.$watch it is evaluated against the $scope.
2013-05-17 19:17:28 +01:00
Matt Haggard a250116694 doc(guide): add links to angular-seed examples
The examples in the angular-seed project are better than nothing,
which is what we currently have here!
2013-05-16 22:03:23 +01:00
Dean Sofer 9a73d71f47 docs(ngCsp): add more informative details
Transferred from https://github.com/angular/angular.js/wiki/Using-AngularJS-in-a-Chrome-Extension-environment
2013-05-16 21:28:05 +01:00
jamesBrennan 73aaca05f8 docs(guide:understanding_controllers): remove outdated info
Remove the outdated info in this document related to this API change
https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js#L166
2013-05-15 21:33:30 +01:00
Siddique Hameed a993112098 docs($timeout): minor cleanup
Added a comma separator in the statement
Removed the word the from the statement
Used whose instead of who's in the following statement
Italicized false in the statement
Used a comma separator in the statement
2013-05-14 21:22:04 +01:00
Chirayu Krishnappa 9145d5ec3e fix($browser): should use first value for a cookie.
With this change, $browser.cookies()["foo"] will behave like
docCookies.getItem("foo") where docCookies is defined at
https://developer.mozilla.org/en-US/docs/DOM/document.cookie

This fixes the issue where, if there's a value for the XSRF-TOKEN cookie
value with the path /, then that value is used for all applications in
the domain even if they set path specific values for XSRF-TOKEN.

Closes #2635
2013-05-11 09:28:14 -07:00
willtj efc863844c docs($scope): clarify documentation for $broadcast 2013-05-10 21:24:38 +01:00
veselinn cc260e7864 docs(guide): fix a typo 2013-05-10 20:52:44 +01:00
Lucas Galfasó 42ce8f7f55 fix(ngPluralize): handle the empty string as a valid override
Fix the check for overrides so it is able to handle the empty string

Closes #2575
2013-05-10 20:04:59 +01:00
Alfred Nutile 661390aef3 docs(guide): fix typo on model name 2013-05-10 14:58:15 +01:00
Pete Bacon Darwin ed4a70e765 docs(Angular.js): move forEach docs to correct position 2013-05-09 22:15:22 +01:00
Pete Bacon Darwin 1866968310 docs(tutorial): add comment about injection annotation
Closes: #1163
2013-05-09 13:58:02 +01:00
Igor Minar 5fbf98ec23 chore(docs): use done() in gen-docs.js 2013-05-09 05:23:39 -07:00
Igor Minar 5d2bb2c1b9 test(sortedHtml): ignore bogus rowspan=1 and colspan=1 in IE 2013-05-09 05:23:39 -07:00
Igor Minar 9039ddbb56 test(sortedHtml): fix comment support in sortedHtml helper 2013-05-09 05:23:39 -07:00
Igor Minar 8f8510fc22 style($compile): clarify argument name 2013-05-09 05:23:39 -07:00
Pete Bacon Darwin 1e99ea6a51 docs($window): fix example 2013-05-09 13:02:30 +01:00
R. Merkert 016e1e675e fix(angular): do not copy $$hashKey in copy/extend functions.
Copying the $$hashKey as part of copy/extend operations makes little
sense since hashkey is used primarily as an object id, especially in
the context of the ngRepeat directive. This change maintains the
existing $$hashKey of an object that is being copied into (likewise for
extend).
It is not uncommon to take an item in a collection, copy it,
and then append it to the collection. By copying the $$hashKey, this
leads to duplicate object errors with the current ngRepeat.

Closes #1875
2013-05-08 13:04:08 +01:00
Illniyar 1240641f76 feat($cookieStore): $cookieStore.get now parses blank string as blank string
closes #1918
2013-05-08 10:07:24 +01:00
Chad Smith f1a34f0908 fix(select): ensure empty option is not lost in IE9
Fix a check inside render for select elements with ngOptions, which
compares the selected property of an element with it's desired state.
Ensure the placeholder, if available, is explicitly selected if the model
value can not be found in the option list.
Without these fixes it's up to the browser implementation to decide which
option to choose. In most browsers, this has the effect of displaying the
first item in the list. In IE9 however, this causes the select to display
nothing.

Closes #2150, #1826
2013-05-07 21:29:44 +01:00
Pete Bacon Darwin 01bda54e05 fix(dateFilter): correctly format ISODates on Android<=2.1
In older Android browsers, `undefined` does not act like `0` in some
arithmetic operations. This leads to dates being formatted with `NaN`
strings in the dateFilter because the implementation of the `dateGetter`
function allows offset to be an optional parameter.
The fix is to convert offset to 0 if it is undefined.

Closes #2277, #2275
2013-05-07 11:44:46 +01:00
Hamish Macpherson bc04afe183 doc(input): fix small typo in code example 2013-05-07 09:48:59 +01:00
quazzie ac086ae616 fix($location): back-button should fire $locationChangeStart
Before $locationChangeStart event is not broadcast when pressing the back-button on the browser.

Closes #2109
2013-05-01 14:51:05 +01:00
Siddique Hameed f75a2b093f docs(injector): fix typo
Closes: #2551
2013-05-01 13:15:17 +01:00
Chris Nicola 4dba7b0203 docs(guide:directive): add directive controller usage
Specifically adding a directive controller to the example definition
and how to use declare injectables to avoid minification errors.
2013-04-30 10:53:17 +01:00
Robin Böhm d3cd3c0a9b style($injector): add a comment to explain the distinction with isArray 2013-04-30 10:40:19 +01:00
Eugene Wolfson e351874a0a docs($provide): fix parentheses in example 2013-04-30 10:17:01 +01:00
Lucas Galfasó dcdf4fc78b fix(parse): fix context access and double function call
Fix a context duplication and invocation to a previous context when
doing an access modifier function on the result of a function
Currently, when doing `foo().bar()`, `foo` is called twice, the first
time to get the context and the second one for `bar` to get the
underlying object. Then the call to `bar` is called using the second
instance as self
This is equivalent to doing:
```
var instance1 = foo();
var instance2 = foo();
instance2.bar.apply(instance1);
```

Closes #2496
2013-04-29 23:02:51 +01:00
Matias Niemelä cf38d8c55b feat(ngdocs): support for HTML table generation from docs code 2013-04-29 17:47:53 -04:00
gockxml b0233a33a1 fix(jqLite): correct implementation of mouseenter/mouseleave event
Implement mouseenter/mouseleave event referring to
http://www.quirksmode.org/js/events_mouse.html#link8 and jQuery source
code(not dependent on jQuery).
The old implementation is wrong. When moving mouse from a parent element
into a child element, it would trigger mouseleave event, which should not.
And the old test about mouseenter/mouseleave is wrong too. It just
triggers mouseover and mouseout events, cannot describe the process of mouse
moving from one element to another element, which is important for
mouseenter/mouseleave.

Closes #2131, #1811
2013-04-29 18:28:29 +01:00
Oren Avissar c3235db9ee test(browser/compile): fix calls to Jasmine fail()
The fail() function in Jasmine expects an Error object parameter.
Also, there is no global alias for fail() so it must be accessed using
`this.fail(new Error())`.
2013-04-29 16:57:33 +01:00
Robin Böhm 738113bac8 refact(ngClass): improve performance through bitwise operations
Change modulo % 2 operations to bitwise & 1
Read about this in Nicholas C. Zakas book "High Performance JavaScript"(ISBN: 978-0-596-80279-0)
Use the Fast Parts --> Bitwise Operators --> Page 156++
Proven at http://jsperf.com/modulo-vs-bitwise/11
2013-04-29 10:19:32 +01:00
Jamie R. Rytlewski 6613ee40e6 docs($q): fix typo 2013-04-28 18:45:01 +01:00
Anton ce6035d953 docs(contribute): add Java as dependency
Current build process leverages closure jar for javascript minification.
If Java is not installed and included in the PATH the build will fail.
2013-04-28 18:37:45 +01:00
Paulo Ávila 2bc4793ee8 docs(filter): improve syntax for usage in templates 2013-04-24 21:57:48 +01:00
Jeff Pickelman 9c6e34bfc1 docs(di): fix typos and grammar 2013-04-24 20:52:59 +02:00
Timothy Ahong 4e65ff31a8 docs(guide:unit-testing): add an example unit test for directives 2013-04-23 13:23:16 +01:00
Pete Bacon Darwin 15461c7883 docs(compiler): don't drag selected content
In the example with draggable, the mouseDown handler needs to start with an event.preventDefault(). Otherwise the following bug occurs:
1) Select the text of the draggable span by clicking outside the span and dragging the mouse to the left or right through the span. Release the mouse button.
2) Now click on the span's inner text, and start to Drag it. The browser's default functionality that drags highlighted text so that it can be pasted into something else (say a document in a text editor) is invoked.
3) Release the mouse button. Now suddenly, you'll be dragging the span. But you won't be able to place it down on the page. It'll just follow the mouse around until the page is refreshed.

Closes: #2465
2013-04-22 13:38:49 +01:00
Keir Mierle de5352cfcf docs(compiler): fix variable scope in drag sample
Note that without this fix, if you add a second draggable element, the
two instances clobber each other since there is only one set of
startx/starty/x/y variables.
Here is an example: http://plnkr.co/edit/aGrLXcIo2SuaePuAdfmQ?p=preview.
On the surface it looks like it would be fine because you only have one
mouse but in practice the start position jumps when you start dragging.
Here it is fixed: http://plnkr.co/edit/VuvPasuumtCeiVRisYKQ?p=preview
2013-04-22 12:52:43 +01:00
Keir Mierle ae26ed994e docs(forms): fix formatting 2013-04-22 12:38:58 +01:00
Ron Yang 94745f6274 docs(forms): fix typo 2013-04-22 12:35:05 +01:00
Paulo Ávila dbfa0d88bb docs(guide): minor grammatical change 2013-04-21 20:06:29 +02:00
Pete Bacon Darwin cf3b5cb2fc chore(ngDoc): fix a typo with IE warning 2013-04-19 22:08:07 +01:00
Merrick Christensen 192a225854 docs(concepts): fix spelling error 2013-04-19 14:44:44 +01:00
Jared Beck 3508f76719 docs(overview): correct the input validation example
The documentation says that the input should be red if you enter
invalid values or leave it blank. Because the type="integer" is not
supported this does not happen in practice.  This fix changes the
input type to number and adds an ng-pattern to ensure that the number
is an integer.
2013-04-19 14:40:39 +01:00
leesei a7d081fac0 docs(input): fix typo on max attribute 2013-04-19 13:43:37 +01:00
Shyam Seshadri ee774f6e5b docs(select): fix attribute documentation
Select documentation was still referring to binding to name, when it should be ng-model instead. Fixed it.
2013-04-19 13:37:04 +01:00
Michal Reichert 80f34598f8 docs(ngBind): fix typo 2013-04-19 11:58:52 +01:00
Pete Bacon Darwin 7e168c8ad2 fix(i18n): escape all chars above \u007f in locale files
Modify the script that writes the locales so all characters above \u007f are escaped
Includes the updated locale files after running the closureI18nExtractor.

Closes #2417
2013-04-17 22:16:57 +01:00
Mark Dalgleish 3ebc2c2442 fix(ngModel): use paste/cut events in IE to support context menu
In IE the model is not updated when the input value is modified using the context
menu, e.g. pasting from the clipboard, or cutting all or part of the current value.
To capture these changes, we bind to the proprietary 'paste' and 'cut' events.

Closes #1462
2013-04-17 21:50:07 +01:00
es128 631d86f723 doc(ngClassEven): make consistent with ngClassOdd 2013-04-17 14:52:24 +01:00
@fbiville 3ac97f2b3d docs(directive guide) typo in compile/link section
The code snippet shows `{{action.description}}`, the explanation referred to it as `{{action.descriptions}}`.
2013-04-17 14:49:55 +01:00
@fbiville ed55346be7 docs(injector): fix typo in inlining example
The actual invoke call in the documentation was referring to the non-existent tempFn instead of tmpFn
2013-04-17 14:46:53 +01:00
Timothy Ahong e31ec1f7ed docs(guide.unit-testing): fix typo 2013-04-16 21:06:10 +01:00
Francesc Rosàs 70e4fd2865 docs($q): fix incorrect @returns tag for $q.when() 2013-04-16 13:38:11 +01:00
Pete Bacon Darwin 7898490779 fix(ngClass): should remove classes when object is the same but property has changed
If you wire up ngClass directly to an object on the scope, e.g. ng-class="myClasses",
where scope.myClasses = { 'classA': true, 'classB': false },
there was a bug that changing scope.myClasses.classA = false, was not being picked
up and classA was not being removed from the element's CSS classes.

This fix uses angular.equals for the comparison and ensures that oldVal is a copy of
(rather than a reference to) the newVal.
2013-04-16 13:22:37 +01:00
Pete Bacon Darwin 0893e83c92 fix(Grunt): also remove \r chars when joining files 2013-04-16 13:14:09 +01:00
Pete Bacon Darwin ef334d0070 docs(tutorial): testacular renamed to karma
Replaced instances of 'Testacular' with 'Karma' to reflect name change of test runner.
Replaced instances of 'http://vojtajina.github.com/testacular' with 'http://karma-runner.github.io/' to reflect dedicated page for Karma Test Runner.
Added location of config file needed to start the Karma server. This is still labeled 'testacular.conf.js' and needs file name to be updated in the phone example repo.
2013-04-15 12:30:33 +01:00
Pete Bacon Darwin 9f08d03978 docs(rootScope): fix typo 2013-04-15 11:46:21 +01:00
Laurent 3ca6c4bfb9 docs(rootScope): Fix various typos 2013-04-15 11:46:21 +01:00
Laurent cfea2095ca docs(Angular.js): fix typo 2013-04-15 11:46:21 +01:00
Pete Bacon Darwin 171bec3b0e doc(overview): add link to angular demo slides to overview 2013-04-15 11:23:00 +01:00
brandonjp 93891ad2e9 docs(ngController): fix docs link to api/ng.$route 2013-04-13 18:26:07 +02:00
Seunghoon Yeon eece726651 docs(module): fix typo 2013-04-13 18:17:04 +02:00
uberspeck dc6665caed docs(faq): added note to FAQ re: legacy IE support 2013-04-12 16:00:53 -07:00
Dave Geddes 5b592cbaf4 chore(Grunt) update grunt-contrib-copy
grunt-contrib-copy@0.4.1 has the cleaner summary output by default
2013-04-11 16:31:05 -07:00
Lee Leathers 348138d7cd style(exceptionHandler): add ws 2013-04-11 15:32:32 -07:00
Lee Leathers 6a34a4ebeb chore(NPM): Add license info 2013-04-11 15:32:31 -07:00
Prathan Thananart 5ca247c749 docs(guide): Update $locationProvider docs.
Default hashPrefix setting is not `'!'`, it's actually `""`.
Source: https://github.com/angular/angular.js/blob/master/src/ng/location.js#L472
2013-04-11 15:29:24 -07:00
kamagatos b16bffbf76 docs(guide/i18n): fix a typo 2013-04-11 15:22:25 -07:00
Christoph Burgdorf b2aec3706d docs(jqLite): clarified that children/parent do not support selectors 2013-04-11 15:11:51 -07:00
Matt Haggard d577c5def1 docs: fix typos 2013-04-11 15:05:16 -07:00
玉黍 a4dd14952e set ng-app as personalLog 2013-04-11 15:00:54 -07:00
Brent Morrow 8879b3733e docs(ngApp): fixed typo
Use this directive to auto-bootstrap **an** application.
2013-04-11 14:59:30 -07:00
Brent Morrow 35b02226ca docs(guide/concepts): fix typo
An event is a user **interaction**, timer event, or network event (response from a server).
2013-04-11 14:57:03 -07:00
Brent Morrow 814feaa2ab docs(guide/concepts): wording change
... or when working with --> a <-- third-party library callbacks.
... or when working with third-party library callbacks.
2013-04-11 14:55:31 -07:00
{Qingping,Dave} Hou aa2e66dcaf docs(guide): Added $ sign to controller example 2013-04-11 14:33:21 -07:00
urenmj 7b7b12e477 docs(dev-guide): Fixed a typo. 2013-04-11 14:19:18 -07:00
Artur Ostrega 187cd0a058 docs(http): spelling, grammar, capitalization, etc.
Conflicts:
	src/ng/http.js
2013-04-11 14:09:12 -07:00
Brent Morrow 0c690af2fe docs(guide/concepts): wording change 2013-04-11 14:07:59 -07:00
Brent Morrow 40ecd2d8e5 docs(guide/expression): wording changes 2013-04-11 14:05:08 -07:00
Luc Morin 484286d536 docs(guide/directives): give more details about directive declaration 2013-04-11 14:02:06 -07:00
Colin Kahn d56b62dcda docs(guide/filters): document multiple arguments syntax
Add example of using a filter with that accepts multiple arguments.
2013-04-11 13:55:47 -07:00
Brent Morrow b94125ac14 docs(angular-mocks): fix wording 2013-04-11 13:52:02 -07:00
Brent Morrow 3f34319398 docs($inject): wording change 2013-04-11 13:48:31 -07:00
David Sanders ba076a29b9 docs($compile): improve docs 2013-04-11 13:06:56 -07:00
Brian Campbell 13000c7350 docs(guide): updates for legacy IE7 support
- note re: id="ng-app" to bootstrap/IE partials
- added doctype/xmlns to markup
- add cond comment re: json2/3 to markup
2013-04-11 13:00:41 -07:00
Igor Minar fd2649fc65 chore(release): start 1.0.7 monochromatic-rainbow iteration 2013-04-11 12:55:32 -07:00
Chad Whitacre 437b09c155 docs($http): fix a typo 2013-04-11 12:50:26 -07:00
Takashi Matsuo b2b015a53b chore(docs): Fixed incomplete merge 2013-04-11 10:28:10 -07:00
Heath Matlock 5bea4c5692 docs(concespts): correct spelling and remove unnecessary word 2013-04-06 23:08:52 +02:00
Igor Minar 1b527b7acf docs(changelog): add release notes for 1.1.4 and 1.0.6 2013-04-04 12:15:42 -07:00
334 changed files with 6105 additions and 6441 deletions
+342
View File
@@ -1,3 +1,345 @@
<a name="1.1.5"></a>
# 1.1.5 triangle-squarification (2013-05-22)
_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
out and please give us feedback._
_Note: This release also contains all bug fixes available in [1.0.7](#1.0.7)._
## Features
- **$animator:**
- provide support for custom animation events
([c53d4c94](https://github.com/angular/angular.js/commit/c53d4c94300c97dd005f9a0cbdbfa387294b9026))
- allow to globally disable and enable animations
([5476cb6e](https://github.com/angular/angular.js/commit/5476cb6e9b6d7a16e3a86585bc2db5e63b16cd4d))
- **$http:**
- add support for aborting via timeout promises
([9f4f5937](https://github.com/angular/angular.js/commit/9f4f5937112655a9881d3281da8e72035bc8b180),
[#1159](https://github.com/angular/angular.js/issues/1159))
- add a default content type header for PATCH requests
([f9b897de](https://github.com/angular/angular.js/commit/f9b897de4b5cc438515cbb54519fbdf6242f5858))
- add timeout support for JSONP requests
([cda7b711](https://github.com/angular/angular.js/commit/cda7b71146f6748116ad5bbc9050ee7e79a9ce2b))
- **$parse:** add support for ternary operators to parser
([6798fec4](https://github.com/angular/angular.js/commit/6798fec4390a72b7943a49505f8a245b6016c84b))
- **$q:** add $q.always() method
([6605adf6](https://github.com/angular/angular.js/commit/6605adf6d96cee2ef53dfad24e99d325df732cab))
- **$controller:** support "Controller as" syntax
([cd38cbf9](https://github.com/angular/angular.js/commit/cd38cbf975b501d846e6149d1d993972a1af0053),
[400f9360](https://github.com/angular/angular.js/commit/400f9360bb2f7553c5bd3b1f256a5f3db175b7bc))
- **$injector:** add `has` method for querying
([80341cb9](https://github.com/angular/angular.js/commit/80341cb9badd952fdc80094df4123629313b4cc4),
[#2556](https://github.com/angular/angular.js/issues/2556))
- **Directives:**
- **ngAnimate:**
- add support for CSS3 Animations with working delays and multiple durations
([14757874](https://github.com/angular/angular.js/commit/14757874a7cea7961f31211b245c417bd4b20512))
- cancel previous incomplete animations when new animations take place
([4acc28a3](https://github.com/angular/angular.js/commit/4acc28a310d006c62afe0de8ec82fed21c98c2d6))
- **ngSrcset:** add new ngSrcset directive
([d551d729](https://github.com/angular/angular.js/commit/d551d72924f7c43a043e4760ff05d7389e310f99),
[#2601](https://github.com/angular/angular.js/issues/2601))
- **ngIf:** add directive to remove and recreate DOM elements
([2f96fbd1](https://github.com/angular/angular.js/commit/2f96fbd17577685bc013a4f7ced06664af253944))
- **select:** match options by expression other than object identity
([c32a859b](https://github.com/angular/angular.js/commit/c32a859bdb93699cc080f9affed4bcff63005a64))
- **ngInclude:** $includeContentRequested event
([af0eaa30](https://github.com/angular/angular.js/commit/af0eaa304748f330739a4b0aadb13201126c5407))
- **Mobile:**
- **ngClick:** Add a CSS class while the element is held down via a tap
([52a55ec6](https://github.com/angular/angular.js/commit/52a55ec61895951999cb0d74e706725b965e9c9f))
- **ngSwipe:** Add ngSwipeRight/Left directives to ngMobile
([5e0f876c](https://github.com/angular/angular.js/commit/5e0f876c39099adb6a0300c429b8df1f6b544846))
- **docs:**
- Add FullText search to replace Google search in docs
([3a49b7ee](https://github.com/angular/angular.js/commit/3a49b7eec4836ec9dc1588e6cedda942755dc7bf))
- external links to github, plunkr and jsfiddle available for code examples
([c8197b44](https://github.com/angular/angular.js/commit/c8197b44eb0b4d49acda142f4179876732e1c751))
- add variable type hinting with colors
([404c9a65](https://github.com/angular/angular.js/commit/404c9a653a1e28de1c6dda996875d6616812313a))
- support for HTML table generation from docs code
([b3a62b2e](https://github.com/angular/angular.js/commit/b3a62b2e19b1743df52034d4d7a0405e6a65f925))
- **scenario runner:** adds mousedown and mouseup event triggers to scenario
([629fb373](https://github.com/angular/angular.js/commit/629fb37351ce5778a40a8bc8cd7c1385b382ce75))
## Bug Fixes
- **$animator:** remove dependency on window.setTimeout
([021bdf39](https://github.com/angular/angular.js/commit/021bdf3922b6525bd117e59fb4945b30a5a55341))
- **$controller:** allow dots in a controller name
([de2cdb06](https://github.com/angular/angular.js/commit/de2cdb0658b8b8cff5a59e26c5ec1c9b470efb9b))
- **$location:**
- prevent navigation when event isDefaultPrevented
([2c69a673](https://github.com/angular/angular.js/commit/2c69a6735e8af5d1b9b73fd221274d374e8efdea))
- compare against actual instead of current URL
([a348e90a](https://github.com/angular/angular.js/commit/a348e90aa141921b914f87ec930cd6ebf481a446))
- prevent navigation if already on the URL
([4bd7bedf](https://github.com/angular/angular.js/commit/4bd7bedf48c0c1ebb62f6bd8c85e8ea00f94502b))
- fix URL interception in hash-bang mode
([58ef3230](https://github.com/angular/angular.js/commit/58ef32308f45141c8f7f7cc32a6156cd328ba692),
[#1051](https://github.com/angular/angular.js/issues/1051))
- correctly rewrite Html5 urls
([77ff1085](https://github.com/angular/angular.js/commit/77ff1085554675f1a8375642996e5b1e51f9ed2d))
- **$resource:**
- null default param results in TypeError
([cefbcd47](https://github.com/angular/angular.js/commit/cefbcd470d4c9020cc3487b2326d45058ef831e2))
- collapse empty suffix parameters correctly
([53061363](https://github.com/angular/angular.js/commit/53061363c7aa1ab9085273d269c6f04ac2162336))
- **$rootScope:**
- ensure $watchCollection correctly handles arrayLike objects
([6452707d](https://github.com/angular/angular.js/commit/6452707d4098235bdbde34e790aee05a1b091218))
- **date filter:** correctly format dates with more than 3 sub-second digits
([4f2e3606](https://github.com/angular/angular.js/commit/4f2e36068502f18814fee0abd26951124881f951))
- **jqLite:**
- pass a dummy event into triggerHandler
([0401a7f5](https://github.com/angular/angular.js/commit/0401a7f598ef9a36ffe1f217e1a98961046fa551))
- **Directives:**
- **ngAnimate:**
- eval ng-animate expression on each animation
([fd21c750](https://github.com/angular/angular.js/commit/fd21c7502f0a25364a810c26ebeecb678e5783c5))
- prevent animation on initial page load
([570463a4](https://github.com/angular/angular.js/commit/570463a465fae02efc33e5a1fa963437cdc275dd))
- skip animation on first render
([1351ba26](https://github.com/angular/angular.js/commit/1351ba2632b5011ad6eaddf004a7f0411bea8453))
- **ngPattern:** allow modifiers on inline ng-pattern
([12b6deb1](https://github.com/angular/angular.js/commit/12b6deb1ce99df64e2fc91a06bf05cd7f4a3a475),
[#1437](https://github.com/angular/angular.js/issues/1437))
- **ngRepeat:**
- correctly iterate over array-like objects
([1d8e11dd](https://github.com/angular/angular.js/commit/1d8e11ddfbd6b08ff02df4331f6df125f49da3dc),
[#2546](https://github.com/angular/angular.js/issues/2546))
- prevent initial duplicates
([a0bc71e2](https://github.com/angular/angular.js/commit/a0bc71e27107c58282e71415c4e8d89e916ae99c))
- **ngView:** accidentally compiling leaving content
([9956baed](https://github.com/angular/angular.js/commit/9956baedd73d5e8d0edd04c9eed368bd3988444b))
- **scenario runner:** correct bootstrap issue on IE
([ab755a25](https://github.com/angular/angular.js/commit/ab755a25f9ca3f3f000623071d8de3ddc4b1d78e))
## Breaking Changes
- **$animator/ngAnimate:**
- **$resource:** due to [53061363](https://github.com/angular/angular.js/commit/53061363c7aa1ab9085273d269c6f04ac2162336),
A `/` followed by a `.`, in the last segment of the URL template is now collapsed into a single `.` delimiter.
For example: `users/.json` will become `users.json`. If your server relied upon this sequence then it will no longer
work. In this case you can now escape the `/.` sequence with `/\.`
<a name="1.0.7"></a>
# 1.0.7 monochromatic-rainbow (2013-05-22)
## Bug Fixes
- **$browser:** should use first value for a cookie.
([3952d35a](https://github.com/angular/angular.js/commit/3952d35abe334a0e6afd1f6e34a74d984d1e9d24),
[#2635](https://github.com/angular/angular.js/issues/2635))
- **$cookieStore:** $cookieStore.get now parses blank string as blank string
([cf4729fa](https://github.com/angular/angular.js/commit/cf4729faa3e6e0a5178e2064a6f3cfd345686554))
- **$location:** back-button should fire $locationChangeStart
([dc9a5806](https://github.com/angular/angular.js/commit/dc9a580617a838b63cbf5feae362b6f9cf5ed986),
[#2109](https://github.com/angular/angular.js/issues/2109))
- **$parse:** Fix context access and double function call
([7812ae75](https://github.com/angular/angular.js/commit/7812ae75d578314c1a285e9644fc75812940eb1d),
[#2496](https://github.com/angular/angular.js/issues/2496))
- **dateFilter:** correctly format ISODates on Android<=2.1
([f046f6f7](https://github.com/angular/angular.js/commit/f046f6f73c910998a94f30a4cb4ed087b6325485),
[#2277](https://github.com/angular/angular.js/issues/2277))
- **jqLite:** correct implementation of mouseenter/mouseleave event
([06f2b2a8](https://github.com/angular/angular.js/commit/06f2b2a8cf7e8216ad9ef05f73426271c2d97faa),
[#2131](https://github.com/angular/angular.js/issues/2131))
- **angular.copy/angular.extend:** do not copy $$hashKey in copy/extend functions.
([6d0b325f](https://github.com/angular/angular.js/commit/6d0b325f7f5b9c1f3cfac9b73c6cd5fc3d1e2af0),
[#1875](https://github.com/angular/angular.js/issues/1875))
- **i18n:** escape all chars above \u007f in locale files
([695c54c1](https://github.com/angular/angular.js/commit/695c54c17b3299cd6170c45878b41cb46a577cd2),
[#2417](https://github.com/angular/angular.js/issues/2417))
- **Directives:**
- **ngPluralize:** handle the empty string as a valid override
([67a4a25b](https://github.com/angular/angular.js/commit/67a4a25b890fada0043c1ff98e5437d793f44d0c),
[#2575](https://github.com/angular/angular.js/issues/2575))
- **select:** ensure empty option is not lost in IE9
([4622af3f](https://github.com/angular/angular.js/commit/4622af3f075204e2d5ab33d5bd002074f2d940c9),
[#2150](https://github.com/angular/angular.js/issues/2150))
- **ngModel:** use paste/cut events in IE to support context menu
([363e4cbf](https://github.com/angular/angular.js/commit/363e4cbf649de4c5206f1904ee76f89301ceaab0),
[#1462](https://github.com/angular/angular.js/issues/1462))
- **ngClass:** should remove classes when object is the same but property has changed
([0ac969a5](https://github.com/angular/angular.js/commit/0ac969a5ee1687cfd4517821943f34fe948bb3fc))
- **PhoneCat Tutorial:** renamed Testacular to Karma
([angular-phonecat](https://github.com/angular/angular-phonecat))
<a name="1.1.4"></a>
# 1.1.4 quantum-manipulation (2013-04-03)
_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
out and please give us feedback._
_Note: This release also contains all bug fixes available in [1.0.6](#1.0.6)._
## Features
- **$compile:**
- allow directives to modify interpolated attributes
([fe8d893b](https://github.com/angular/angular.js/commit/fe8d893b839e9b14e3e55a3a0523cc1e6355bdd5))
- support for dynamic template generation
([eb53423a](https://github.com/angular/angular.js/commit/eb53423a41136fcda0c5e711f2d104952080354b))
- add attribute binding support via ngAttr*
([cf17c6af](https://github.com/angular/angular.js/commit/cf17c6af475eace31cf52944afd8e10d3afcf6c0),
[#1050](https://github.com/angular/angular.js/issues/1050), [#1925](https://github.com/angular/angular.js/issues/1925))
- `'=?'` makes `'='` binding optional
([ac899d0d](https://github.com/angular/angular.js/commit/ac899d0da59157fa1c6429510791b6c3103d9401),
[#909](https://github.com/angular/angular.js/issues/909), [#1435](https://github.com/angular/angular.js/issues/1435))
- **$q:** `$q.all()` now accepts hash
([e27bb6eb](https://github.com/angular/angular.js/commit/e27bb6eb132a68665c8fca3f5a216b19b1129ba6))
- **$resource:** ability to override url in resource actions
([60f1f099](https://github.com/angular/angular.js/commit/60f1f099fc7e5197808cd6acb7407cdc40f50a3f))
- **$route:** add `caseInsensitiveMatch` option for url matching
([5e18a15f](https://github.com/angular/angular.js/commit/5e18a15fb01d2e81adda68503754289fa9655082))
- **http:**
- support request/response promise chaining
([4ae46814](https://github.com/angular/angular.js/commit/4ae46814ff4e7c0bbcdbbefc0a97277283a84065))
- set custom default cache in $http.defaults.cache
([99f3b70b](https://github.com/angular/angular.js/commit/99f3b70b2d316f5bb39e21249e752c29f49c90ab))
- **JQLite:** `ready()` now supports `document.readyState=='complete'`
([753fc9e5](https://github.com/angular/angular.js/commit/753fc9e58d5e554d4930548558efecc283557eeb))
- **Scenario:** autodisable animations when running e2e tests
([fec4ef38](https://github.com/angular/angular.js/commit/fec4ef38815340e8e5a6b65fd6c08f5c74e701d8))
- **Scope:** add `$watchCollection` method for observing collections
([5eb96855](https://github.com/angular/angular.js/commit/5eb968553a1130461ab8704535691e00eb154ac2))
- **angular.bootstrap:** support deferred bootstrap (mainly useful for tools like test runners and Batarang)
([603fe0d1](https://github.com/angular/angular.js/commit/603fe0d19608ffe1915d8bc23bf412912e7ee1ac))
- **ngMobile:** add ngMobile module with mobile-specific ngClick
([707c65d5](https://github.com/angular/angular.js/commit/707c65d5a228b44ab3aea2fad95516fe6c57169a))
- **Directives:**
- **ngKeypress:** add ngKeypress directive for handling keypress event
([f20646bc](https://github.com/angular/angular.js/commit/f20646bce5f0c914992a78fc2556bda136c27ac9))
- **ngSwitch:** Preserve the order of the elements not in the ng-switch
([e88d6179](https://github.com/angular/angular.js/commit/e88d6179c3a6a137e75fa09de906fc83c6515db2),
[#1074](https://github.com/angular/angular.js/issues/1074))
- **ngAnimate:** add support for animation
([0b6f1ce5](https://github.com/angular/angular.js/commit/0b6f1ce5f89f47f9302ff1e8cd8f4b92f837c413))
- **ngRepeat:** add support for custom tracking of items
([61f2767c](https://github.com/angular/angular.js/commit/61f2767ce65562257599649d9eaf9da08f321655))
## Breaking Changes
- **$route:** due to [6f71e809](https://github.com/angular/angular.js/commit/6f71e809141bf89501e55c378921d6e7ec9512bc),
in $routeChangeStart event, nextRoute.$route property is gone. Use the nextRoute object itself instead of nextRoute.$route.
- **ngRepeat:** due to [61f2767c](https://github.com/angular/angular.js/commit/61f2767ce65562257599649d9eaf9da08f321655), it is now considered an error to have two identical items (identified by the new "track by" expression) in a collection that is fed into the repeater. This behavior was previously tolerated.
- **ngSwitch:** due to [e88d6179](https://github.com/angular/angular.js/commit/e88d6179c3a6a137e75fa09de906fc83c6515db2),
elements not in the ng-switch were rendered after the ng-switch elements. Now they are rendered in-place.
Templates with ngSwitch directives and nested non-ngSwitchWhen elements should be updated to preserve render order.
For example: The following was previously rendered with `<li>1</li>` after `<li>2</li>`:
<ul ng-switch="select">
<li>1</li>
<li ng-switch-when="option">2</li>
</ul>
To keep the old behaviour, use:
<ul ng-switch="select">
<li ng-switch-when="1">2</li>
<li>1</li>
</ul>
<a name="1.0.6"></a>
# 1.0.6 universal-irreversibility (2013-04-04)
## Bug Fixes
- **$compile:**
- compile replace directives in external template
([398691be](https://github.com/angular/angular.js/commit/398691beb3fc40a481afa258d181de06ec0d153c),
[#1859](https://github.com/angular/angular.js/issues/1859))
- whitelist file:// in url sanitization
([7b236b29](https://github.com/angular/angular.js/commit/7b236b29aa3a6f6dfe722815e0a2667d9b7f0899))
- handle elements with no childNodes property
([bec614fd](https://github.com/angular/angular.js/commit/bec614fd90c48c3921a4b659912008574e553b40))
- **$http:** don't encode URL query substring "null" to "+"
([86d191ed](https://github.com/angular/angular.js/commit/86d191ed4aea9015adc71b852223475c5c762c34))
- **$httpBackend:** prevent DOM err due to dereferencing .responseText
([509ec745](https://github.com/angular/angular.js/commit/509ec745fdbb54b54672fbf8595a4958c16f2b53),
[#1922](https://github.com/angular/angular.js/issues/1922))
- **$location:**
- parse FirefoxOS packaged app urls
([3a81dd8b](https://github.com/angular/angular.js/commit/3a81dd8bddbade81c4c9f734813458d0d969a4bf),
[#2112](https://github.com/angular/angular.js/issues/2112))
- correctly rewrite html5 url to hashbang url
([9befe370](https://github.com/angular/angular.js/commit/9befe37014141fbfdf0cded318d28322fc058c13))
- **$route:** make nextRoute.$route private
([6f71e809](https://github.com/angular/angular.js/commit/6f71e809141bf89501e55c378921d6e7ec9512bc),
[#1907](https://github.com/angular/angular.js/issues/1907))
- **mocks:** prevent NPE when module definition outside of it.
([5c735eb4](https://github.com/angular/angular.js/commit/5c735eb4ab07144a62949472ed388cb185099201))
- **dateFilter:** correct timezone date filter for 1/2 hour offsets
([1c1cd4fd](https://github.com/angular/angular.js/commit/1c1cd4fdf6b6d7511c7b8dc61b8042011dc54830))
<a name="1.1.3"></a>
# 1.1.3 radioactive-gargle (2013-02-20)
+4
View File
@@ -38,6 +38,10 @@ initialization.
<html ng-app>
* If IE7 support is required add `id="ng-app"`
<html ng-app id="ng-app">
* If you choose to use the old style directive syntax `ng:` then include xml-namespace in `html`
to make IE happy. (This is here for historical reasons, and we no longer recommend use of
`ng:`.)
+4 -2
View File
@@ -30,7 +30,7 @@ involved.
# Compiler
Compiler is an angular service which traverses the DOM looking for attributes. The compilation
process happens into two phases.
process happens in two phases.
1. **Compile:** traverse the DOM and collect all of the directives. The result is a linking
function.
@@ -70,8 +70,8 @@ Here is a directive which makes any element draggable. Notice the `draggable` at
<file name="script.js">
angular.module('drag', []).
directive('draggable', function($document) {
var startX=0, startY=0, x = 0, y = 0;
return function(scope, element, attr) {
var startX = 0, startY = 0, x = 0, y = 0;
element.css({
position: 'relative',
border: '1px solid red',
@@ -79,6 +79,8 @@ Here is a directive which makes any element draggable. Notice the `draggable` at
cursor: 'pointer'
});
element.bind('mousedown', function(event) {
// Prevent default dragging of selected content
event.preventDefault();
startX = event.screenX - x;
startY = event.screenY - y;
$document.bind('mousemove', mousemove);
+7 -7
View File
@@ -61,7 +61,7 @@ This is how we get the ball rolling (refer to the diagram and example below):
The diagram and the example below describe how Angular interacts with the browser's event loop.
1. The browser's event-loop waits for an event to arrive. An event is a user interactions, timer event,
1. The browser's event-loop waits for an event to arrive. An event is a user interaction, timer event,
or network event (response from a server).
2. The event's callback gets executed. This enters the JavaScript context. The callback can
modify the DOM structure.
@@ -74,7 +74,7 @@ applied in Angular execution context will benefit from Angular data-binding, exc
property watching, etc... You can also use $apply() to enter Angular execution context from JavaScript. Keep in
mind that in most places (controllers, services) $apply has already been called for you by the
directive which is handling the event. An explicit call to $apply is needed only when
implementing custom event callbacks, or when working with a third-party library callbacks.
implementing custom event callbacks, or when working with third-party library callbacks.
1. Enter Angular execution context by calling {@link guide/scope scope}`.`{@link
api/ng.$rootScope.Scope#$apply $apply}`(stimulusFn)`. Where `stimulusFn` is
@@ -101,7 +101,7 @@ implementing custom event callbacks, or when working with a third-party library
re-rendering the DOM to reflect any changes.
Here is the explanation of how the `Hello wold` example achieves the data-binding effect when the
Here is the explanation of how the `Hello world` example achieves the data-binding effect when the
user enters text into the text field.
1. During the compilation phase:
@@ -143,8 +143,8 @@ provides the execution context for expressions. The scopes are nested in a hiera
which closely follow the DOM structure. (See individual directive documentation to see which
directives cause a creation of new scopes.)
The following example demonstrates how `name` {@link guide/expression expression} will evaluate
into different value depending on which scope it is evaluated in. The example is followed by
The following example demonstrates how the `name` {@link guide/expression expression} will evaluate
into a different value depending on which scope it is evaluated in. The example is followed by
a diagram depicting the scope boundaries.
<div class="clear">
@@ -232,7 +232,7 @@ The separation of the controller and the view is important because:
<img class="pull-right" style="padding-left: 3em; padding-bottom: 1em;" src="img/guide/concepts-model.png">
The model is the data which is used merged with the template to produce the view. To be able to
The model is the data which is merged with the template to produce the view. To be able to
render the model into the view, the model has to be able to be referenced from the scope. Unlike many
other frameworks Angular makes no restrictions or requirements on the model. There are no classes
to inherit from or special accessor methods for accessing or changing the model. The model can be
@@ -425,7 +425,7 @@ function arguments. When angular calls the function, it will use the {@link
api/AUTO.$injector#invoke call} which will automatically fill the function
arguments.
Examine the `ClockCtrl` bellow, and notice how it lists the dependencies in the constructor. When the
Examine the `ClockCtrl` below, and notice how it lists the dependencies in the constructor. When the
{@link api/ng.directive:ngController ng-controller} instantiates
the controller it automatically provides the dependencies. There is no need to create
dependencies, look for dependencies, or even get a reference to the injector.
+127 -1
View File
@@ -97,7 +97,8 @@ the test frame.
Asserts the value of the given `future` satisfies the `matcher`. All API statements return a
`future` object, which get a `value` assigned after they are executed. Matchers are defined using
`angular.scenario.matcher`, and they use the value of futures to run the expectation. For example:
`expect(browser().location().href()).toEqual('http://www.google.com')`
`expect(browser().location().href()).toEqual('http://www.google.com')`. Available matchers
are presented further down this document.
## expect(future).not().{matcher}
Asserts the value of the given `future` satisfies the negation of the `matcher`.
@@ -176,3 +177,128 @@ JavaScript is a dynamically typed language which comes with great power of expre
come with almost no-help from the compiler. For this reason we feel very strongly that any code
written in JavaScript needs to come with a strong set of tests. We have built many features into
angular which makes testing your angular applications easy. So there is no excuse for not testing.
# Matchers
Matchers are used in combination with the `expect(...)` function as described above and can
be negated with `not()`. For instance: `expect(element('h1').text()).not().toEqual('Error')`.
Source: {@link https://github.com/angular/angular.js/blob/master/src/ngScenario/matchers.js}
<pre>
// value and Object comparison following the rules of angular.equals().
expect(value).toEqual(value)
// a simpler value comparison using ===
expect(value).toBe(value)
// checks that the value is defined by checking its type.
expect(value).toBeDefined()
// the following two matchers are using JavaScript's standard truthiness rules
expect(value).toBeTruthy()
expect(value).toBeFalsy()
// verify that the value matches the given regular expression. The regular
// expression may be passed in form of a string or a regular expression
// object.
expect(value).toMatch(expectedRegExp)
// a check for null using ===
expect(value).toBeNull()
// Array.indexOf(...) is used internally to check whether the element is
// contained within the array.
expect(value).toContain(expected)
// number comparison using < and >
expect(value).toBeLessThan(expected)
expect(value).toBeGreaterThan(expected)
</pre>
# Example
See the {@link https://github.com/angular/angular-seed angular-seed} project for more examples.
## Conditional actions with element(...).query(fn)
E2E testing with angular scenario is highly asynchronous and hides a lot of complexity by
queueing actions and expectations that can handle futures. From time to time, you might need
conditional assertions or element selection. Even though you should generally try to avoid this
(as it is can be sign for unstable tests), you can add conditional behavior with
`element(...).query(fn)`. The following code listing shows how this function can be used to delete
added entries (where an entry is some domain object) using the application's web interface.
Imagine the application to be structure into two views:
1. *Overview view* which lists all the added entries in a table and
2. a *detail view* which shows the entries' details and contains a delete button. When clicking the
delete button, the user is redirected back to the *overview page*.
<pre>
beforeEach(function () {
var deleteEntry = function () {
browser().navigateTo('/entries');
// we need to select the <tbody> element as it might be the case that there
// are no entries (and therefore no rows). When the selector does not
// result in a match, the test would be marked as a failure.
element('table tbody').query(function (tbody, done) {
// ngScenario gives us a jQuery lite wrapped element. We call the
// `children()` function to retrieve the table body's rows
var children = tbody.children();
if (children.length > 0) {
// if there is at least one entry in the table, click on the link to
// the entry's detail view
element('table tbody a').click();
// and, after a route change, click the delete button
element('.btn-danger').click();
}
// if there is more than one entry shown in the table, queue another
// delete action.
if (children.length > 1) {
deleteEntry();
}
// remember to call `done()` so that ngScenario can continue
// test execution.
done();
});
};
// start deleting entries
deleteEntry();
});
</pre>
In order to understand what is happening, we should emphasize that ngScenario calls are not
immediately executed, but queued (in ngScenario terms, we would be talking about adding
future actions). If we had only one entry in our table, than the following future actions
would be queued:
<pre>
// delete entry 1
browser().navigateTo('/entries');
element('table tbody').query(function (tbody, done) { ... });
element('table tbody a');
element('.btn-danger').click();
</pre>
For two entries, ngScenario would have to work on the following queue:
<pre>
// delete entry 1
browser().navigateTo('/entries');
element('table tbody').query(function (tbody, done) { ... });
element('table tbody a');
element('.btn-danger').click();
// delete entry 2
// indented to represent "recursion depth"
browser().navigateTo('/entries');
element('table tbody').query(function (tbody, done) { ... });
element('table tbody a');
element('.btn-danger').click();
</pre>
@@ -3,10 +3,7 @@
@description
In Angular, a controller is a JavaScript function(type/class) that is used to augment instances of
angular {@link scope Scope}, excluding the root scope. When you or Angular create a new
child scope object via the {@link api/ng.$rootScope.Scope#$new scope.$new} API , there is an
option to pass in a controller as a method argument. This will tell Angular to associate the
controller with the new scope and to augment its behavior.
angular {@link scope Scope}, excluding the root scope.
Use controllers to:
@@ -37,8 +34,8 @@ your application as follows:
var myApp = angular.module('myApp',[]);
myApp.controller('GreetingCtrl', ['$scope', function(scope) {
scope.greeting = 'Hola!';
myApp.controller('GreetingCtrl', ['$scope', function($scope) {
$scope.greeting = 'Hola!';
}]);
Note also that we use the array notation to explicitly specify the dependency
@@ -82,8 +79,7 @@ instances).
# Associating Controllers with Angular Scope Objects
You can associate controllers with scope objects explicitly via the {@link api/ng.$rootScope.Scope#$new
scope.$new} api or implicitly via the {@link api/ng.directive:ngController ngController
You can associate controllers with scope objects implicitly via the {@link api/ng.directive:ngController ngController
directive} or {@link api/ng.$route $route service}.
@@ -28,7 +28,7 @@ occurs in controllers:
* Use an {@link expression angular expression} with an assignment operator in templates:
<button ng-click="{{foos='ball'}}">Click me</button>
<button ng-click="{{foo='ball'}}">Click me</button>
* Use {@link api/ng.directive:ngInit ngInit directive} in templates (for toy/example apps
only, not recommended for real applications):
@@ -98,7 +98,7 @@ To configure the `$location` service, retrieve the
- **hashPrefix(prefix)**: {string}<br />
prefix used for Hashbang URLs (used in Hashbang mode or in legacy browser in Html5 mode)<br />
default: `'!'`
default: `""`
### Example configuration
<pre>
@@ -619,21 +619,25 @@ to the $location object (using {@link api/ng.directive:input.text
ngModel} directive on an input field), you will need to specify an extra model property
(e.g. `locationPath`) with two watchers which push $location updates in both directions. For
example:
<pre>
<!-- html -->
<input type="text" ng-model="locationPath" />
</pre>
<pre>
// js - controller
$scope.$watch('locationPath', function(path) {
$location.path(path);
});
$scope.$watch('$location.path()', function(path) {
scope.locationPath = path;
});
</pre>
<example>
<file name="index.html">
<div ng-controller="LocationController">
<input type="text" ng-model="locationPath" />
</div>
</file>
<file name="script.js">
function LocationController($scope, $location) {
$scope.$watch('locationPath', function(path) {
$location.path(path);
});
$scope.$watch(function() {
return $location.path();
}, function(path) {
$scope.locationPath = path;
});
}
</file>
</example>
# Related API
@@ -19,6 +19,10 @@ You can also pass colon-delimited arguments to filters, for example, to display
123 | number:2
Use the same syntax for multiple arguments:
myArray | orderBy:'timestamp':true
Here are some examples that show values before and after applying different filters to an
expression in a binding:
@@ -3,7 +3,7 @@
@description
JavaScript is a dynamically typed language which comes with great power of expression, but it also
come with almost no-help from the compiler. For this reason we feel very strongly that any code
comes with almost no-help from the compiler. For this reason we feel very strongly that any code
written in JavaScript needs to come with a strong set of tests. We have built many features into
Angular which makes testing your Angular applications easy. So there is no excuse for not testing.
@@ -97,7 +97,7 @@ function MyClass() {
While no new instance of the dependency is being created, it is fundamentally the same as `new`, in
that there is no good way to intercept the call to `global.xhr` for testing purposes, other then
through monkey patching. The basic issue for testing is that global variable needs to be mutated in
through monkey patching. The basic issue for testing is that a global variable needs to be mutated in
order to replace it with call to a mock method. For further explanation why this is bad see: {@link
http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/ Brittle Global
State & Singletons}
@@ -275,7 +275,62 @@ expect(length('abc')).toEqual(3);
</pre>
## Directives
Directives in angular are responsible for updating the DOM when the state of the model changes.
Directives in angular are responsible for encapsulating complex functionality within custom HTML tags,
attributes, classes or comments. Unit tests are very important for directives because the components
you create with directives may be used throughout your application and in many different contexts.
### Simple HTML Element Directive
Lets start with an angular app with no dependencies.
<pre>
var app = angular.module('myApp', []);
</pre>
Now we can add a directive to our app.
<pre>
app.directive('aGreatEye', function () {
return {
restrict: 'E',
replace: true,
template: '<h1>lidless, wreathed in flame</h1>'
};
});
</pre>
This directive is used as a tag `<a-great-eye></a-great-eye>`. It replaces the entire tag with the
template `<h1>lidless, wreathed in flame</h1>`. Now we are going to write a jasmine unit test to
verify this functionality.
<pre>
describe('Unit testing great quotes', function() {
var $compile;
var $rootScope;
// Load the myApp module, which contains the directive
beforeEach(module('myApp'));
// Store references to $rootScope and $compile
// so they are available to all tests in this describe block
beforeEach(inject(function(_$compile_, _$rootScope_){
// The injector unwraps the underscores (_) from around the parameter names when matching
$compile = _$compile_;
$rootScope = _$rootScope_;
}));
it('Replaces the element with the appropriate content', function() {
// Compile a piece of HTML containing the directive
var element = $compile("<a-great-eye></a-great-eye>")($rootScope);
// Check that the compiled element contains the templated content
expect(element.html()).toContain("lidless, wreathed in flame");
});
});
</pre>
We inject the $compile service and $rootScope before each jasmine test. The $compile service is used
to render the aGreatEye directive. After rendering the directive we ensure that the directive has
replaced the content and "lidless, wreathed in flame" is present.
## Mocks
oue
@@ -293,4 +348,5 @@ ou
ou
## Sample project
uoe
See the {@link https://github.com/angular/angular-seed angular-seed} project for an example.
+16 -13
View File
@@ -14,7 +14,7 @@ book.
## DI in a nutshell
There are only three ways how an object or a function can get a hold of its dependencies:
There are only three ways an object or a function can get a hold of its dependencies:
1. The dependency can be created, typically using the `new` operator.
@@ -23,8 +23,8 @@ There are only three ways how an object or a function can get a hold of its depe
3. The dependency can be passed in to where it is needed.
The first two option of creating or looking up dependencies are not optimal, because they hard
code the dependency, making it difficult, if not impossible, to modify the dependencies.
The first two options of creating or looking up dependencies are not optimal because they hard
code the dependency. This make it difficult, if not impossible, to modify the dependencies.
This is especially problematic in tests, where it is often desirable to provide mock dependencies
for test isolation.
@@ -33,7 +33,7 @@ dependency from the component. The dependency is simply handed to the component.
<pre>
function SomeClass(greeter) {
this.greeter = greeter
this.greeter = greeter;
}
SomeClass.prototype.doSomething = function(name) {
@@ -41,18 +41,18 @@ dependency from the component. The dependency is simply handed to the component.
}
</pre>
In the above example the `SomeClass` is not concerned with locating the `greeter` dependency, it
In the above example `SomeClass` is not concerned with locating the `greeter` dependency, it
is simply handed the `greeter` at runtime.
This is desirable, but it puts the responsibility of getting hold of the dependency onto the
code responsible for the construction of `SomeClass`.
This is desirable, but it puts the responsibility of getting hold of the dependency on the
code that constructs `SomeClass`.
To manage the responsibility of dependency creation, each Angular application has an {@link
api/angular.injector injector}. The injector is a service locator that is responsible for
construction and lookup of dependencies.
Here is an example of using the injector service:
Here is an example of using the injector service.
<pre>
// Provide the wiring information in a module
angular.module('myModule', []).
@@ -101,7 +101,7 @@ dependency lookup responsibility to the injector by declaring the dependencies a
</pre>
Notice that by having the `ng-controller` instantiate the class, it can satisfy all of the
dependencies of the `MyController` without the controller ever knowing about the injector. This is
dependencies of `MyController` without the controller ever knowing about the injector. This is
the best outcome. The application code simply ask for the dependencies it needs, without having to
deal with the injector. This setup does not break the Law of Demeter.
@@ -159,16 +159,18 @@ Sometimes using the `$inject` annotation style is not convenient such as when an
directives.
For example:
<pre>
someModule.factory('greeter', function($window) {
...;
...
});
</pre>
Results in code bloat due to the need of temporary variable:
Results in code bloat due to needing a temporary variable:
<pre>
var greeterFactory = function(renamed$window) {
...;
...
};
greeterFactory.$inject = ['$window'];
@@ -177,9 +179,10 @@ Results in code bloat due to the need of temporary variable:
</pre>
For this reason the third annotation style is provided as well.
<pre>
someModule.factory('greeter', ['$window', function(renamed$window) {
...;
...
}]);
</pre>
+24 -11
View File
@@ -132,7 +132,7 @@ able to quickly stamp out new `li`s for every `action` in `user.actions`. This m
to save a clean copy of the `li` element for cloning purposes and as new `action`s are inserted,
the template `li` element needs to be cloned and inserted into `ul`. But cloning the `li` element
is not enough. It also needs to compile the `li` so that its directives such as
`{{action.descriptions}}` evaluate against the right {@link api/ng.$rootScope.Scope
`{{action.description}}` evaluate against the right {@link api/ng.$rootScope.Scope
scope}. A naive method would be to simply insert a copy of the `li` element and then compile it.
But compiling on every `li` element clone would be slow, since the compilation requires that we
traverse the DOM tree and look for directives and execute them. If we put the compilation inside a
@@ -225,7 +225,12 @@ In this example we will build a directive that displays the current time.
# Writing directives (long version)
An example skeleton of the directive is shown here, for the complete list see below.
There are different ways to declare a directive. The difference resides in the return
value of the factory function. You can either return a Directive Definition Object
(see below) that defines the directive properties, or just the postLink function
of such an object (all other properties will have the default values).
Here's an example directive declared with a Directive Definition Object:
<pre>
var myModule = angular.module(...);
@@ -239,6 +244,7 @@ An example skeleton of the directive is shown here, for the complete list see be
transclude: false,
restrict: 'A',
scope: false,
controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { ... },
@@ -251,12 +257,11 @@ An example skeleton of the directive is shown here, for the complete list see be
});
</pre>
In most cases you will not need such fine control and so the above can be simplified. All of the
different parts of this skeleton are explained in following sections. In this section we are
interested only in some of this skeleton.
In most cases you will not need such fine control and so the above can be simplified. You can still
return a Directive Definition Object, but only setting the 'compile' function property of the Object,
and rely on the default values for other properties.
The first step in simplyfing the code is to rely on the default values. Therefore the above can be
simplified as:
Therefore the above can be simplified as:
<pre>
var myModule = angular.module(...);
@@ -271,8 +276,10 @@ simplified as:
});
</pre>
Most directives concern themselves only with instances, not with template transformations, allowing
further simplification:
Finally, most directives concern themselves only with instances, not with template transformations, allowing
further simplification.
Here we only define the postLink function:
<pre>
var myModule = angular.module(...);
@@ -359,6 +366,12 @@ compiler}. The attributes are:
* `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:
`function(cloneLinkingFn)`.
To avoid errors after minification the bracket notation should be used:
<pre>
controller: ['$scope', '$element', '$attrs', '$transclude', function($scope, $element, $attrs, $transclude) { ... }]
</pre>
* `require` - Require another controller be passed into current directive linking function. The
`require` takes a name of the directive controller to pass in. If no such controller can be
found an error is raised. The name can be prefixed with:
@@ -432,8 +445,8 @@ done in a linking function rather than in a compile function.
A compile function can have a return value which can be either a function or an object.
* returning a function - is equivalent to registering the linking function via the `link` property
of the config object when the compile function is empty.
* returning a (post-link) function - is equivalent to registering the linking function via the
`link` property of the config object when the compile function is empty.
* returning an object with function(s) registered via `pre` and `post` properties - allows you to
control when a linking function should be called during the linking phase. See info about
+2 -2
View File
@@ -3,7 +3,7 @@
@description
Expressions are JavaScript-like code snippets that are usually placed in bindings such as `{{
expression }}`. Expressions are processed by {@link api/ng.$parse $parse}
expression }}`. Expressions are processed by the {@link api/ng.$parse $parse}
service.
For example, these are all valid expressions in angular:
@@ -179,7 +179,7 @@ angular uses, to differentiate its API names from others. If angular didn't use
`a.length()` would return undefined because neither a nor angular define such a property.
Consider that in a future version of Angular we might choose to add a length method, in which case
the behavior of the expression would change. Worse yet, you the developer could create a length
the behavior of the expression would change. Worse yet, you, the developer, could create a length
property and then we would have a collision. This problem exists because Angular augments existing
objects with additional behavior. By prefixing its additions with $ we are reserving our namespace
so that angular developers and developers who use Angular can develop in harmony without collisions.
+3 -3
View File
@@ -93,10 +93,10 @@ This ensures that the user is not distracted with an error until after interacti
<script>
function Controller($scope) {
$scope.master= {};
$scope.master = {};
$scope.update = function(user) {
$scope.master= angular.copy(user);
$scope.master = angular.copy(user);
};
$scope.reset = function() {
@@ -113,7 +113,7 @@ This ensures that the user is not distracted with an error until after interacti
# Binding to form and control state
A form is in instance of {@link api/ng.directive:form.FormController FormController}.
A form is an instance of {@link api/ng.directive:form.FormController FormController}.
The form instance can optionally be published into the scope using the `name` attribute.
Similarly control is an instance of {@link api/ng.directive:ngModel.NgModelController NgModelController}.
The control instance can similarly be published into the form instance using the `name` attribute.
+1 -1
View File
@@ -53,7 +53,7 @@ There are two approaches to providing locale rules to Angular:
You can pre-bundle the desired locale file with Angular by concatenating the content of the
locale-specific file to the end of `angular.js` or `angular.min.js` file.
For example on *nix, to create a an angular.js file that contains localization rules for german
For example on *nix, to create an angular.js file that contains localization rules for german
locale, you can do the following:
`cat angular.js i18n/angular-locale_de-ge.js > angular_de-ge.js`
+45 -24
View File
@@ -15,33 +15,54 @@ To make your Angular application work on IE please make sure that:
1. You polyfill JSON.stringify if necessary (IE7 will need this). You can use
[JSON2](https://github.com/douglascrockford/JSON-js) or
[JSON3](http://bestiejs.github.com/json3/) polyfills for this.
<pre>
<!doctype html>
<html xmlns:ng="http://angularjs.org">
<head>
<!--[if lte IE 8]>
<script src="/path/to/json2.js"></script>
<![endif]-->
</head>
<body>
...
</body>
</html>
</pre>
2. you **do not** use custom element tags such as `<ng:view>` (use the attribute version
2. add `id="ng-app"` to the root element in conjunction with `ng-app` attribute
<pre>
<!doctype html>
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
...
</html>
</pre>
3. you **do not** use custom element tags such as `<ng:view>` (use the attribute version
`<div ng-view>` instead), or
3. if you **do use** custom element tags, then you must take these steps to make IE happy:
<pre>
<html xmlns:ng="http://angularjs.org">
<head>
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
</head>
<body>
...
</body>
</html>
</pre>
4. if you **do use** custom element tags, then you must take these steps to make IE happy:
<pre>
<!doctype html>
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
<head>
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
</head>
<body>
...
</body>
</html>
</pre>
The **important** parts are:
+1 -1
View File
@@ -180,7 +180,7 @@ ignored in the unit-tests.
Modules can list other modules as their dependencies. Depending on a module implies that required
module needs to be loaded before the requiring module is loaded. In other words the configuration
blocks of the required modules execute before the configuration blocks or the requiring module.
blocks of the required modules execute before the configuration blocks of the requiring module.
The same is true for the run blocks. Each module can only be loaded once, even if multiple other
modules require it.
+3 -3
View File
@@ -90,7 +90,7 @@ concepts which the application developer may face:
<table>
<tr><td>Quantity</td><td>Cost</td></tr>
<tr>
<td><input type="integer" min="0" ng-model="qty" required ></td>
<td><input type="number" ng-pattern="/\d+/" step="1" min="0" ng-model="qty" required ></td>
<td><input type="number" ng-model="cost" required ></td>
</tr>
</table>
@@ -124,7 +124,7 @@ We load Angular using the `<script>` tag:
From the `ng-model` attribute of the `<input>` tags, Angular automatically sets up two-way data
binding, and we also demonstrate some easy input validation:
Quantity: <input type="integer" min="0" ng-model="qty" required >
Quantity: <input type="number" ng-pattern="/\d+/" step="1" min="0" ng-model="qty" required >
Cost: <input type="number" ng-model="cost" required >
These input widgets look normal enough, but consider these points:
@@ -202,6 +202,6 @@ Angular frees you from the following pain:
# Watch a Presentation About Angular
Here is a presentation on Angular from May 2012.
Here is a presentation on Angular from May 2012. The {@link http://mhevery.github.io/angular-demo-slides/index.html#/list corresponding slides} are also available.
<iframe width="560" height="315" src="http://www.youtube.com/embed/bfrn5VNpwsg" frameborder="0" allowfullscreen></iframe>
+1 -1
View File
@@ -165,7 +165,7 @@ Scopes are attached to the DOM as `$scope` data property, and can be retrieved f
purposes. (It is unlikely that one would need to retrieve scopes in this way inside the
application.) The location where the root scope is attached to the DOM is defined by the location
of {@link api/ng.directive:ngApp `ng-app`} directive. Typically
`ng-app` is placed an the `<html>` element, but it can be placed on other elements as well, if,
`ng-app` is placed on the `<html>` element, but it can be placed on other elements as well, if,
for example, only a portion of the view needs to be controlled by Angular.
To examine the scope in the debugger:
-3
View File
@@ -1,3 +0,0 @@
@ngdoc overview
@name Developer Guide: Type
@description
+7 -3
View File
@@ -88,6 +88,10 @@ quite a good source for information on Git.
development web server, run tests, and generate a build. Depending on your system, you can install Node either from source or as a
pre-packaged bundle.
* {@link http://www.java.com Java}: JavaScript is minified using
{@link https://developers.google.com/closure/ Closure Tools} jar. Make sure you have Java (version 6 or higher) installed
and included in your {@link http://docs.oracle.com/javase/tutorial/essential/environment/paths.html PATH} variable.
Once installed, you'll also need several npms (node packages), which you can install once you checked out a local copy
of the Angular repository (see below) with:
@@ -174,7 +178,7 @@ made available a local web server based on Node.js.
<a name="unit-tests"></a>
## Running the Unit Test Suite
Our unit and integration tests are written with Jasmine and executed with Testacular. To run all of the
Our unit and integration tests are written with Jasmine and executed with Karma. To run all of the
tests once on Chrome run:
grunt test:unit
@@ -188,12 +192,12 @@ Note there should be _no spaces between browsers_. `Opera, Firefox` is INVALID.
During development it's however more productive to continuously run unit tests every time the source or test files
change. To execute tests in this mode run:
1. To start the Testacular server, capture Chrome browser and run unit tests, run:
1. To start the Karma server, capture Chrome browser and run unit tests, run:
grunt autotest:jqlite
2. To capture more browsers, open this url in the desired browser (url might be different if you have multiple instance
of Testacular running, read Testacular's console output for the correct url):
of Karma running, read Karma's console output for the correct url):
http://localhost:9876/
+2 -1
View File
@@ -51,7 +51,8 @@ Yes. See instructions in {@link downloading}.
### What browsers does Angular work with?
We run our extensive test suite against the following browsers: Safari, Chrome, Firefox, Opera,
IE8, IE9 and mobile browsers (Android, Chrome Mobile, iOS Safari).
IE8, IE9 and mobile browsers (Android, Chrome Mobile, iOS Safari). See {@link guide/ie Internet
Explorer Compatibility} for more details in supporting legacy IE browsers.
### What's Angular's performance like?
+90 -88
View File
@@ -2,41 +2,42 @@
@name Tutorial
@description
A great way to get introduced to AngularJS is to work through this tutorial, which walks you through
the construction of an AngularJS web app. The app you will build is a catalog that displays a list
of Android devices, lets you filter the list to see only devices that interest you, and then view
details for any device.
<div class="tutorial-page tutorial-page-no-nav">
A great way to get introduced to AngularJS is to work through this tutorial, which walks you through
the construction of an AngularJS web app. The app you will build is a catalog that displays a list
of Android devices, lets you filter the list to see only devices that interest you, and then view
details for any device.
<img class="diagram" src="img/tutorial/catalog_screen.png" width="488" height="413">
<img class="diagram" src="img/tutorial/catalog_screen.png" width="488" height="413">
Work through the tutorial to see how Angular makes browsers smarter — without the use of extensions
or plug-ins. As you work through the tutorial, you will:
Work through the tutorial to see how Angular makes browsers smarter — without the use of extensions
or plug-ins. As you work through the tutorial, you will:
* See examples of how to use client-side data binding and dependency injection to build dynamic
views of data that change immediately in response to user actions.
* See how Angular creates listeners on your data without the need for DOM manipulation.
* Learn a better, easier way to test your web apps.
* Learn how to use Angular services to make common web tasks, such as getting data into your app,
easier.
* See examples of how to use client-side data binding and dependency injection to build dynamic
views of data that change immediately in response to user actions.
* See how Angular creates listeners on your data without the need for DOM manipulation.
* Learn a better, easier way to test your web apps.
* Learn how to use Angular services to make common web tasks, such as getting data into your app,
easier.
And all of this works in any browser without modification to the browser!
And all of this works in any browser without modification to the browser!
When you finish the tutorial you will be able to:
When you finish the tutorial you will be able to:
* Create a dynamic application that works in any browser.
* Define the differences between Angular and common JavaScript frameworks.
* Understand how data binding works in AngularJS.
* Use the angular-seed project to quickly boot-strap your own projects.
* Create and run tests.
* Identify resources for learning more about AngularJS.
* Create a dynamic application that works in any browser.
* Define the differences between Angular and common JavaScript frameworks.
* Understand how data binding works in AngularJS.
* Use the angular-seed project to quickly boot-strap your own projects.
* Create and run tests.
* Identify resources for learning more about AngularJS.
The tutorial guides you through the entire process of building a simple application, including
writing and running unit and end-to-end tests. Experiments at the end of each step provide
suggestions for you to learn more about AngularJS and the application you are building.
The tutorial guides you through the entire process of building a simple application, including
writing and running unit and end-to-end tests. Experiments at the end of each step provide
suggestions for you to learn more about AngularJS and the application you are building.
You can go through the whole tutorial in a couple of hours or you may want to spend a pleasant day
really digging into it. If you're looking for a shorter introduction to AngularJS, check out the
{@link misc/started Getting Started} document.
You can go through the whole tutorial in a couple of hours or you may want to spend a pleasant day
really digging into it. If you're looking for a shorter introduction to AngularJS, check out the
{@link misc/started Getting Started} document.
@@ -44,72 +45,73 @@ really digging into it. If you're looking for a shorter introduction to AngularJ
# Working with the code
# Working with the code
You can follow this tutorial and hack on the code in either the Mac/Linux or the Windows
environment. The tutorial relies on the use of Git versioning system for source code management.
You don't need to know anything about Git to follow the tutorial. Select one of the tabs below
and follow the instructions for setting up your computer.
You can follow this tutorial and hack on the code in either the Mac/Linux or the Windows
environment. The tutorial relies on the use of Git versioning system for source code management.
You don't need to know anything about Git to follow the tutorial. Select one of the tabs below
and follow the instructions for setting up your computer.
<div class="tabbable" show="true">
<div class="tab-pane well" id="git-mac" title="Git on Mac/Linux">
<ol>
<li><p>You will need Node.js and Testacular to run unit tests, so please verify that you have
<a href="http://nodejs.org/">Node.js</a> v0.8 or better installed
and that the <code>node</code> executable is on your <code>PATH</code> by running the following
command in a terminal window:</p>
<pre>node --version</pre>
<p>Additionally install <a href="http://vojtajina.github.com/testacular">Testacular</a> if you
don't have it already:</p>
<pre>npm install -g testacular</pre>
<li><p>You'll also need Git, which you can get from
<a href="http://git-scm.com/download">the Git site</a>.</p></li>
<li><p>Clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
<pre>git clone git://github.com/angular/angular-phonecat.git</pre>
<p>This command creates the <code>angular-phonecat</code> directory in your current
directory.</p></li>
<li><p>Change your current directory to <code>angular-phonecat</code>:</p>
<pre>cd angular-phonecat</pre>
<p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p></li>
<li><p>You will need an http server running on your system. Mac and Linux machines typically
have Apache pre-installed, but If you don't already have one installed, you can use <code>node</code>
to run <code>scripts/web-server.js</code>, a simple bundled http server.</p></li>
</ol>
</div>
<div class="tab-pane well" id="git-win" title="Git on Windows">
<ol>
<li><p>You will need Node.js and Testacular to run unit tests, so please verify that you have
<div class="tabbable" show="true">
<div class="tab-pane well" id="git-mac" title="Git on Mac/Linux">
<ol>
<li><p>You will need Node.js and Karma to run unit tests, so please verify that you have
<a href="http://nodejs.org/">Node.js</a> v0.8 or better installed
and that the <code>node</code> executable is on your <code>PATH</code> by running the following
command in a terminal window:</p>
<pre>node --version</pre>
<p>Additionally install <a href="http://vojtajina.github.com/testacular">Testacular</a> if you
don't have it already:</p>
<pre>npm install -g testacular</pre>
</li>
<li><p>You'll also need Git, which you can get from
<a href="http://git-scm.com/download">the Git site</a>.</p></li>
<li><p>Clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
<pre>git clone git://github.com/angular/angular-phonecat.git</pre>
<p>This command creates the angular-phonecat directory in your current directory.</p></li>
<li><p>Change your current directory to angular-phonecat.</p>
<pre>cd angular-phonecat</pre>
<p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p>
<p>You should run all <code>git</code> commands from Git bash.</p>
<p>Other commands like <code>test.bat</code> or <code>e2e-test.bat</code> should be
executed from the Windows command line.</li>
<li><p>You need an http server running on your system, but if you don't already have one
already installed, you can use <code>node</code> to run <code>scripts\web-server.js</code>, a simple
bundled http server.</p></li>
</ol>
</div>
<p>Additionally install <a href="http://karma-runner.github.io/">Karma</a> if you
don't have it already:</p>
<pre>npm install -g karma</pre>
<li><p>You'll also need Git, which you can get from
<a href="http://git-scm.com/download">the Git site</a>.</p></li>
<li><p>Clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
<pre>git clone git://github.com/angular/angular-phonecat.git</pre>
<p>This command creates the <code>angular-phonecat</code> directory in your current
directory.</p></li>
<li><p>Change your current directory to <code>angular-phonecat</code>:</p>
<pre>cd angular-phonecat</pre>
<p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p></li>
<li><p>You will need an http server running on your system. Mac and Linux machines typically
have Apache pre-installed, but If you don't already have one installed, you can use <code>node</code>
to run <code>scripts/web-server.js</code>, a simple bundled http server.</p></li>
</ol>
</div>
The last thing to do is to make sure your computer has a web browser and a good text editor
installed. Now, let's get some cool stuff done!
<div class="tab-pane well" id="git-win" title="Git on Windows">
<ol>
<li><p>You will need Node.js and Karma to run unit tests, so please verify that you have
<a href="http://nodejs.org/">Node.js</a> v0.8 or better installed
and that the <code>node</code> executable is on your <code>PATH</code> by running the following
command in a terminal window:</p>
<pre>node --version</pre>
<p>Additionally install <a href="http://karma-runner.github.io/">Karma</a> if you
don't have it already:</p>
<pre>npm install -g karma</pre>
</li>
<li><p>You'll also need Git, which you can get from
<a href="http://git-scm.com/download">the Git site</a>.</p></li>
<li><p>Clone the angular-phonecat repository located at <a
href="https://github.com/angular/angular-phonecat">Github</a> by running the following command:</p>
<pre>git clone git://github.com/angular/angular-phonecat.git</pre>
<p>This command creates the angular-phonecat directory in your current directory.</p></li>
<li><p>Change your current directory to angular-phonecat.</p>
<pre>cd angular-phonecat</pre>
<p>The tutorial instructions assume you are running all commands from the angular-phonecat
directory.</p>
<p>You should run all <code>git</code> commands from Git bash.</p>
<p>Other commands like <code>test.bat</code> or <code>e2e-test.bat</code> should be
executed from the Windows command line.</li>
<li><p>You need an http server running on your system, but if you don't already have one
already installed, you can use <code>node</code> to run <code>scripts\web-server.js</code>, a simple
bundled http server.</p></li>
</ol>
</div>
{@link step_00 <span class="btn btn-primary">Get Started!</span>}
The last thing to do is to make sure your computer has a web browser and a good text editor
installed. Now, let's get some cool stuff done!
{@link step_00 <span class="btn btn-primary">Get Started!</span>}
</div>
+7 -6
View File
@@ -146,24 +146,25 @@ http://pivotal.github.com/jasmine/ Jasmine home page} and on the {@link
https://github.com/pivotal/jasmine/wiki Jasmine wiki}.
The angular-seed project is pre-configured to run all unit tests using {@link
http://vojtajina.github.com/testacular/ Testacular}. To run the test, do the following:
http://karma-runner.github.io/ Karma}. To run the test, do the following:
1. In a _separate_ terminal window or tab, go to the `angular-phonecat` directory and run
`./scripts/test.sh` to start the Testacular server.
`./scripts/test.sh` to start the Karma server (the config file necessary to start the server
is located at `./config/karma.conf.js`).
2. Testacular will start a new instance of Chrome browser automatically. Just ignore it and let it run in
the background. Testacular will use this browser for test execution.
2. Karma will start a new instance of Chrome browser automatically. Just ignore it and let it run in
the background. Karma will use this browser for test execution.
3. You should see the following or similar output in the terminal:
info: Testacular server started at http://localhost:9876/
info: Karma server started at http://localhost:9876/
info (launcher): Starting browser "Chrome"
info (Chrome 22.0): Connected on socket id tPUm9DXcLHtZTKbAEO-n
Chrome 22.0: Executed 1 of 1 SUCCESS (0.093 secs / 0.004 secs)
Yay! The test passed! Or not...
4. To rerun the tests, just change any of the source or test files. Testacular will notice the change
4. To rerun the tests, just change any of the source or test files. Karma will notice the change
and will rerun the tests for you. Now isn't that sweet?
# Experiments
+2 -2
View File
@@ -122,9 +122,9 @@ To run the end-to-end test, open one of the following in a new browser tab:
`http://localhost:[port-number]/[context-path]/test/e2e/runner.html`
* casual reader: {@link http://angular.github.com/angular-phonecat/step-3/test/e2e/runner.html}
Previously we've seen how Testacular can be used to execute unit tests. Well, it can also run the
Previously we've seen how Karma can be used to execute unit tests. Well, it can also run the
end-to-end tests! Use `./scripts/e2e-test.sh` script for that. End-to-end tests are slow, so unlike
with unit tests, Testacular will exit after the test run and will not automatically rerun the test
with unit tests, Karma will exit after the test run and will not automatically rerun the test
suite on every file change. To rerun the test suite, execute the `e2e-test.sh` script again.
This test verifies that the search box and the repeater are correctly wired together. Notice how
+1 -1
View File
@@ -134,7 +134,7 @@ The unit test now verifies that the default ordering property is set.
We used Jasmine's API to extract the controller construction into a `beforeEach` block, which is
shared by all tests in the parent `describe` block.
You should now see the following output in the Testacular tab:
You should now see the following output in the Karma tab:
Chrome 22.0: Executed 2 of 2 SUCCESS (0.021 secs / 0.001 secs)
+4 -1
View File
@@ -138,6 +138,9 @@ describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
var scope, ctrl, $httpBackend;
// The injector ignores leading and trailing underscores here (i.e. _$httpBackend_).
// This allows us to inject a service but then attach it to a variable
// with the same name as the service.
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('phones/phones.json').
@@ -208,7 +211,7 @@ Finally, we verify that the default value of `orderProp` is set correctly:
});
</pre>
You should now see the following output in the Testacular tab:
You should now see the following output in the Karma tab:
Chrome 22.0: Executed 2 of 2 SUCCESS (0.028 secs / 0.007 secs)
+1 -1
View File
@@ -147,7 +147,7 @@ __`test/unit/controllersSpec.js`:__
...
</pre>
You should now see the following output in the Testacular tab:
You should now see the following output in the Karma tab:
Chrome 22.0: Executed 3 of 3 SUCCESS (0.039 secs / 0.012 secs)
+1 -1
View File
@@ -110,7 +110,7 @@ describe('filter', function() {
Note that you need to configure our test injector with the `phonecatFilters` module before any of
our filter tests execute.
You should now see the following output in the Testacular tab:
You should now see the following output in the Karma tab:
Chrome 22.0: Executed 4 of 4 SUCCESS (0.034 secs / 0.012 secs)
+1 -1
View File
@@ -214,7 +214,7 @@ describe('PhoneCat controllers', function() {
});
</pre>
You should now see the following output in the Testacular tab:
You should now see the following output in the Karma tab:
Chrome 22.0: Executed 4 of 4 SUCCESS (0.038 secs / 0.01 secs)
+14 -12
View File
@@ -2,20 +2,22 @@
@name Tutorial: The End
@description
Our application is now complete. Feel free to experiment with the code further, and jump back to
previous steps using the `git checkout` command.
<div class="tutorial-page tutorial-page-no-nav">
Our application is now complete. Feel free to experiment with the code further, and jump back to
previous steps using the `git checkout` command.
For more details and examples of the Angular concepts we touched on in this tutorial, see the
{@link guide/ Developer Guide}.
For more details and examples of the Angular concepts we touched on in this tutorial, see the
{@link guide/ Developer Guide}.
For several more examples of code, see the {@link cookbook/ Cookbook}.
For several more examples of code, see the {@link cookbook/ Cookbook}.
When you are ready to start developing a project using Angular, we recommend that you bootstrap
your development with the {@link https://github.com/angular/angular-seed angular-seed} project.
When you are ready to start developing a project using Angular, we recommend that you bootstrap
your development with the {@link https://github.com/angular/angular-seed angular-seed} project.
We hope this tutorial was useful to you and that you learned enough about Angular to make you want
to learn more. We especially hope you are inspired to go out and develop Angular web apps of your
own, and that you might be interested in {@link misc/contribute contributing} to Angular.
We hope this tutorial was useful to you and that you learned enough about Angular to make you want
to learn more. We especially hope you are inspired to go out and develop Angular web apps of your
own, and that you might be interested in {@link misc/contribute contributing} to Angular.
If you have questions or feedback or just want to say "hi", please post a message at {@link
https://groups.google.com/forum/#!forum/angular}.
If you have questions or feedback or just want to say "hi", please post a message at {@link
https://groups.google.com/forum/#!forum/angular}.
</div>
+1 -1
View File
@@ -32,7 +32,7 @@ writer.makeDir('build/docs/', true).then(function() {
});
}).then(function printStats() {
console.log('DONE. Generated ' + docs.length + ' pages in ' + (now()-start) + 'ms.' );
});
}).done();
function writeTheRest(writesFuture) {
+3 -3
View File
@@ -2,7 +2,7 @@
* All parsing/transformation code goes here. All code here should be sync to ease testing.
*/
var Showdown = require('../../lib/showdown').Showdown;
var Showdown = require('showdown');
var DOM = require('./dom.js').DOM;
var htmlEscape = require('./dom.js').htmlEscape;
var Example = require('./example.js').Example;
@@ -174,7 +174,7 @@ Doc.prototype = {
});
});
text = parts.join('');
text = new Showdown.converter().makeHtml(text);
text = new Showdown.converter({ extensions : ['table'] }).makeHtml(text);
text = text.replace(/(?:<p>)?(REPLACEME\d+)(?:<\/p>)?/g, function(_, id) {
return placeholderMap[id];
});
@@ -388,7 +388,7 @@ Doc.prototype = {
var restrict = self.restrict || 'AC';
if (restrict.match(/E/)) {
dom.text('This directive can be used as custom element, but we aware of ');
dom.text('This directive can be used as custom element, but be aware of ');
dom.tag('a', {href:'guide/ie'}, 'IE restrictions');
dom.text('.');
}
+12
View File
@@ -188,3 +188,15 @@ ul.events > li > h3 {
.clear {
clear: both;
}
.tutorial-page {
position:relative;
}
.tutorial-page-no-nav {
padding-top:50px;
}
.tutorial-page-no-nav .improve-docs {
position:absolute;
top:0;
right:0;
}
+2 -2
View File
@@ -7,7 +7,7 @@
headEl = document.head,
angularVersion = {
current: '"NG_VERSION_FULL"', // rewrite during build
stable: '"NG_VERSION_STABLE"'
cdn: '"NG_VERSION_CDN"'
};
addTag('script', {src: path('angular-scenario.js')}, function() {
@@ -34,7 +34,7 @@
function path(name) {
return production
? 'http://code.angularjs.org/' + angularVersion.stable + '/' + name
? 'http://code.angularjs.org/' + angularVersion.cdn + '/' + name
: '../' + name;
}
</script>
+3 -3
View File
@@ -27,7 +27,7 @@
sync = true,
angularVersion = {
current: '"NG_VERSION_FULL"', // rewrite during build
stable: '"NG_VERSION_STABLE"'
cdn: '"NG_VERSION_CDN"'
};
addTag('base', {href: baseUrl});
@@ -48,12 +48,12 @@
if (production) {
if (name.match(/^angular(-\w+)?\.js/) && !name.match(/bootstrap/)) {
name = '//ajax.googleapis.com/ajax/libs/angularjs/' +
angularVersion.stable +
angularVersion.cdn +
'/' +
name.replace(/\.js$/, '.min.js');
} else {
name = 'http://code.angularjs.org/' +
angularVersion.stable +
angularVersion.cdn +
'/' +
name.replace(/\.js$/, '.min.js');
}
+1 -1
View File
@@ -1,5 +1,5 @@
<!doctype html>
<html ng-app>
<html ng-app="personalLog">
<head>
<title>Personal Log</title>
<script src="../../src/loader.js"></script>
+11
View File
@@ -248,3 +248,14 @@ describe("pluralExtractor", function() {
})
});
describe("serializeContent", function() {
it("should not make any modifications to the content of the locale", function() {
var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo());
expect(eval("(" + serializedContent + ")")).toEqual(newTestLocaleInfo());
});
it("should only have ascii characters", function() {
var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo());
expect((/[^\u0001-\u007f]/).test(serializedContent)).toBe(false);
});
});
+8 -3
View File
@@ -9,6 +9,7 @@ exports.pluralExtractor = pluralExtractor;
exports.outputLocale = outputLocale;
exports.correctedLocaleId = correctedLocaleId;
exports.findLocaleId = findLocaleId;
exports.serializeContent = serializeContent;
var goog = { provide: function() {},
require: function() {},
@@ -125,6 +126,12 @@ function canonicalizeForJsonStringify(unused_key, object) {
return result;
}
function serializeContent(localeObj) {
return JSON.stringify(localeObj, canonicalizeForJsonStringify, ' ')
.replace(new RegExp('[\\u007f-\\uffff]', 'g'), function(c) { return '\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4); })
.replace(/"@@|@@"/g, '');
}
function outputLocale(localeInfo, localeID) {
var fallBackID = localeID.match(/[A-Za-z]+/)[0],
localeObj = localeInfo[localeID],
@@ -167,9 +174,7 @@ function outputLocale(localeInfo, localeID) {
id: localeObj.id
};
var content = JSON.stringify(localeInfo[localeID], canonicalizeForJsonStringify, ' ')
.replace(/\¤/g, '\\u00A4')
.replace(/"@@|@@"/g, '');
var content = serializeContent(localeInfo[localeID]);
return prefix + content + suffix;
}
+4 -4
View File
@@ -2,7 +2,7 @@
#
# Script to initialize angular repo
# - install required node packages
# - install Testacular
# - install Karma
# - install git hooks
@@ -22,10 +22,10 @@ fi
echo "Installing required npm packages..."
npm install
testacular=`which testacular 2>&1`
karma=`which karma 2>&1`
if [ $? -ne 0 ]; then
echo "Installing Testacular..."
npm install -g testacular
echo "Installing Karma..."
npm install -g karma
fi
echo "Installing git hooks..."
+8 -9
View File
@@ -1,6 +1,5 @@
var fs = require('fs');
var shell = require('shelljs');
var yaml = require('yaml-js');
var grunt = require('grunt');
var spawn = require('child_process').spawn;
@@ -12,8 +11,8 @@ module.exports = {
getVersion: function(){
var versionYaml = yaml.load(fs.readFileSync('version.yaml', 'UTF-8'));
var match = versionYaml.version.match(/^([^\-]*)(-snapshot)?$/);
var package = JSON.parse(fs.readFileSync('package.json', 'UTF-8'));
var match = package.version.match(/^([^\-]*)(-snapshot)?$/);
var semver = match[1].split('.');
var hash = shell.exec('git rev-parse --short HEAD', {silent: true}).output.replace('\n', '');
@@ -22,8 +21,8 @@ module.exports = {
major: semver[0],
minor: semver[1],
dot: semver[2],
codename: versionYaml.codename,
stable: versionYaml.stable
codename: package.codename,
cdn: package.cdnVersion
};
return version;
@@ -65,7 +64,7 @@ module.exports = {
var css = fs.readFileSync(file).toString();
if(minify){
css = css
.replace(/\n/g, '')
.replace(/\r?\n/g, '')
.replace(/\/\*.*?\*\//g, '')
.replace(/:\s+/g, ':')
.replace(/\s*\{\s*/g, '{')
@@ -73,11 +72,11 @@ module.exports = {
.replace(/\s*\,\s*/g, ',')
.replace(/\s*\;\s*/g, ';');
}
//espace for js
//escape for js
css = css
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/\n/g, '\\n');
.replace(/\r?\n/g, '\\n');
return "angular.element(document).find('head').append('<style type=\"text/css\">" + css + "</style>');";
}
},
@@ -89,7 +88,7 @@ module.exports = {
.replace(/"NG_VERSION_MAJOR"/, NG_VERSION.major)
.replace(/"NG_VERSION_MINOR"/, NG_VERSION.minor)
.replace(/"NG_VERSION_DOT"/, NG_VERSION.dot)
.replace(/"NG_VERSION_STABLE"/, NG_VERSION.stable)
.replace(/"NG_VERSION_CDN"/, NG_VERSION.cdn)
.replace(/"NG_VERSION_CODENAME"/, NG_VERSION.codename);
if (strict !== false) processed = this.singleStrict(processed, '\n\n', true);
return processed;
-7
View File
@@ -1,7 +0,0 @@
var fs = require('fs');
var vm = require('vm');
var filename = __dirname + '/showdown-0.9.js';
var src = fs.readFileSync(filename);
var Showdown = vm.runInThisContext(src + '\nShowdown;', filename);
exports.Showdown = Showdown;
File diff suppressed because it is too large Load Diff
+14 -5
View File
@@ -1,18 +1,27 @@
{
"name": "AngularJS",
"version": "0.0.0",
"dependencies": {
"version": "1.0.7",
"cdnVersion": "1.0.6",
"codename": "monochromatic-rainbow",
"devDependencies": {
"grunt": "0.4.0",
"grunt-contrib-clean": "0.4.0",
"grunt-contrib-compress": "0.4.1",
"grunt-contrib-connect": "0.1.2",
"grunt-contrib-copy": "0.4.0",
"grunt-contrib-copy": "0.4.1",
"jasmine-node": "1.2.3",
"q": "~0.9.2",
"q-fs": "0.1.36",
"qq": "0.3.5",
"shelljs": "0.1.2",
"karma": "0.8.4",
"yaml-js": "0.0.5"
}
"yaml-js": "0.0.5",
"showdown": "0.3.1"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/angular/angular.js/blob/master/LICENSE"
}
]
}
+48 -28
View File
@@ -61,6 +61,29 @@ var /** holds major version number for IE or NaN for real browsers */
nodeName_,
uid = ['0', '0', '0'];
/**
* @private
* @param {*} obj
* @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments, ...)
*/
function isArrayLike(obj) {
if (!obj || (typeof obj.length !== 'number')) return false;
// We have on object which has length property. Should we treat it as array?
if (typeof obj.hasOwnProperty != 'function' &&
typeof obj.constructor != 'function') {
// This is here for IE8: it is a bogus object treat it as array;
return true;
} else {
return obj instanceof JQLite || // JQLite
(jQuery && obj instanceof jQuery) || // jQuery
toString.call(obj) !== '[object Object]' || // some browser native object
typeof obj.callee === 'function'; // arguments (on IE8 looks like regular obj)
}
}
/**
* @ngdoc function
* @name angular.forEach
@@ -88,30 +111,6 @@ var /** holds major version number for IE or NaN for real browsers */
* @param {Object=} context Object to become context (`this`) for the iterator function.
* @returns {Object|Array} Reference to `obj`.
*/
/**
* @private
* @param {*} obj
* @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments, ...)
*/
function isArrayLike(obj) {
if (!obj || (typeof obj.length !== 'number')) return false;
// We have on object which has length property. Should we treat it as array?
if (typeof obj.hasOwnProperty != 'function' &&
typeof obj.constructor != 'function') {
// This is here for IE8: it is a bogus object treat it as array;
return true;
} else {
return obj instanceof JQLite || // JQLite
(jQuery && obj instanceof jQuery) || // jQuery
toString.call(obj) !== '[object Object]' || // some browser native object
typeof obj.callee === 'function'; // arguments (on IE8 looks like regular obj)
}
}
function forEach(obj, iterator, context) {
var key;
if (obj) {
@@ -195,6 +194,21 @@ function nextUid() {
return uid.join('');
}
/**
* Set or clear the hashkey for an object.
* @param obj object
* @param h the hashkey (!truthy to delete the hashkey)
*/
function setHashKey(obj, h) {
if (h) {
obj.$$hashKey = h;
}
else {
delete obj.$$hashKey;
}
}
/**
* @ngdoc function
* @name angular.extend
@@ -206,8 +220,10 @@ function nextUid() {
*
* @param {Object} dst Destination object.
* @param {...Object} src Source object(s).
* @returns {Object} Reference to `dst`.
*/
function extend(dst) {
var h = dst.$$hashKey;
forEach(arguments, function(obj){
if (obj !== dst) {
forEach(obj, function(value, key){
@@ -215,6 +231,8 @@ function extend(dst) {
});
}
});
setHashKey(dst,h);
return dst;
}
@@ -569,12 +587,14 @@ function copy(source, destination){
destination.push(copy(source[i]));
}
} else {
var h = destination.$$hashKey;
forEach(destination, function(value, key){
delete destination[key];
});
for ( var key in source) {
destination[key] = copy(source[key]);
}
setHashKey(destination,h);
}
}
return destination;
@@ -614,7 +634,7 @@ function shallowCopy(src, dst) {
* During a property comparision, properties of `function` type and properties with names
* that begin with `$` are ignored.
*
* Scope and DOMWindow objects are being compared only be identify (`===`).
* Scope and DOMWindow objects are being compared only by identify (`===`).
*
* @param {*} o1 Object or value to compare.
* @param {*} o2 Object or value to compare.
@@ -674,7 +694,7 @@ function sliceArgs(args, startIndex) {
*
* @description
* Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
* `fn`). You can supply optional `args` that are are prebound to the function. This feature is also
* `fn`). You can supply optional `args` that are prebound to the function. This feature is also
* known as [function currying](http://en.wikipedia.org/wiki/Currying).
*
* @param {Object} self Context which `fn` should be evaluated in.
@@ -867,7 +887,7 @@ function encodeUriQuery(val, pctEncodeSpaces) {
*
* @description
*
* Use this directive to auto-bootstrap on application. Only
* Use this directive to auto-bootstrap an application. Only
* one directive can be used per HTML document. The directive
* designates the root of the application and is typically placed
* at the root of the page.
@@ -1006,7 +1026,7 @@ function bindJQuery() {
}
/**
* throw error of the argument is falsy.
* throw error if the argument is falsy.
*/
function assertArg(arg, name, reason) {
if (!arg) {
+1 -1
View File
@@ -222,6 +222,6 @@
function isActuallyNaN(val) {
return (typeof val === 'number') && isNaN(val);
}
};
}
})(window, document);
+8 -8
View File
@@ -62,7 +62,7 @@ function annotate(fn) {
}
} else if (isArray(fn)) {
last = fn.length - 1;
assertArgFn(fn[last], 'fn')
assertArgFn(fn[last], 'fn');
$inject = fn.slice(0, last);
} else {
assertArgFn(fn, 'fn', true);
@@ -96,7 +96,7 @@ function annotate(fn) {
* # Injection Function Annotation
*
* JavaScript does not have annotations, and annotations are needed for dependency injection. The
* following ways are all valid way of annotating function with injection arguments and are equivalent.
* following are all valid ways of annotating function with injection arguments and are equivalent.
*
* <pre>
* // inferred (only works if code not minified/obfuscated)
@@ -225,7 +225,7 @@ function annotate(fn) {
* // ...
* };
* tmpFn.$inject = ['$compile', '$rootScope'];
* injector.invoke(tempFn);
* injector.invoke(tmpFn);
*
* // To better support inline function the inline annotation is supported
* injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
@@ -278,7 +278,7 @@ function annotate(fn) {
*
* beforeEach(module(function($provide) {
* $provide.provider('greet', GreetProvider);
* });
* }));
*
* it('should greet', inject(function(greet) {
* expect(greet('angular')).toEqual('Hello angular!');
@@ -291,9 +291,7 @@ function annotate(fn) {
* inject(function(greet) {
* expect(greet('angular')).toEqual('Ahoj angular!');
* });
* )};
*
* });
* });
* </pre>
*/
@@ -387,7 +385,7 @@ function annotate(fn) {
*
* @param {string} name The name of the service to decorate.
* @param {function()} decorator This function will be invoked when the service needs to be
* instanciated. The function is called using the {@link AUTO.$injector#invoke
* instantiated. The function is called using the {@link AUTO.$injector#invoke
* injector.invoke} method and is therefore fully injectable. Local injection arguments:
*
* * `$delegate` - The original service instance, which can be monkey patched, configured,
@@ -587,6 +585,8 @@ function createInjector(modulesToLoad) {
var Constructor = function() {},
instance, returnedValue;
// Check if Type is annotated and use just the given function at n-1 as parameter
// e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;
instance = new Constructor();
returnedValue = invoke(Type, instance, locals);
+8
View File
@@ -143,6 +143,14 @@ directive.tabbable = function() {
};
};
directive.table = function() {
return {
restrict: 'E',
link: function(scope, element, attrs) {
element[0].className = 'table table-bordered table-striped code-table';
}
};
};
directive.tabPane = function() {
return {
+40 -20
View File
@@ -32,18 +32,18 @@
* - [after()](http://api.jquery.com/after/)
* - [append()](http://api.jquery.com/append/)
* - [attr()](http://api.jquery.com/attr/)
* - [bind()](http://api.jquery.com/bind/)
* - [children()](http://api.jquery.com/children/)
* - [bind()](http://api.jquery.com/bind/) - Does not support namespaces
* - [children()](http://api.jquery.com/children/) - Does not support selectors
* - [clone()](http://api.jquery.com/clone/)
* - [contents()](http://api.jquery.com/contents/)
* - [css()](http://api.jquery.com/css/)
* - [data()](http://api.jquery.com/data/)
* - [eq()](http://api.jquery.com/eq/)
* - [find()](http://api.jquery.com/find/) - Limited to lookups by tag name.
* - [find()](http://api.jquery.com/find/) - Limited to lookups by tag name
* - [hasClass()](http://api.jquery.com/hasClass/)
* - [html()](http://api.jquery.com/html/)
* - [next()](http://api.jquery.com/next/)
* - [parent()](http://api.jquery.com/parent/)
* - [next()](http://api.jquery.com/next/) - Does not support selectors
* - [parent()](http://api.jquery.com/parent/) - Does not support selectors
* - [prepend()](http://api.jquery.com/prepend/)
* - [prop()](http://api.jquery.com/prop/)
* - [ready()](http://api.jquery.com/ready/)
@@ -55,7 +55,7 @@
* - [text()](http://api.jquery.com/text/)
* - [toggleClass()](http://api.jquery.com/toggleClass/)
* - [triggerHandler()](http://api.jquery.com/triggerHandler/) - Doesn't pass native event objects to handlers.
* - [unbind()](http://api.jquery.com/unbind/)
* - [unbind()](http://api.jquery.com/unbind/) - Does not support namespaces
* - [val()](http://api.jquery.com/val/)
* - [wrap()](http://api.jquery.com/wrap/)
*
@@ -602,23 +602,43 @@ forEach({
if (!eventFns) {
if (type == 'mouseenter' || type == 'mouseleave') {
var counter = 0;
var contains = document.body.contains || document.body.compareDocumentPosition ?
function( a, b ) {
var adown = a.nodeType === 9 ? a.documentElement : a,
bup = b && b.parentNode;
return a === bup || !!( bup && bup.nodeType === 1 && (
adown.contains ?
adown.contains( bup ) :
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
));
} :
function( a, b ) {
if ( b ) {
while ( (b = b.parentNode) ) {
if ( b === a ) {
return true;
}
}
}
return false;
};
events.mouseenter = [];
events.mouseleave = [];
events[type] = [];
// Refer to jQuery's implementation of mouseenter & mouseleave
// Read about mouseenter and mouseleave:
// http://www.quirksmode.org/js/events_mouse.html#link8
var eventmap = { mouseleave : "mouseout", mouseenter : "mouseover"}
bindFn(element, eventmap[type], function(event) {
var ret, target = this, related = event.relatedTarget;
// For mousenter/leave call the handler if related is outside the target.
// NB: No relatedTarget if the mouse left/entered the browser window
if ( !related || (related !== target && !contains(target, related)) ){
handle(event, type);
}
bindFn(element, 'mouseover', function(event) {
counter++;
if (counter == 1) {
handle(event, 'mouseenter');
}
});
bindFn(element, 'mouseout', function(event) {
counter --;
if (counter == 0) {
handle(event, 'mouseleave');
}
});
} else {
addEventListenerFn(element, type, handle);
events[type] = [];
+7 -1
View File
@@ -297,7 +297,13 @@ function Browser(window, document, $log, $sniffer) {
cookie = cookieArray[i];
index = cookie.indexOf('=');
if (index > 0) { //ignore nameless cookies
lastCookies[unescape(cookie.substring(0, index))] = unescape(cookie.substring(index + 1));
var name = unescape(cookie.substring(0, index));
// the first value that is seen for a cookie is the most
// specific one. values for the same cookie name that
// follow are for less specific paths.
if (lastCookies[name] === undefined) {
lastCookies[name] = unescape(cookie.substring(index + 1));
}
}
}
}
+9 -9
View File
@@ -569,9 +569,9 @@ function $CompileProvider($provide) {
/**
* Once the directives have been collected their compile functions is executed. This method
* Once the directives have been collected, their compile functions are executed. This method
* is responsible for inlining directive templates as well as terminating the application
* of the directives if the terminal directive has been reached..
* of the directives if the terminal directive has been reached.
*
* @param {Array} directives Array of collected directives to execute their compile function.
* this needs to be pre-sorted by priority order.
@@ -579,11 +579,11 @@ function $CompileProvider($provide) {
* @param {Object} templateAttrs The shared attribute function
* @param {function(angular.Scope[, cloneAttachFn]} transcludeFn A linking function, where the
* scope argument is auto-generated to the new child of the transcluded parent scope.
* @param {DOMElement} $rootElement If we are working on the root of the compile tree then this
* argument has the root jqLite array so that we can replace widgets on it.
* @param {JQLite} jqCollection If we are working on the root of the compile tree then this
* argument has the root jqLite array so that we can replace nodes on it.
* @returns linkFn
*/
function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn, $rootElement) {
function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn, jqCollection) {
var terminalPriority = -Number.MAX_VALUE,
preLinkFns = [],
postLinkFns = [],
@@ -637,7 +637,7 @@ function $CompileProvider($provide) {
$compileNode = templateAttrs.$$element =
jqLite(document.createComment(' ' + directiveName + ': ' + templateAttrs[directiveName] + ' '));
compileNode = $compileNode[0];
replaceWith($rootElement, jqLite($template[0]), compileNode);
replaceWith(jqCollection, jqLite($template[0]), compileNode);
childTranscludeFn = compile($template, transcludeFn, terminalPriority);
} else {
$template = jqLite(JQLiteClone(compileNode)).contents();
@@ -661,7 +661,7 @@ function $CompileProvider($provide) {
throw new Error(MULTI_ROOT_TEMPLATE_ERROR + directiveValue);
}
replaceWith($rootElement, $compileNode, compileNode);
replaceWith(jqCollection, $compileNode, compileNode);
var newTemplateAttrs = {$attr: {}};
@@ -689,7 +689,7 @@ function $CompileProvider($provide) {
assertNoDuplicate('template', templateDirective, directive, $compileNode);
templateDirective = directive;
nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i),
nodeLinkFn, $compileNode, templateAttrs, $rootElement, directive.replace,
nodeLinkFn, $compileNode, templateAttrs, jqCollection, directive.replace,
childTranscludeFn);
ii = directives.length;
} else if (directive.compile) {
@@ -822,7 +822,7 @@ function $CompileProvider($provide) {
parentGet = $parse(attrs[attrName]);
scope[scopeName] = function(locals) {
return parentGet(parentScope, locals);
}
};
break;
}
+19 -10
View File
@@ -85,8 +85,8 @@ var inputType = {
*
* @param {string} ngModel Assignable angular expression to data-bind to.
* @param {string=} name Property name of the form under which the control is published.
* @param {string=} min Sets the `min` validation error key if the value entered is less then `min`.
* @param {string=} max Sets the `max` validation error key if the value entered is greater then `min`.
* @param {string=} min Sets the `min` validation error key if the value entered is less than `min`.
* @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`.
* @param {string=} required Sets `required` validation error key if the value is not entered.
* @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
* the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
@@ -398,6 +398,15 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
} else {
var timeout;
var deferListener = function() {
if (!timeout) {
timeout = $browser.defer(function() {
listener();
timeout = null;
});
}
};
element.bind('keydown', function(event) {
var key = event.keyCode;
@@ -405,16 +414,16 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
// command modifiers arrows
if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return;
if (!timeout) {
timeout = $browser.defer(function() {
listener();
timeout = null;
});
}
deferListener();
});
// if user paste into input using mouse, we need "change" event to catch it
element.bind('change', listener);
// if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it
if ($sniffer.hasEvent('paste')) {
element.bind('paste cut', deferListener);
}
}
@@ -713,7 +722,7 @@ function checkboxInputType(scope, element, attr, ctrl) {
<tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br>
<tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br>
<tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br>
<tt>myForm.userName.$error = {{myForm.lastName.$error}}</tt><br>
<tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br>
<tt>myForm.$valid = {{myForm.$valid}}</tt><br>
<tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
<tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br>
@@ -976,7 +985,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
* For example {@link ng.directive:input input} or
* {@link ng.directive:select select} directives call it.
*
* It internally calls all `formatters` and if resulted value is valid, updates the model and
* It internally calls all `parsers` and if resulted value is valid, updates the model and
* calls all registered change listeners.
*
* @param {string} value Value from the view.
+1 -1
View File
@@ -12,7 +12,7 @@
* Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
* `{{ expression }}` which is similar but less verbose.
*
* Once scenario in which the use of `ngBind` is prefered over `{{ expression }}` binding is when
* One scenario in which the use of `ngBind` is preferred over `{{ expression }}` binding is when
* it's desirable to put bindings into template that is momentarily displayed by the browser in its
* raw state before Angular compiles it. Since `ngBind` is an element attribute, it makes the
* bindings invisible to the user while the page is loading.
+6 -6
View File
@@ -15,9 +15,9 @@ function classDirective(name, selector) {
if (name !== 'ngClass') {
scope.$watch('$index', function($index, old$index) {
var mod = $index % 2;
if (mod !== old$index % 2) {
if (mod == selector) {
var mod = $index & 1;
if (mod !== old$index & 1) {
if (mod === selector) {
addClass(scope.$eval(attr[name]));
} else {
removeClass(scope.$eval(attr[name]));
@@ -29,12 +29,12 @@ function classDirective(name, selector) {
function ngClassWatchAction(newVal) {
if (selector === true || scope.$index % 2 === selector) {
if (oldVal && (newVal !== oldVal)) {
if (oldVal && !equals(newVal,oldVal)) {
removeClass(oldVal);
}
addClass(newVal);
}
oldVal = newVal;
oldVal = copy(newVal);
}
@@ -160,7 +160,7 @@ var ngClassOddDirective = classDirective('Odd', 0);
* @name ng.directive:ngClassEven
*
* @description
* The `ngClassOdd` and `ngClassEven` works exactly as
* The `ngClassOdd` and `ngClassEven` directives work exactly as
* {@link ng.directive:ngClass ngClass}, except it works in
* conjunction with `ngRepeat` and takes affect only on odd (even) rows.
*
+1 -2
View File
@@ -15,8 +15,7 @@
* * Controller — The `ngController` directive specifies a Controller class; the class has
* methods that typically express the business logic behind the application.
*
* Note that an alternative way to define controllers is via the `{@link ng.$route}`
* service.
* Note that an alternative way to define controllers is via the {@link ng.$route $route} service.
*
* @element ANY
* @scope
+24 -8
View File
@@ -5,16 +5,32 @@
* @name ng.directive:ngCsp
* @priority 1000
*
* @element html
* @description
* Enables [CSP (Content Security Policy)](https://developer.mozilla.org/en/Security/CSP) support.
* This directive should be used on the root element of the application (typically the `<html>`
* element or other element with the {@link ng.directive:ngApp ngApp}
* directive).
*
* If enabled the performance of template expression evaluator will suffer slightly, so don't enable
* this mode unless you need it.
*
* @element html
*
* This is necessary when developing things like Google Chrome Extensions.
*
* CSP forbids apps to use `eval` or `Function(string)` generated functions (among other things).
* For us to be compatible, we just need to implement the "getterFn" in $parse without violating
* any of these restrictions.
*
* AngularJS uses `Function(string)` generated functions as a speed optimization. By applying `ngCsp`
* it is be possible to opt into the CSP compatible mode. When this mode is on AngularJS will
* evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will
* be raised.
*
* In order to use this feature put `ngCsp` directive on the root element of the application.
*
* @example
* This example shows how to apply the `ngCsp` directive to the `html` tag.
<pre>
<!doctype html>
<html ng-app ng-csp>
...
...
</html>
</pre>
*/
var ngCspDirective = ['$sniffer', function($sniffer) {
+1 -1
View File
@@ -194,7 +194,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
if (!isNaN(value)) {
//if explicit number rule such as 1, 2, 3... is defined, just use it. Otherwise,
//check it against pluralization rules in $locale service
if (!whens[value]) value = $locale.pluralCat(value - offset);
if (!(value in whens)) value = $locale.pluralCat(value - offset);
return whensExpFns[value](scope, element, true);
} else {
return '';
+12 -9
View File
@@ -27,7 +27,8 @@
* `select` model to be bound to a non-string value. This is because an option element can currently
* be bound to string values only.
*
* @param {string} name assignable expression to data-bind to.
* @param {string} ngModel Assignable angular expression to data-bind to.
* @param {string=} name Property name of the form under which the control is published.
* @param {string=} required The control is considered valid only if value is entered.
* @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
* the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
@@ -394,10 +395,6 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
if (multiple) {
selectedSet = new HashMap(modelValue);
} else if (modelValue === null || nullOption) {
// if we are not multiselect, and we are null then we have to add the nullOption
optionGroups[''].push({selected:modelValue === null, id:'', label:''});
selectedSet = true;
}
// We now build up the list of options we need (we merge later)
@@ -422,9 +419,14 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
selected: selected // determine if we should be selected
});
}
if (!multiple && !selectedSet) {
// nothing was selected, we have to insert the undefined item
optionGroups[''].unshift({id:'?', label:'', selected:true});
if (!multiple) {
if (nullOption || modelValue === null) {
// insert null option if we have a placeholder, or the model is null
optionGroups[''].unshift({id:'', label:'', selected:!selectedSet});
} else if (!selectedSet) {
// option could not be found, we have to insert the undefined item
optionGroups[''].unshift({id:'?', label:'', selected:true});
}
}
// Now we need to update the list of DOM nodes to match the optionGroups we computed above
@@ -468,7 +470,8 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
if (existingOption.id !== option.id) {
lastElement.val(existingOption.id = option.id);
}
if (existingOption.element.selected !== option.selected) {
// lastElement.prop('selected') provided by jQuery has side-effects
if (lastElement[0].selected !== option.selected) {
lastElement.prop('selected', (existingOption.selected = option.selected));
}
} else {
+1 -1
View File
@@ -19,7 +19,7 @@
*
*/
function $ExceptionHandlerProvider() {
this.$get = ['$log', function($log){
this.$get = ['$log', function($log) {
return function(exception, cause) {
$log.error.apply($log, arguments);
};
+1 -1
View File
@@ -69,7 +69,7 @@
*
* The general syntax in templates is as follows:
*
* {{ expression | [ filter_name ] }}
* {{ expression [| filter_name[:parameter_value] ... ] }}
*
* @param {String} name Name of the filter function to retrieve
* @return {Function} the filter function
+1 -1
View File
@@ -52,7 +52,7 @@
<hr>
Any: <input ng-model="search.$"> <br>
Name only <input ng-model="search.name"><br>
Phone only <input ng-model="search.phone"å><br>
Phone only <input ng-model="search.phone"><br>
<table id="searchObjResults">
<tr><th>Name</th><th>Phone</th></tr>
<tr ng-repeat="friend in friends | filter:search">
+2 -1
View File
@@ -192,6 +192,7 @@ function padNumber(num, digits, trim) {
function dateGetter(name, size, offset, trim) {
offset = offset || 0;
return function(date) {
var value = date['get' + name]();
if (offset > 0 || value > -offset)
@@ -302,7 +303,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
* (e.g. `"h o''clock"`).
*
* @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.SSSZ and it's
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.SSSZ and its
* shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
* specified in the string input, the time is considered to be in the local timezone.
* @param {string=} format Formatting rules (see Description). If not specified,
+40 -40
View File
@@ -145,7 +145,7 @@ function $HttpProvider() {
*
* @description
* The `$http` service is a core Angular service that facilitates communication with the remote
* HTTP servers via browser's {@link https://developer.mozilla.org/en/xmlhttprequest
* HTTP servers via the browser's {@link https://developer.mozilla.org/en/xmlhttprequest
* XMLHttpRequest} object or via {@link http://en.wikipedia.org/wiki/JSONP JSONP}.
*
* For unit testing applications that use `$http` service, see
@@ -155,13 +155,13 @@ function $HttpProvider() {
* $resource} service.
*
* The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
* the $q service. While for simple usage patters this doesn't matter much, for advanced usage,
* it is important to familiarize yourself with these apis and guarantees they provide.
* the $q service. While for simple usage patterns this doesn't matter much, for advanced usage
* it is important to familiarize yourself with these APIs and the guarantees they provide.
*
*
* # General usage
* The `$http` service is a function which takes a single argument — a configuration object —
* that is used to generate an http request and returns a {@link ng.$q promise}
* that is used to generate an HTTP request and returns a {@link ng.$q promise}
* with two $http specific methods: `success` and `error`.
*
* <pre>
@@ -176,21 +176,21 @@ function $HttpProvider() {
* });
* </pre>
*
* Since the returned value of calling the $http function is a Promise object, you can also use
* Since the returned value of calling the $http function is a `promise`, you can also use
* the `then` method to register callbacks, and these callbacks will receive a single argument
* an object representing the response. See the api signature and type info below for more
* an object representing the response. See the API signature and type info below for more
* details.
*
* A response status code that falls in the [200, 300) range is considered a success status and
* A response status code between 200 and 299 is considered a success status and
* will result in the success callback being called. Note that if the response is a redirect,
* XMLHttpRequest will transparently follow it, meaning that the error callback will not be
* called for such responses.
*
* # Shortcut methods
*
* Since all invocation of the $http service require definition of the http method and url and
* POST and PUT requests require response body/data to be provided as well, shortcut methods
* were created to simplify using the api:
* Since all invocations of the $http service require passing in an HTTP method and URL, and
* POST/PUT requests require request data to be provided as well, shortcut methods
* were created:
*
* <pre>
* $http.get('/someUrl').success(successCallback);
@@ -209,25 +209,25 @@ function $HttpProvider() {
*
* # Setting HTTP Headers
*
* The $http service will automatically add certain http headers to all requests. These defaults
* The $http service will automatically add certain HTTP headers to all requests. These defaults
* can be fully configured by accessing the `$httpProvider.defaults.headers` configuration
* object, which currently contains this default configuration:
*
* - `$httpProvider.defaults.headers.common` (headers that are common for all requests):
* - `Accept: application/json, text/plain, * / *`
* - `X-Requested-With: XMLHttpRequest`
* - `$httpProvider.defaults.headers.post`: (header defaults for HTTP POST requests)
* - `$httpProvider.defaults.headers.post`: (header defaults for POST requests)
* - `Content-Type: application/json`
* - `$httpProvider.defaults.headers.put` (header defaults for HTTP PUT requests)
* - `$httpProvider.defaults.headers.put` (header defaults for PUT requests)
* - `Content-Type: application/json`
*
* To add or overwrite these defaults, simply add or remove a property from this configuration
* To add or overwrite these defaults, simply add or remove a property from these configuration
* objects. To add headers for an HTTP method other than POST or PUT, simply add a new object
* with name equal to the lower-cased http method name, e.g.
* with the lowercased HTTP method name as the key, e.g.
* `$httpProvider.defaults.headers.get['My-Header']='value'`.
*
* Additionally, the defaults can be set at runtime via the `$http.defaults` object in a similar
* fassion as described above.
* Additionally, the defaults can be set at runtime via the `$http.defaults` object in the same
* fashion.
*
*
* # Transforming Requests and Responses
@@ -237,36 +237,36 @@ function $HttpProvider() {
*
* Request transformations:
*
* - if the `data` property of the request config object contains an object, serialize it into
* - If the `data` property of the request configuration object contains an object, serialize it into
* JSON format.
*
* Response transformations:
*
* - if XSRF prefix is detected, strip it (see Security Considerations section below)
* - if json response is detected, deserialize it using a JSON parser
* - If XSRF prefix is detected, strip it (see Security Considerations section below).
* - If JSON response is detected, deserialize it using a JSON parser.
*
* To globally augment or override the default transforms, modify the `$httpProvider.defaults.transformRequest` and
* `$httpProvider.defaults.transformResponse` properties of the `$httpProvider`. These properties are by default an
* `$httpProvider.defaults.transformResponse` properties. These properties are by default an
* array of transform functions, which allows you to `push` or `unshift` a new transformation function into the
* transformation chain. You can also decide to completely override any default transformations by assigning your
* transformation functions to these properties directly without the array wrapper.
*
* Similarly, to locally override the request/response transforms, augment the `transformRequest` and/or
* `transformResponse` properties of the config object passed into `$http`.
* `transformResponse` properties of the configuration object passed into `$http`.
*
*
* # Caching
*
* To enable caching set the configuration property `cache` to `true`. When the cache is
* To enable caching, set the configuration property `cache` to `true`. When the cache is
* enabled, `$http` stores the response from the server in local cache. Next time the
* response is served from the cache without sending a request to the server.
*
* Note that even if the response is served from cache, delivery of the data is asynchronous in
* the same way that real requests are.
*
* If there are multiple GET requests for the same url that should be cached using the same
* If there are multiple GET requests for the same URL that should be cached using the same
* cache, but the cache is not populated yet, only one request to the server will be made and
* the remaining requests will be fulfilled using the response for the first request.
* the remaining requests will be fulfilled using the response from the first request.
*
*
* # Response interceptors
@@ -318,7 +318,7 @@ function $HttpProvider() {
* When designing web applications, consider security threats from:
*
* - {@link http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx
* JSON Vulnerability}
* JSON vulnerability}
* - {@link http://en.wikipedia.org/wiki/Cross-site_request_forgery XSRF}
*
* Both server and the client must cooperate in order to eliminate these threats. Angular comes
@@ -328,8 +328,8 @@ function $HttpProvider() {
* ## JSON Vulnerability Protection
*
* A {@link http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx
* JSON Vulnerability} allows third party web-site to turn your JSON resource URL into
* {@link http://en.wikipedia.org/wiki/JSON#JSONP JSONP} request under some conditions. To
* JSON vulnerability} allows third party website to turn your JSON resource URL into
* {@link http://en.wikipedia.org/wiki/JSONP JSONP} request under some conditions. To
* counter this your server can prefix all JSON requests with following string `")]}',\n"`.
* Angular will automatically strip the prefix before processing it as JSON.
*
@@ -350,19 +350,19 @@ function $HttpProvider() {
* ## Cross Site Request Forgery (XSRF) Protection
*
* {@link http://en.wikipedia.org/wiki/Cross-site_request_forgery XSRF} is a technique by which
* an unauthorized site can gain your user's private data. Angular provides following mechanism
* an unauthorized site can gain your user's private data. Angular provides a mechanism
* to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie
* called `XSRF-TOKEN` and sets it as the HTTP header `X-XSRF-TOKEN`. Since only JavaScript that
* runs on your domain could read the cookie, your server can be assured that the XHR came from
* JavaScript running on your domain.
*
* To take advantage of this, your server needs to set a token in a JavaScript readable session
* cookie called `XSRF-TOKEN` on first HTTP GET request. On subsequent non-GET requests the
* cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the
* server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure
* that only JavaScript running on your domain could have read the token. The token must be
* unique for each user and must be verifiable by the server (to prevent the JavaScript making
* that only JavaScript running on your domain could have sent the request. The token must be
* unique for each user and must be verifiable by the server (to prevent the JavaScript from making
* up its own tokens). We recommend that the token is a digest of your site's authentication
* cookie with {@link http://en.wikipedia.org/wiki/Rainbow_table salt for added security}.
* cookie with a {@link https://en.wikipedia.org/wiki/Salt_(cryptography) salt} for added security.
*
*
* @param {object} config Object describing the request to be made and how it should be
@@ -540,7 +540,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `GET` request
* Shortcut method to perform `GET` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request
* @param {Object=} config Optional configuration object
@@ -553,7 +553,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `DELETE` request
* Shortcut method to perform `DELETE` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request
* @param {Object=} config Optional configuration object
@@ -566,7 +566,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `HEAD` request
* Shortcut method to perform `HEAD` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request
* @param {Object=} config Optional configuration object
@@ -579,7 +579,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `JSONP` request
* Shortcut method to perform `JSONP` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request.
* Should contain `JSON_CALLBACK` string.
@@ -594,7 +594,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `POST` request
* Shortcut method to perform `POST` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request
* @param {*} data Request content
@@ -608,7 +608,7 @@ function $HttpProvider() {
* @methodOf ng.$http
*
* @description
* Shortcut method to perform `PUT` request
* Shortcut method to perform `PUT` request.
*
* @param {string} url Relative or absolute URL specifying the destination of the request
* @param {*} data Request content
@@ -660,7 +660,7 @@ function $HttpProvider() {
/**
* Makes the request
* Makes the request.
*
* !!! ACCESSES CLOSURE VARS:
* $httpBackend, $config, $log, $rootScope, defaultCache, $http.pendingRequests
+4
View File
@@ -577,6 +577,10 @@ function $LocationProvider(){
// update $location when $browser url changes
$browser.onUrlChange(function(newUrl) {
if ($location.absUrl() != newUrl) {
if ($rootScope.$broadcast('$locationChangeStart', newUrl, $location.absUrl()).defaultPrevented) {
$browser.url($location.absUrl());
return;
}
$rootScope.$evalAsync(function() {
var oldUrl = $location.absUrl();
+16 -17
View File
@@ -154,10 +154,10 @@ function lex(text, csp){
function readIdent() {
var ident = "",
start = index,
lastDot, peekIndex, methodName;
lastDot, peekIndex, methodName, ch;
while (index < text.length) {
var ch = text.charAt(index);
ch = text.charAt(index);
if (ch == '.' || isIdent(ch) || isNumber(ch)) {
if (ch == '.') lastDot = index;
ident += ch;
@@ -171,7 +171,7 @@ function lex(text, csp){
if (lastDot) {
peekIndex = index;
while(peekIndex < text.length) {
var ch = text.charAt(peekIndex);
ch = text.charAt(peekIndex);
if (ch == '(') {
methodName = ident.substr(lastDot - start + 1);
ident = ident.substr(0, lastDot - start);
@@ -424,8 +424,8 @@ function parser(text, json, $filter, csp){
text.substring(0, token.index) + "] can not be assigned to", token);
}
right = logicalOR();
return function(self, locals){
return left.assign(self, right(self, locals), locals);
return function(scope, locals){
return left.assign(scope, right(scope, locals), locals);
};
} else {
return left;
@@ -542,12 +542,12 @@ function parser(text, json, $filter, csp){
var field = expect().text;
var getter = getterFn(field, csp);
return extend(
function(self, locals) {
return getter(object(self, locals), locals);
function(scope, locals, self) {
return getter(self || object(scope, locals), locals);
},
{
assign:function(self, value, locals) {
return setter(object(self, locals), field, value);
assign:function(scope, value, locals) {
return setter(object(scope, locals), field, value);
}
}
);
@@ -588,14 +588,14 @@ function parser(text, json, $filter, csp){
} while (expect(','));
}
consume(')');
return function(self, locals){
return function(scope, locals){
var args = [],
context = contextGetter ? contextGetter(self, locals) : self;
context = contextGetter ? contextGetter(scope, locals) : scope;
for ( var i = 0; i < argsFn.length; i++) {
args.push(argsFn[i](self, locals));
args.push(argsFn[i](scope, locals));
}
var fnPtr = fn(self, locals) || noop;
var fnPtr = fn(scope, locals, context) || noop;
// IE stupidity!
return fnPtr.apply
? fnPtr.apply(context, args)
@@ -637,8 +637,7 @@ function parser(text, json, $filter, csp){
var object = {};
for ( var i = 0; i < keyValues.length; i++) {
var keyValue = keyValues[i];
var value = keyValue.value(self, locals);
object[keyValue.key] = value;
object[keyValue.key] = keyValue.value(self, locals);
}
return object;
};
@@ -760,7 +759,7 @@ function cspSafeGetterFn(key0, key1, key2, key3, key4) {
}
return pathVal;
};
};
}
function getterFn(path, csp) {
if (getterFnCache.hasOwnProperty(path)) {
@@ -775,7 +774,7 @@ function getterFn(path, csp) {
fn = (pathKeysLength < 6)
? cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4])
: function(scope, locals) {
var i = 0, val
var i = 0, val;
do {
val = cspSafeGetterFn(
pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++]
+2 -5
View File
@@ -121,7 +121,7 @@
* models and avoiding unnecessary browser repaints, which would result in flickering UI.
* - $q promises are recognized by the templating engine in angular, which means that in templates
* you can treat promises attached to a scope as if they were the resulting values.
* - Q has many more features that $q, but that comes at a cost of bytes. $q is tiny, but contains
* - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains
* all the important functionality needed for common async tasks.
*
* # Testing
@@ -316,10 +316,7 @@ function qFactory(nextTick, exceptionHandler) {
* the promise comes from a source that can't be trusted.
*
* @param {*} value Value or a promise
* @returns {Promise} Returns a single promise that will be resolved with an array of values,
* each value corresponding to the promise at the same index in the `promises` array. If any of
* the promises is resolved with a rejection, this resulting promise will be resolved with the
* same rejection.
* @returns {Promise} Returns a promise of the passed value or promise
*/
var when = function(value, callback, errback) {
var result = defer(),
+9 -9
View File
@@ -3,22 +3,22 @@
/**
* DESIGN NOTES
*
* The design decisions behind the scope ware heavily favored for speed and memory consumption.
* The design decisions behind the scope are heavily favored for speed and memory consumption.
*
* The typical use of scope is to watch the expressions, which most of the time return the same
* value as last time so we optimize the operation.
*
* Closures construction is expensive from speed as well as memory:
* - no closures, instead ups prototypical inheritance for API
* Closures construction is expensive in terms of speed as well as memory:
* - No closures, instead use prototypical inheritance for API
* - Internal state needs to be stored on scope directly, which means that private state is
* exposed as $$____ properties
*
* Loop operations are optimized by using while(count--) { ... }
* - this means that in order to keep the same order of execution as addition we have to add
* items to the array at the begging (shift) instead of at the end (push)
* items to the array at the beginning (shift) instead of at the end (push)
*
* Child scopes are created and removed often
* - Using array would be slow since inserts in meddle are expensive so we use linked list
* - Using an array would be slow since inserts in middle are expensive so we use linked list
*
* There are few watches then a lot of observers. This is why you don't want the observer to be
* implemented in the same way as watch. Watch requires return of initialization function which
@@ -40,7 +40,7 @@
* @methodOf ng.$rootScopeProvider
* @description
*
* Sets the number of digest iteration the scope should attempt to execute before giving up and
* Sets the number of digest iterations the scope should attempt to execute before giving up and
* assuming that the model is unstable.
*
* The current default is 10 iterations.
@@ -320,7 +320,7 @@ function $RootScopeProvider(){
* @function
*
* @description
* Process all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and its children.
* Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and its children.
* Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change the model, the
* `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers} until no more listeners are
* firing. This means that it is possible to get into an infinite loop. This function will throw
@@ -662,7 +662,7 @@ function $RootScopeProvider(){
* Afterwards, the event traverses upwards toward the root scope and calls all registered
* listeners along the way. The event will stop propagating if one of the listeners cancels it.
*
* Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed
* Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
*
* @param {string} name Event name to emit.
@@ -731,7 +731,7 @@ function $RootScopeProvider(){
* Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
*
* @param {string} name Event name to emit.
* @param {string} name Event name to broadcast.
* @param {...*} args Optional set of arguments which will be passed onto the event listeners.
* @return {Object} Event object, see {@link ng.$rootScope.Scope#$on}
*/
+5 -5
View File
@@ -17,17 +17,17 @@ function $TimeoutProvider() {
* block and delegates any exceptions to
* {@link ng.$exceptionHandler $exceptionHandler} service.
*
* The return value of registering a timeout function is a promise which will be resolved when
* The return value of registering a timeout function is a promise, which will be resolved when
* the timeout is reached and the timeout function is executed.
*
* To cancel a the timeout request, call `$timeout.cancel(promise)`.
* To cancel a timeout request, call `$timeout.cancel(promise)`.
*
* In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to
* synchronously flush the queue of deferred functions.
*
* @param {function()} fn A function, who's execution should be delayed.
* @param {function()} fn A function, whose execution should be delayed.
* @param {number=} [delay=0] Delay in milliseconds.
* @param {boolean=} [invokeApply=true] If set to false skips model dirty checking, otherwise
* @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
* will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
* @returns {Promise} Promise that will be resolved when the timeout is reached. The value this
* promise will be resolved with is the return value of the `fn` function.
@@ -67,7 +67,7 @@ function $TimeoutProvider() {
* @methodOf ng.$timeout
*
* @description
* Cancels a task associated with the `promise`. As a result of this the promise will be
* Cancels a task associated with the `promise`. As a result of this, the promise will be
* resolved with a rejection.
*
* @param {Promise=} promise Promise returned by the `$timeout` function.
+15 -2
View File
@@ -16,10 +16,23 @@
* @example
<doc:example>
<doc:source>
<input ng-init="$window = $service('$window'); greeting='Hello World!'" type="text" ng-model="greeting" />
<button ng-click="$window.alert(greeting)">ALERT</button>
<script>
function Ctrl($scope, $window) {
$scope.$window = $window;
$scope.greeting = 'Hello, World!';
}
</script>
<div ng-controller="Ctrl">
<input type="text" ng-model="greeting" />
<button ng-click="$window.alert(greeting)">ALERT</button>
</div>
</doc:source>
<doc:scenario>
it('should display the greeting in the input box', function() {
input('greeting').enter('Hello, E2E Tests');
// If we click the button it will block the test runner
// element(':button').click();
});
</doc:scenario>
</doc:example>
*/
+2 -1
View File
@@ -139,7 +139,8 @@ angular.module('ngCookies', ['ng']).
* @returns {Object} Deserialized cookie value.
*/
get: function(key) {
return angular.fromJson($cookies[key]);
var value = $cookies[key];
return value ? angular.fromJson(value) : value;
},
/**
+3 -3
View File
@@ -64,7 +64,7 @@ $provide.value("$locale", {
"NUMBER_FORMATS": {
"CURRENCY_SYM": "R",
"DECIMAL_SEP": ",",
"GROUP_SEP": " ",
"GROUP_SEP": "\u00a0",
"PATTERNS": {
"0": {
"gSize": 3,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}
+3 -3
View File
@@ -64,7 +64,7 @@ $provide.value("$locale", {
"NUMBER_FORMATS": {
"CURRENCY_SYM": "R",
"DECIMAL_SEP": ",",
"GROUP_SEP": " ",
"GROUP_SEP": "\u00a0",
"PATTERNS": {
"0": {
"gSize": 3,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}
+3 -3
View File
@@ -64,7 +64,7 @@ $provide.value("$locale", {
"NUMBER_FORMATS": {
"CURRENCY_SYM": "R",
"DECIMAL_SEP": ",",
"GROUP_SEP": " ",
"GROUP_SEP": "\u00a0",
"PATTERNS": {
"0": {
"gSize": 3,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}
+42 -42
View File
@@ -3,54 +3,54 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ጡዋት",
"1": "ከሳዓት"
"0": "\u1321\u12cb\u1275",
"1": "\u12a8\u1233\u12d3\u1275"
},
"DAY": {
"0": "እሑድ",
"1": "ሰኞ",
"2": "ማክሰኞ",
"3": "ረቡዕ",
"4": "ሐሙስ",
"5": "ዓርብ",
"6": "ቅዳሜ"
"0": "\u12a5\u1211\u12f5",
"1": "\u1230\u129e",
"2": "\u121b\u12ad\u1230\u129e",
"3": "\u1228\u1261\u12d5",
"4": "\u1210\u1219\u1235",
"5": "\u12d3\u122d\u1265",
"6": "\u1245\u12f3\u121c"
},
"MONTH": {
"0": "ጃንዩወሪ",
"1": "ፌብሩወሪ",
"2": "ማርች",
"3": "ኤፕረል",
"4": "ሜይ",
"5": "ጁን",
"6": "ጁላይ",
"7": "ኦገስት",
"8": "ሴፕቴምበር",
"9": "ኦክተውበር",
"10": "ኖቬምበር",
"11": "ዲሴምበር"
"0": "\u1303\u1295\u12e9\u12c8\u122a",
"1": "\u134c\u1265\u1229\u12c8\u122a",
"2": "\u121b\u122d\u127d",
"3": "\u12a4\u1355\u1228\u120d",
"4": "\u121c\u12ed",
"5": "\u1301\u1295",
"6": "\u1301\u120b\u12ed",
"7": "\u12a6\u1308\u1235\u1275",
"8": "\u1234\u1355\u1274\u121d\u1260\u122d",
"9": "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
"10": "\u1296\u126c\u121d\u1260\u122d",
"11": "\u12f2\u1234\u121d\u1260\u122d"
},
"SHORTDAY": {
"0": "እሑድ",
"1": "ሰኞ",
"2": "ማክሰ",
"3": "ረቡዕ",
"4": "ሐሙስ",
"5": "ዓርብ",
"6": "ቅዳሜ"
"0": "\u12a5\u1211\u12f5",
"1": "\u1230\u129e",
"2": "\u121b\u12ad\u1230",
"3": "\u1228\u1261\u12d5",
"4": "\u1210\u1219\u1235",
"5": "\u12d3\u122d\u1265",
"6": "\u1245\u12f3\u121c"
},
"SHORTMONTH": {
"0": "ጃንዩ",
"1": "ፌብሩ",
"2": "ማርች",
"3": "ኤፕረ",
"4": "ሜይ",
"5": "ጁን",
"6": "ጁላይ",
"7": "ኦገስ",
"8": "ሴፕቴ",
"9": "ኦክተ",
"10": "ኖቬም",
"11": "ዲሴም"
"0": "\u1303\u1295\u12e9",
"1": "\u134c\u1265\u1229",
"2": "\u121b\u122d\u127d",
"3": "\u12a4\u1355\u1228",
"4": "\u121c\u12ed",
"5": "\u1301\u1295",
"6": "\u1301\u120b\u12ed",
"7": "\u12a6\u1308\u1235",
"8": "\u1234\u1355\u1274",
"9": "\u12a6\u12ad\u1270",
"10": "\u1296\u126c\u121d",
"11": "\u12f2\u1234\u121d"
},
"fullDate": "EEEE, d MMMM y",
"longDate": "d MMMM y",
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}
+42 -42
View File
@@ -3,54 +3,54 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ጡዋት",
"1": "ከሳዓት"
"0": "\u1321\u12cb\u1275",
"1": "\u12a8\u1233\u12d3\u1275"
},
"DAY": {
"0": "እሑድ",
"1": "ሰኞ",
"2": "ማክሰኞ",
"3": "ረቡዕ",
"4": "ሐሙስ",
"5": "ዓርብ",
"6": "ቅዳሜ"
"0": "\u12a5\u1211\u12f5",
"1": "\u1230\u129e",
"2": "\u121b\u12ad\u1230\u129e",
"3": "\u1228\u1261\u12d5",
"4": "\u1210\u1219\u1235",
"5": "\u12d3\u122d\u1265",
"6": "\u1245\u12f3\u121c"
},
"MONTH": {
"0": "ጃንዩወሪ",
"1": "ፌብሩወሪ",
"2": "ማርች",
"3": "ኤፕረል",
"4": "ሜይ",
"5": "ጁን",
"6": "ጁላይ",
"7": "ኦገስት",
"8": "ሴፕቴምበር",
"9": "ኦክተውበር",
"10": "ኖቬምበር",
"11": "ዲሴምበር"
"0": "\u1303\u1295\u12e9\u12c8\u122a",
"1": "\u134c\u1265\u1229\u12c8\u122a",
"2": "\u121b\u122d\u127d",
"3": "\u12a4\u1355\u1228\u120d",
"4": "\u121c\u12ed",
"5": "\u1301\u1295",
"6": "\u1301\u120b\u12ed",
"7": "\u12a6\u1308\u1235\u1275",
"8": "\u1234\u1355\u1274\u121d\u1260\u122d",
"9": "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
"10": "\u1296\u126c\u121d\u1260\u122d",
"11": "\u12f2\u1234\u121d\u1260\u122d"
},
"SHORTDAY": {
"0": "እሑድ",
"1": "ሰኞ",
"2": "ማክሰ",
"3": "ረቡዕ",
"4": "ሐሙስ",
"5": "ዓርብ",
"6": "ቅዳሜ"
"0": "\u12a5\u1211\u12f5",
"1": "\u1230\u129e",
"2": "\u121b\u12ad\u1230",
"3": "\u1228\u1261\u12d5",
"4": "\u1210\u1219\u1235",
"5": "\u12d3\u122d\u1265",
"6": "\u1245\u12f3\u121c"
},
"SHORTMONTH": {
"0": "ጃንዩ",
"1": "ፌብሩ",
"2": "ማርች",
"3": "ኤፕረ",
"4": "ሜይ",
"5": "ጁን",
"6": "ጁላይ",
"7": "ኦገስ",
"8": "ሴፕቴ",
"9": "ኦክተ",
"10": "ኖቬም",
"11": "ዲሴም"
"0": "\u1303\u1295\u12e9",
"1": "\u134c\u1265\u1229",
"2": "\u121b\u122d\u127d",
"3": "\u12a4\u1355\u1228",
"4": "\u121c\u12ed",
"5": "\u1301\u1295",
"6": "\u1301\u120b\u12ed",
"7": "\u12a6\u1308\u1235",
"8": "\u1234\u1355\u1274",
"9": "\u12a6\u12ad\u1270",
"10": "\u1296\u126c\u121d",
"11": "\u12f2\u1234\u121d"
},
"fullDate": "EEEE, d MMMM y",
"longDate": "d MMMM y",
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+47 -47
View File
@@ -3,57 +3,57 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "yyyy/MM/dd h:mm:ss a",
"mediumDate": "yyyy/MM/dd",
"mediumTime": "h:mm:ss a",
@@ -62,9 +62,9 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+47 -47
View File
@@ -3,57 +3,57 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "yyyy/MM/dd h:mm:ss a",
"mediumDate": "yyyy/MM/dd",
"mediumTime": "h:mm:ss a",
@@ -62,9 +62,9 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "كانون الثاني",
"1": "شباط",
"2": "آذار",
"3": "نيسان",
"4": "أيار",
"5": "حزيران",
"6": "تموز",
"7": "آب",
"8": "أيلول",
"9": "تشرين الأول",
"10": "تشرين الثاني",
"11": "كانون الأول"
"0": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"1": "\u0634\u0628\u0627\u0637",
"2": "\u0622\u0630\u0627\u0631",
"3": "\u0646\u064a\u0633\u0627\u0646",
"4": "\u0623\u064a\u0627\u0631",
"5": "\u062d\u0632\u064a\u0631\u0627\u0646",
"6": "\u062a\u0645\u0648\u0632",
"7": "\u0622\u0628",
"8": "\u0623\u064a\u0644\u0648\u0644",
"9": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"10": "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"11": "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+47 -47
View File
@@ -3,57 +3,57 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "yyyy/MM/dd h:mm:ss a",
"mediumDate": "yyyy/MM/dd",
"mediumTime": "h:mm:ss a",
@@ -62,9 +62,9 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+51 -51
View File
@@ -3,68 +3,68 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "ص",
"1": "م"
"0": "\u0635",
"1": "\u0645"
},
"DAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"MONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"SHORTDAY": {
"0": "الأحد",
"1": "الاثنين",
"2": "الثلاثاء",
"3": "الأربعاء",
"4": "الخميس",
"5": "الجمعة",
"6": "السبت"
"0": "\u0627\u0644\u0623\u062d\u062f",
"1": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"2": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"3": "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"4": "\u0627\u0644\u062e\u0645\u064a\u0633",
"5": "\u0627\u0644\u062c\u0645\u0639\u0629",
"6": "\u0627\u0644\u0633\u0628\u062a"
},
"SHORTMONTH": {
"0": "يناير",
"1": "فبراير",
"2": "مارس",
"3": "أبريل",
"4": "مايو",
"5": "يونيو",
"6": "يوليو",
"7": "أغسطس",
"8": "سبتمبر",
"9": "أكتوبر",
"10": "نوفمبر",
"11": "ديسمبر"
"0": "\u064a\u0646\u0627\u064a\u0631",
"1": "\u0641\u0628\u0631\u0627\u064a\u0631",
"2": "\u0645\u0627\u0631\u0633",
"3": "\u0623\u0628\u0631\u064a\u0644",
"4": "\u0645\u0627\u064a\u0648",
"5": "\u064a\u0648\u0646\u064a\u0648",
"6": "\u064a\u0648\u0644\u064a\u0648",
"7": "\u0623\u063a\u0633\u0637\u0633",
"8": "\u0633\u0628\u062a\u0645\u0628\u0631",
"9": "\u0623\u0643\u062a\u0648\u0628\u0631",
"10": "\u0646\u0648\u0641\u0645\u0628\u0631",
"11": "\u062f\u064a\u0633\u0645\u0628\u0631"
},
"fullDate": "EEEE، d MMMM، y",
"longDate": "d MMMM، y",
"medium": "dd/MM/yyyy h:mm:ss a",
"mediumDate": "dd/MM/yyyy",
"fullDate": "EEEE\u060c d MMMM\u060c y",
"longDate": "d MMMM\u060c y",
"medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
"mediumDate": "dd\u200f/MM\u200f/yyyy",
"mediumTime": "h:mm:ss a",
"short": "d/M/yyyy h:mm a",
"shortDate": "d/M/yyyy",
"short": "d\u200f/M\u200f/yyyy h:mm a",
"shortDate": "d\u200f/M\u200f/yyyy",
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "£",
"DECIMAL_SEP": "٫",
"GROUP_SEP": "٬",
"CURRENCY_SYM": "\u00a3",
"DECIMAL_SEP": "\u066b",
"GROUP_SEP": "\u066c",
"PATTERNS": {
"0": {
"gSize": 0,
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "\u00A4 ",
"negPre": "\u00a4\u00a0",
"negSuf": "-",
"posPre": "\u00A4 ",
"posPre": "\u00a4\u00a0",
"posSuf": ""
}
}
+43 -43
View File
@@ -3,54 +3,54 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "пр. об.",
"1": "сл. об."
"0": "\u043f\u0440. \u043e\u0431.",
"1": "\u0441\u043b. \u043e\u0431."
},
"DAY": {
"0": "неделя",
"1": "понеделник",
"2": "вторник",
"3": "сряда",
"4": "четвъртък",
"5": "петък",
"6": "събота"
"0": "\u043d\u0435\u0434\u0435\u043b\u044f",
"1": "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
"2": "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
"3": "\u0441\u0440\u044f\u0434\u0430",
"4": "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
"5": "\u043f\u0435\u0442\u044a\u043a",
"6": "\u0441\u044a\u0431\u043e\u0442\u0430"
},
"MONTH": {
"0": "януари",
"1": "февруари",
"2": "март",
"3": "април",
"4": "май",
"5": "юни",
"6": "юли",
"7": "август",
"8": "септември",
"9": "октомври",
"10": "ноември",
"11": "декември"
"0": "\u044f\u043d\u0443\u0430\u0440\u0438",
"1": "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
"2": "\u043c\u0430\u0440\u0442",
"3": "\u0430\u043f\u0440\u0438\u043b",
"4": "\u043c\u0430\u0439",
"5": "\u044e\u043d\u0438",
"6": "\u044e\u043b\u0438",
"7": "\u0430\u0432\u0433\u0443\u0441\u0442",
"8": "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
"9": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
"10": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
"11": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
},
"SHORTDAY": {
"0": "нд",
"1": "пн",
"2": "вт",
"3": "ср",
"4": "чт",
"5": "пт",
"6": "сб"
"0": "\u043d\u0434",
"1": "\u043f\u043d",
"2": "\u0432\u0442",
"3": "\u0441\u0440",
"4": "\u0447\u0442",
"5": "\u043f\u0442",
"6": "\u0441\u0431"
},
"SHORTMONTH": {
"0": "ян.",
"1": "февр.",
"2": "март",
"3": "апр.",
"4": "май",
"5": "юни",
"6": "юли",
"7": "авг.",
"8": "септ.",
"9": "окт.",
"10": "ноем.",
"11": "дек."
"0": "\u044f\u043d.",
"1": "\u0444\u0435\u0432\u0440.",
"2": "\u043c\u0430\u0440\u0442",
"3": "\u0430\u043f\u0440.",
"4": "\u043c\u0430\u0439",
"5": "\u044e\u043d\u0438",
"6": "\u044e\u043b\u0438",
"7": "\u0430\u0432\u0433.",
"8": "\u0441\u0435\u043f\u0442.",
"9": "\u043e\u043a\u0442.",
"10": "\u043d\u043e\u0435\u043c.",
"11": "\u0434\u0435\u043a."
},
"fullDate": "dd MMMM y, EEEE",
"longDate": "dd MMMM y",
@@ -64,7 +64,7 @@ $provide.value("$locale", {
"NUMBER_FORMATS": {
"CURRENCY_SYM": "lev",
"DECIMAL_SEP": ",",
"GROUP_SEP": " ",
"GROUP_SEP": "\u00a0",
"PATTERNS": {
"0": {
"gSize": 3,
@@ -86,9 +86,9 @@ $provide.value("$locale", {
"minFrac": 2,
"minInt": 1,
"negPre": "-",
"negSuf": " \u00A4",
"negSuf": "\u00a0\u00a4",
"posPre": "",
"posSuf": " \u00A4"
"posSuf": "\u00a0\u00a4"
}
}
},
+43 -43
View File
@@ -3,54 +3,54 @@ var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "
$provide.value("$locale", {
"DATETIME_FORMATS": {
"AMPMS": {
"0": "пр. об.",
"1": "сл. об."
"0": "\u043f\u0440. \u043e\u0431.",
"1": "\u0441\u043b. \u043e\u0431."
},
"DAY": {
"0": "неделя",
"1": "понеделник",
"2": "вторник",
"3": "сряда",
"4": "четвъртък",
"5": "петък",
"6": "събота"
"0": "\u043d\u0435\u0434\u0435\u043b\u044f",
"1": "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
"2": "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
"3": "\u0441\u0440\u044f\u0434\u0430",
"4": "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
"5": "\u043f\u0435\u0442\u044a\u043a",
"6": "\u0441\u044a\u0431\u043e\u0442\u0430"
},
"MONTH": {
"0": "януари",
"1": "февруари",
"2": "март",
"3": "април",
"4": "май",
"5": "юни",
"6": "юли",
"7": "август",
"8": "септември",
"9": "октомври",
"10": "ноември",
"11": "декември"
"0": "\u044f\u043d\u0443\u0430\u0440\u0438",
"1": "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
"2": "\u043c\u0430\u0440\u0442",
"3": "\u0430\u043f\u0440\u0438\u043b",
"4": "\u043c\u0430\u0439",
"5": "\u044e\u043d\u0438",
"6": "\u044e\u043b\u0438",
"7": "\u0430\u0432\u0433\u0443\u0441\u0442",
"8": "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
"9": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
"10": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
"11": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"
},
"SHORTDAY": {
"0": "нд",
"1": "пн",
"2": "вт",
"3": "ср",
"4": "чт",
"5": "пт",
"6": "сб"
"0": "\u043d\u0434",
"1": "\u043f\u043d",
"2": "\u0432\u0442",
"3": "\u0441\u0440",
"4": "\u0447\u0442",
"5": "\u043f\u0442",
"6": "\u0441\u0431"
},
"SHORTMONTH": {
"0": "ян.",
"1": "февр.",
"2": "март",
"3": "апр.",
"4": "май",
"5": "юни",
"6": "юли",
"7": "авг.",
"8": "септ.",
"9": "окт.",
"10": "ноем.",
"11": "дек."
"0": "\u044f\u043d.",
"1": "\u0444\u0435\u0432\u0440.",
"2": "\u043c\u0430\u0440\u0442",
"3": "\u0430\u043f\u0440.",
"4": "\u043c\u0430\u0439",
"5": "\u044e\u043d\u0438",
"6": "\u044e\u043b\u0438",
"7": "\u0430\u0432\u0433.",
"8": "\u0441\u0435\u043f\u0442.",
"9": "\u043e\u043a\u0442.",
"10": "\u043d\u043e\u0435\u043c.",
"11": "\u0434\u0435\u043a."
},
"fullDate": "dd MMMM y, EEEE",
"longDate": "dd MMMM y",
@@ -64,7 +64,7 @@ $provide.value("$locale", {
"NUMBER_FORMATS": {
"CURRENCY_SYM": "lev",
"DECIMAL_SEP": ",",
"GROUP_SEP": " ",
"GROUP_SEP": "\u00a0",
"PATTERNS": {
"0": {
"gSize": 3,
@@ -86,9 +86,9 @@ $provide.value("$locale", {
"minFrac": 2,
"minInt": 1,
"negPre": "-",
"negSuf": " \u00A4",
"negSuf": "\u00a0\u00a4",
"posPre": "",
"posSuf": " \u00A4"
"posSuf": "\u00a0\u00a4"
}
}
},
+41 -41
View File
@@ -7,50 +7,50 @@ $provide.value("$locale", {
"1": "pm"
},
"DAY": {
"0": "রবিবার",
"1": "সোমবার",
"2": "মঙ্গলবার",
"3": "বুধবার",
"4": "বৃহষ্পতিবার",
"5": "শুক্রবার",
"6": "শনিবার"
"0": "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
"1": "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
"2": "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
"3": "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
"4": "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
"6": "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
},
"MONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"SHORTDAY": {
"0": "রবি",
"1": "সোম",
"2": "মঙ্গল",
"3": "বুধ",
"4": "বৃহস্পতি",
"5": "শুক্র",
"6": "শনি"
"0": "\u09b0\u09ac\u09bf",
"1": "\u09b8\u09cb\u09ae",
"2": "\u09ae\u0999\u09cd\u0997\u09b2",
"3": "\u09ac\u09c1\u09a7",
"4": "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0",
"6": "\u09b6\u09a8\u09bf"
},
"SHORTMONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"fullDate": "EEEE, d MMMM, y",
"longDate": "d MMMM, y",
@@ -62,7 +62,7 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "",
"CURRENCY_SYM": "\u09f3",
"DECIMAL_SEP": ".",
"GROUP_SEP": ",",
"PATTERNS": {
@@ -86,9 +86,9 @@ $provide.value("$locale", {
"minFrac": 2,
"minInt": 1,
"negPre": "(",
"negSuf": "\u00A4)",
"negSuf": "\u00a4)",
"posPre": "",
"posSuf": "\u00A4"
"posSuf": "\u00a4"
}
}
},
+41 -41
View File
@@ -7,50 +7,50 @@ $provide.value("$locale", {
"1": "pm"
},
"DAY": {
"0": "রবিবার",
"1": "সোমবার",
"2": "মঙ্গলবার",
"3": "বুধবার",
"4": "বৃহষ্পতিবার",
"5": "শুক্রবার",
"6": "শনিবার"
"0": "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
"1": "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
"2": "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
"3": "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
"4": "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
"6": "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
},
"MONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"SHORTDAY": {
"0": "রবি",
"1": "সোম",
"2": "মঙ্গল",
"3": "বুধ",
"4": "বৃহস্পতি",
"5": "শুক্র",
"6": "শনি"
"0": "\u09b0\u09ac\u09bf",
"1": "\u09b8\u09cb\u09ae",
"2": "\u09ae\u0999\u09cd\u0997\u09b2",
"3": "\u09ac\u09c1\u09a7",
"4": "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0",
"6": "\u09b6\u09a8\u09bf"
},
"SHORTMONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"fullDate": "EEEE, d MMMM, y",
"longDate": "d MMMM, y",
@@ -62,7 +62,7 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "",
"CURRENCY_SYM": "\u09f3",
"DECIMAL_SEP": ".",
"GROUP_SEP": ",",
"PATTERNS": {
@@ -86,9 +86,9 @@ $provide.value("$locale", {
"minFrac": 2,
"minInt": 1,
"negPre": "(",
"negSuf": "\u00A4)",
"negSuf": "\u00a4)",
"posPre": "",
"posSuf": "\u00A4"
"posSuf": "\u00a4"
}
}
},
+41 -41
View File
@@ -7,50 +7,50 @@ $provide.value("$locale", {
"1": "pm"
},
"DAY": {
"0": "রবিবার",
"1": "সোমবার",
"2": "মঙ্গলবার",
"3": "বুধবার",
"4": "বৃহষ্পতিবার",
"5": "শুক্রবার",
"6": "শনিবার"
"0": "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
"1": "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
"2": "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
"3": "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
"4": "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
"6": "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"
},
"MONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"SHORTDAY": {
"0": "রবি",
"1": "সোম",
"2": "মঙ্গল",
"3": "বুধ",
"4": "বৃহস্পতি",
"5": "শুক্র",
"6": "শনি"
"0": "\u09b0\u09ac\u09bf",
"1": "\u09b8\u09cb\u09ae",
"2": "\u09ae\u0999\u09cd\u0997\u09b2",
"3": "\u09ac\u09c1\u09a7",
"4": "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
"5": "\u09b6\u09c1\u0995\u09cd\u09b0",
"6": "\u09b6\u09a8\u09bf"
},
"SHORTMONTH": {
"0": "জানুয়ারী",
"1": "ফেব্রুয়ারী",
"2": "মার্চ",
"3": "এপ্রিল",
"4": "মে",
"5": "জুন",
"6": "জুলাই",
"7": "আগস্ট",
"8": "সেপ্টেম্বর",
"9": "অক্টোবর",
"10": "নভেম্বর",
"11": "ডিসেম্বর"
"0": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"1": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"2": "\u09ae\u09be\u09b0\u09cd\u099a",
"3": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"4": "\u09ae\u09c7",
"5": "\u099c\u09c1\u09a8",
"6": "\u099c\u09c1\u09b2\u09be\u0987",
"7": "\u0986\u0997\u09b8\u09cd\u099f",
"8": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"9": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"10": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"11": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"
},
"fullDate": "EEEE, d MMMM, y",
"longDate": "d MMMM, y",
@@ -62,7 +62,7 @@ $provide.value("$locale", {
"shortTime": "h:mm a"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "",
"CURRENCY_SYM": "\u09f3",
"DECIMAL_SEP": ".",
"GROUP_SEP": ",",
"PATTERNS": {
@@ -86,9 +86,9 @@ $provide.value("$locale", {
"minFrac": 2,
"minInt": 1,
"negPre": "(",
"negSuf": "\u00A4)",
"negSuf": "\u00a4)",
"posPre": "",
"posSuf": "\u00A4"
"posSuf": "\u00a4"
}
}
},
+11 -11
View File
@@ -18,14 +18,14 @@ $provide.value("$locale", {
"MONTH": {
"0": "de gener",
"1": "de febrer",
"2": "de març",
"3": "dabril",
"2": "de mar\u00e7",
"3": "d\u2019abril",
"4": "de maig",
"5": "de juny",
"6": "de juliol",
"7": "dagost",
"7": "d\u2019agost",
"8": "de setembre",
"9": "doctubre",
"9": "d\u2019octubre",
"10": "de novembre",
"11": "de desembre"
},
@@ -41,14 +41,14 @@ $provide.value("$locale", {
"SHORTMONTH": {
"0": "de gen.",
"1": "de febr.",
"2": "de març",
"3": "dabr.",
"2": "de mar\u00e7",
"3": "d\u2019abr.",
"4": "de maig",
"5": "de juny",
"6": "de jul.",
"7": "dag.",
"7": "d\u2019ag.",
"8": "de set.",
"9": "doct.",
"9": "d\u2019oct.",
"10": "de nov.",
"11": "de des."
},
@@ -62,7 +62,7 @@ $provide.value("$locale", {
"shortTime": "H:mm"
},
"NUMBER_FORMATS": {
"CURRENCY_SYM": "",
"CURRENCY_SYM": "\u20ac",
"DECIMAL_SEP": ",",
"GROUP_SEP": ".",
"PATTERNS": {
@@ -85,9 +85,9 @@ $provide.value("$locale", {
"maxFrac": 2,
"minFrac": 2,
"minInt": 1,
"negPre": "(\u00A4",
"negPre": "(\u00a4",
"negSuf": ")",
"posPre": "\u00A4",
"posPre": "\u00a4",
"posSuf": ""
}
}

Some files were not shown because too many files have changed in this diff Show More