Compare commits
113 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc6f149973 | |||
| 420f6bfccb | |||
| ae33e11694 | |||
| 4d8b0282b4 | |||
| 00845fca88 | |||
| 84fe86c7fd | |||
| 5e1ed9d5d2 | |||
| 2ba668732a | |||
| 2cb73b71d1 | |||
| 16a2ce2b13 | |||
| 18e87a7544 | |||
| f81431dd72 | |||
| 04bdb9f813 | |||
| 1cfe281a76 | |||
| 6165bd7d1e | |||
| 0135564ad9 | |||
| 6847cbeff8 | |||
| 84daf33c03 | |||
| 86cbdb893a | |||
| 11ee680d38 | |||
| 4c5b382b69 | |||
| 39f4a776d6 | |||
| a250116694 | |||
| 9a73d71f47 | |||
| 73aaca05f8 | |||
| a993112098 | |||
| 9145d5ec3e | |||
| efc863844c | |||
| cc260e7864 | |||
| 42ce8f7f55 | |||
| 661390aef3 | |||
| ed4a70e765 | |||
| 1866968310 | |||
| 5fbf98ec23 | |||
| 5d2bb2c1b9 | |||
| 9039ddbb56 | |||
| 8f8510fc22 | |||
| 1e99ea6a51 | |||
| 016e1e675e | |||
| 1240641f76 | |||
| f1a34f0908 | |||
| 01bda54e05 | |||
| bc04afe183 | |||
| ac086ae616 | |||
| f75a2b093f | |||
| 4dba7b0203 | |||
| d3cd3c0a9b | |||
| e351874a0a | |||
| dcdf4fc78b | |||
| cf38d8c55b | |||
| b0233a33a1 | |||
| c3235db9ee | |||
| 738113bac8 | |||
| 6613ee40e6 | |||
| ce6035d953 | |||
| 2bc4793ee8 | |||
| 9c6e34bfc1 | |||
| 4e65ff31a8 | |||
| 15461c7883 | |||
| de5352cfcf | |||
| ae26ed994e | |||
| 94745f6274 | |||
| dbfa0d88bb | |||
| cf3b5cb2fc | |||
| 192a225854 | |||
| 3508f76719 | |||
| a7d081fac0 | |||
| ee774f6e5b | |||
| 80f34598f8 | |||
| 7e168c8ad2 | |||
| 3ebc2c2442 | |||
| 631d86f723 | |||
| 3ac97f2b3d | |||
| ed55346be7 | |||
| e31ec1f7ed | |||
| 70e4fd2865 | |||
| 7898490779 | |||
| 0893e83c92 | |||
| ef334d0070 | |||
| 9f08d03978 | |||
| 3ca6c4bfb9 | |||
| cfea2095ca | |||
| 171bec3b0e | |||
| 93891ad2e9 | |||
| eece726651 | |||
| dc6665caed | |||
| 5b592cbaf4 | |||
| 348138d7cd | |||
| 6a34a4ebeb | |||
| 5ca247c749 | |||
| b16bffbf76 | |||
| b2aec3706d | |||
| d577c5def1 | |||
| a4dd14952e | |||
| 8879b3733e | |||
| 35b02226ca | |||
| 814feaa2ab | |||
| aa2e66dcaf | |||
| 7b7b12e477 | |||
| 187cd0a058 | |||
| 0c690af2fe | |||
| 40ecd2d8e5 | |||
| 484286d536 | |||
| d56b62dcda | |||
| b94125ac14 | |||
| 3f34319398 | |||
| ba076a29b9 | |||
| 13000c7350 | |||
| fd2649fc65 | |||
| 437b09c155 | |||
| b2b015a53b | |||
| 5bea4c5692 | |||
| 1b527b7acf |
+342
@@ -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)
|
||||
|
||||
|
||||
@@ -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:`.)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
@ngdoc overview
|
||||
@name Developer Guide: Type
|
||||
@description
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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('.');
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,5 +1,5 @@
|
||||
<!doctype html>
|
||||
<html ng-app>
|
||||
<html ng-app="personalLog">
|
||||
<head>
|
||||
<title>Personal Log</title>
|
||||
<script src="../../src/loader.js"></script>
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
Vendored
+1
-1
@@ -222,6 +222,6 @@
|
||||
function isActuallyNaN(val) {
|
||||
return (typeof val === 'number') && isNaN(val);
|
||||
}
|
||||
};
|
||||
}
|
||||
})(window, document);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Vendored
+8
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 '';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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>
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+3
-3
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+42
-42
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+42
-42
@@ -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
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+47
-47
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+47
-47
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+47
-47
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+51
-51
@@ -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": ""
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+43
-43
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Vendored
+43
-43
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Vendored
+41
-41
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Vendored
+41
-41
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Vendored
+41
-41
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Vendored
+11
-11
@@ -18,14 +18,14 @@ $provide.value("$locale", {
|
||||
"MONTH": {
|
||||
"0": "de gener",
|
||||
"1": "de febrer",
|
||||
"2": "de març",
|
||||
"3": "d’abril",
|
||||
"2": "de mar\u00e7",
|
||||
"3": "d\u2019abril",
|
||||
"4": "de maig",
|
||||
"5": "de juny",
|
||||
"6": "de juliol",
|
||||
"7": "d’agost",
|
||||
"7": "d\u2019agost",
|
||||
"8": "de setembre",
|
||||
"9": "d’octubre",
|
||||
"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": "d’abr.",
|
||||
"2": "de mar\u00e7",
|
||||
"3": "d\u2019abr.",
|
||||
"4": "de maig",
|
||||
"5": "de juny",
|
||||
"6": "de jul.",
|
||||
"7": "d’ag.",
|
||||
"7": "d\u2019ag.",
|
||||
"8": "de set.",
|
||||
"9": "d’oct.",
|
||||
"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
Reference in New Issue
Block a user