twitter_cldr_js 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. data/Gemfile +5 -0
  2. data/History.txt +11 -1
  3. data/README.md +103 -13
  4. data/Rakefile +1 -1
  5. data/lib/assets/javascripts/twitter_cldr/af.js +1815 -0
  6. data/lib/assets/javascripts/twitter_cldr/ar.js +1815 -0
  7. data/lib/assets/javascripts/twitter_cldr/be.js +1815 -0
  8. data/lib/assets/javascripts/twitter_cldr/bg.js +1815 -0
  9. data/lib/assets/javascripts/twitter_cldr/bn.js +1815 -0
  10. data/lib/assets/javascripts/twitter_cldr/ca.js +1815 -0
  11. data/lib/assets/javascripts/twitter_cldr/cs.js +1815 -0
  12. data/lib/assets/javascripts/twitter_cldr/cy.js +1815 -0
  13. data/lib/assets/javascripts/twitter_cldr/da.js +1815 -0
  14. data/lib/assets/javascripts/twitter_cldr/de.js +1815 -0
  15. data/lib/assets/javascripts/twitter_cldr/el.js +1815 -0
  16. data/lib/assets/javascripts/twitter_cldr/en.js +1815 -0
  17. data/lib/assets/javascripts/twitter_cldr/es.js +1815 -0
  18. data/lib/assets/javascripts/twitter_cldr/eu.js +1815 -0
  19. data/lib/assets/javascripts/twitter_cldr/fa.js +1815 -0
  20. data/lib/assets/javascripts/twitter_cldr/fi.js +1815 -0
  21. data/lib/assets/javascripts/twitter_cldr/fil.js +1815 -0
  22. data/lib/assets/javascripts/twitter_cldr/fr.js +1815 -0
  23. data/lib/assets/javascripts/twitter_cldr/ga.js +1815 -0
  24. data/lib/assets/javascripts/twitter_cldr/gl.js +1815 -0
  25. data/lib/assets/javascripts/twitter_cldr/he.js +1815 -0
  26. data/lib/assets/javascripts/twitter_cldr/hi.js +1815 -0
  27. data/lib/assets/javascripts/twitter_cldr/hu.js +1815 -0
  28. data/lib/assets/javascripts/twitter_cldr/id.js +1815 -0
  29. data/lib/assets/javascripts/twitter_cldr/it.js +1815 -0
  30. data/lib/assets/javascripts/twitter_cldr/ja.js +1815 -0
  31. data/lib/assets/javascripts/twitter_cldr/ko.js +1815 -0
  32. data/lib/assets/javascripts/twitter_cldr/lv.js +1815 -0
  33. data/lib/assets/javascripts/twitter_cldr/msa.js +1815 -0
  34. data/lib/assets/javascripts/twitter_cldr/nl.js +1815 -0
  35. data/lib/assets/javascripts/twitter_cldr/no.js +1815 -0
  36. data/lib/assets/javascripts/twitter_cldr/pl.js +1815 -0
  37. data/lib/assets/javascripts/twitter_cldr/pt.js +1815 -0
  38. data/lib/assets/javascripts/twitter_cldr/ro.js +1815 -0
  39. data/lib/assets/javascripts/twitter_cldr/ru.js +1815 -0
  40. data/lib/assets/javascripts/twitter_cldr/sk.js +1815 -0
  41. data/lib/assets/javascripts/twitter_cldr/sq.js +1815 -0
  42. data/lib/assets/javascripts/twitter_cldr/sr.js +1815 -0
  43. data/lib/assets/javascripts/twitter_cldr/sv.js +1815 -0
  44. data/lib/assets/javascripts/twitter_cldr/ta.js +1815 -0
  45. data/lib/assets/javascripts/twitter_cldr/th.js +1815 -0
  46. data/lib/assets/javascripts/twitter_cldr/tr.js +1815 -0
  47. data/lib/assets/javascripts/twitter_cldr/uk.js +1815 -0
  48. data/lib/assets/javascripts/twitter_cldr/ur.js +1815 -0
  49. data/lib/assets/javascripts/twitter_cldr/zh-cn.js +1815 -0
  50. data/lib/assets/javascripts/twitter_cldr/zh-tw.js +1815 -0
  51. data/lib/twitter_cldr/js/compiler.rb +12 -3
  52. data/lib/twitter_cldr/js/mustache/bundle.coffee +19 -1
  53. data/lib/twitter_cldr/js/mustache/calendars/additional_date_format_selector.coffee +85 -0
  54. data/lib/twitter_cldr/js/mustache/calendars/datetime.coffee +248 -226
  55. data/lib/twitter_cldr/js/mustache/calendars/timespan.coffee +19 -18
  56. data/lib/twitter_cldr/js/mustache/numbers/numbers.coffee +62 -19
  57. data/lib/twitter_cldr/js/mustache/plurals/rules.coffee +1 -1
  58. data/lib/twitter_cldr/js/mustache/shared/bidi.coffee +433 -0
  59. data/lib/twitter_cldr/js/mustache/shared/calendar.coffee +25 -0
  60. data/lib/twitter_cldr/js/mustache/shared/currencies.coffee +5 -11
  61. data/lib/twitter_cldr/js/mustache/shared/lists.coffee +40 -0
  62. data/lib/twitter_cldr/js/mustache/shared/prerender/bidi_classes.json +1 -0
  63. data/lib/twitter_cldr/js/mustache/utilities.coffee +87 -0
  64. data/lib/twitter_cldr/js/renderers.rb +23 -19
  65. data/lib/twitter_cldr/js/renderers/bundle.rb +8 -2
  66. data/lib/twitter_cldr/js/renderers/calendars/additional_date_format_selector_renderer.rb +18 -0
  67. data/lib/twitter_cldr/js/renderers/calendars/datetime_renderer.rb +13 -9
  68. data/lib/twitter_cldr/js/renderers/numbers/numbers_renderer.rb +17 -3
  69. data/lib/twitter_cldr/js/renderers/shared/bidi_renderer.rb +77 -0
  70. data/lib/twitter_cldr/js/renderers/shared/calendar_renderer.rb +20 -0
  71. data/lib/twitter_cldr/js/renderers/shared/currencies_renderer.rb +2 -2
  72. data/lib/twitter_cldr/js/renderers/shared/list_renderer.rb +22 -0
  73. data/lib/twitter_cldr/js/tasks/tasks.rake +9 -5
  74. data/lib/twitter_cldr/js/tasks/tasks.rb +6 -5
  75. data/lib/twitter_cldr/js/version.rb +1 -1
  76. data/spec/js/calendars/additional_date_format_selector.spec.js +126 -0
  77. data/spec/js/calendars/datetime.spec.js +29 -2
  78. data/spec/js/calendars/timespan.spec.js +45 -1
  79. data/spec/js/numbers/abbreviated/abbreviated_number.spec.js +47 -0
  80. data/spec/js/numbers/abbreviated/long_decimal.spec.js +57 -0
  81. data/spec/js/numbers/abbreviated/short_decimal.spec.js +57 -0
  82. data/spec/js/numbers/currency.spec.js +2 -2
  83. data/spec/js/numbers/decimal.spec.js +1 -1
  84. data/spec/js/numbers/helpers/fraction.spec.js +1 -1
  85. data/spec/js/numbers/helpers/integer.spec.js +1 -1
  86. data/spec/js/numbers/number.spec.js +1 -1
  87. data/spec/js/numbers/percent.spec.js +1 -1
  88. data/spec/js/plurals/plural_rules.spec.js +1 -1
  89. data/spec/js/shared/bidi.spec.js +105 -0
  90. data/spec/js/shared/calendar.spec.js +51 -0
  91. data/spec/js/shared/classpath_bidi_test.txt +217202 -0
  92. data/spec/js/shared/lists.spec.js +100 -0
  93. data/spec/js/utilities.spec.js +120 -0
  94. data/twitter_cldr_js.gemspec +1 -1
  95. metadata +68 -37
  96. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_af.js +0 -887
  97. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ar.js +0 -887
  98. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ca.js +0 -887
  99. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_cs.js +0 -887
  100. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_da.js +0 -887
  101. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_de.js +0 -887
  102. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_el.js +0 -887
  103. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_en.js +0 -887
  104. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_es.js +0 -887
  105. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_eu.js +0 -887
  106. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fa.js +0 -887
  107. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fi.js +0 -887
  108. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fil.js +0 -887
  109. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_fr.js +0 -887
  110. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_he.js +0 -887
  111. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_hi.js +0 -887
  112. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_hu.js +0 -887
  113. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_id.js +0 -887
  114. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_it.js +0 -887
  115. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ja.js +0 -887
  116. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ko.js +0 -887
  117. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_msa.js +0 -887
  118. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_nl.js +0 -887
  119. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_no.js +0 -887
  120. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_pl.js +0 -887
  121. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_pt.js +0 -887
  122. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ru.js +0 -887
  123. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_sv.js +0 -887
  124. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_th.js +0 -887
  125. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_tr.js +0 -887
  126. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_uk.js +0 -887
  127. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_ur.js +0 -887
  128. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-cn.js +0 -887
  129. data/lib/assets/javascripts/twitter_cldr/twitter_cldr_zh-tw.js +0 -887
@@ -0,0 +1,1815 @@
1
+
2
+ /*
3
+ // Copyright 2012 Twitter, Inc
4
+ // http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ // TwitterCLDR (JavaScript) v2.0.0
7
+ // Authors: Cameron Dutro [@camertron]
8
+ Kirill Lashuk [@KL_7]
9
+ portions by Sven Fuchs [@svenfuchs]
10
+ // Homepage: https://twitter.com
11
+ // Description: Provides date, time, number, and list formatting functionality for various Twitter-supported locales in Javascript.
12
+ */
13
+
14
+
15
+ /*-module-*/
16
+ /*_lib/twitter_cldr_*/
17
+
18
+
19
+ (function() {
20
+ var TwitterCldr, key, obj, root,
21
+ __hasProp = {}.hasOwnProperty,
22
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
23
+
24
+ TwitterCldr = {};
25
+
26
+ TwitterCldr.is_rtl = false;
27
+
28
+ TwitterCldr.Utilities = (function() {
29
+
30
+ function Utilities() {}
31
+
32
+ Utilities.from_char_code = function(code_point) {
33
+ if (code_point > 0xFFFF) {
34
+ code_point -= 0x10000;
35
+ return String.fromCharCode(0xD800 + (code_point >> 10), 0xDC00 + (code_point & 0x3FF));
36
+ } else {
37
+ return String.fromCharCode(code_point);
38
+ }
39
+ };
40
+
41
+ Utilities.char_code_at = function(str, idx) {
42
+ var code, end, hi, li, low, surrogatePairs;
43
+ str += '';
44
+ end = str.length;
45
+ surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
46
+ while (surrogatePairs.exec(str) !== null) {
47
+ li = surrogatePairs.lastIndex;
48
+ if (li - 2 < idx) {
49
+ idx += 1;
50
+ } else {
51
+ break;
52
+ }
53
+ }
54
+ if ((idx >= end) || (idx < 0)) {
55
+ return NaN;
56
+ }
57
+ code = str.charCodeAt(idx);
58
+ if ((0xD800 <= code) && (code <= 0xDBFF)) {
59
+ hi = code;
60
+ low = str.charCodeAt(idx + 1);
61
+ return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
62
+ }
63
+ return code;
64
+ };
65
+
66
+ Utilities.unpack_string = function(str) {
67
+ var code_point, idx, result, _i, _ref;
68
+ result = [];
69
+ for (idx = _i = 0, _ref = str.length; 0 <= _ref ? _i < _ref : _i > _ref; idx = 0 <= _ref ? ++_i : --_i) {
70
+ code_point = this.char_code_at(str, idx);
71
+ if (!code_point) {
72
+ break;
73
+ }
74
+ result.push(code_point);
75
+ }
76
+ return result;
77
+ };
78
+
79
+ Utilities.pack_array = function(char_arr) {
80
+ var cur_char;
81
+ return ((function() {
82
+ var _i, _len, _results;
83
+ _results = [];
84
+ for (_i = 0, _len = char_arr.length; _i < _len; _i++) {
85
+ cur_char = char_arr[_i];
86
+ _results.push(this.from_char_code(cur_char));
87
+ }
88
+ return _results;
89
+ }).call(this)).join("");
90
+ };
91
+
92
+ Utilities.arraycopy = function(orig, orig_index, dest, dest_index, length) {
93
+ var count, elem, _i, _len, _ref;
94
+ _ref = orig.slice(orig_index, orig_index + length);
95
+ for (count = _i = 0, _len = _ref.length; _i < _len; count = ++_i) {
96
+ elem = _ref[count];
97
+ dest[dest_index + count] = elem;
98
+ }
99
+ };
100
+
101
+ Utilities.max = function(arr) {
102
+ var elem, i, max, start_index, _i, _j, _len, _ref;
103
+ max = null;
104
+ for (start_index = _i = 0, _len = arr.length; _i < _len; start_index = ++_i) {
105
+ elem = arr[start_index];
106
+ if (elem != null) {
107
+ max = elem;
108
+ break;
109
+ }
110
+ }
111
+ for (i = _j = start_index, _ref = arr.length; start_index <= _ref ? _j <= _ref : _j >= _ref; i = start_index <= _ref ? ++_j : --_j) {
112
+ if (arr[i] > max) {
113
+ max = arr[i];
114
+ }
115
+ }
116
+ return max;
117
+ };
118
+
119
+ Utilities.min = function(arr) {
120
+ var elem, i, min, start_index, _i, _j, _len, _ref;
121
+ min = null;
122
+ for (start_index = _i = 0, _len = arr.length; _i < _len; start_index = ++_i) {
123
+ elem = arr[start_index];
124
+ if (elem != null) {
125
+ min = elem;
126
+ break;
127
+ }
128
+ }
129
+ for (i = _j = start_index, _ref = arr.length; start_index <= _ref ? _j <= _ref : _j >= _ref; i = start_index <= _ref ? ++_j : --_j) {
130
+ if (arr[i] < min) {
131
+ min = arr[i];
132
+ }
133
+ }
134
+ return min;
135
+ };
136
+
137
+ Utilities.is_even = function(num) {
138
+ return num % 2 === 0;
139
+ };
140
+
141
+ Utilities.is_odd = function(num) {
142
+ return num % 2 === 1;
143
+ };
144
+
145
+ return Utilities;
146
+
147
+ })();
148
+
149
+ TwitterCldr.PluralRules = (function() {
150
+
151
+ function PluralRules() {}
152
+
153
+ PluralRules.rules = {"keys": ["one","few","many","other"], "rule": function(n) { return (function() { if (n % 10 == 1 && !(n % 100 == 11)) { return "one" } else { return (function() { if ([2, 3, 4].indexOf(n % 10) >= 0 && !([12, 13, 14].indexOf(n % 100) >= 0)) { return "few" } else { return (function() { if (n % 10 == 0 || [5, 6, 7, 8, 9].indexOf(n % 10) >= 0 || [11, 12, 13, 14].indexOf(n % 100) >= 0) { return "many" } else { return "other" } })(); } })(); } })(); }};
154
+
155
+ PluralRules.all = function() {
156
+ return this.rules.keys;
157
+ };
158
+
159
+ PluralRules.rule_for = function(number) {
160
+ try {
161
+ return this.rules.rule(number);
162
+ } catch (error) {
163
+ return "other";
164
+ }
165
+ };
166
+
167
+ return PluralRules;
168
+
169
+ })();
170
+
171
+ TwitterCldr.TimespanFormatter = (function() {
172
+
173
+ function TimespanFormatter() {
174
+ this.approximate_multiplier = 0.75;
175
+ this.default_type = "default";
176
+ this.tokens = {"ago":{"second":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунд","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунде","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунди","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунди","type":"plaintext"}]}},"minute":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минут","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}]}},"hour":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сата","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}]}},"day":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}]}},"week":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недељу","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеље","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}]}},"month":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месец","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеца","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеци","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеци","type":"plaintext"}]}},"year":{"default":{"one":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" годину","type":"plaintext"}],"few":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" године","type":"plaintext"}],"many":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}],"other":[{"value":"пре ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}]}}},"until":{"second":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунд","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунде","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунди","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" секунди","type":"plaintext"}]}},"minute":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минут","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}]}},"hour":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сата","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}]}},"day":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}]}},"week":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недељу","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеље","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}]}},"month":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месец","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеца","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеци","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" месеци","type":"plaintext"}]}},"year":{"default":{"one":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" годину","type":"plaintext"}],"few":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" године","type":"plaintext"}],"many":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}],"other":[{"value":"за ","type":"plaintext"},{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}]}}},"none":{"second":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" секунда","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" секунде","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" секунди","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" секунда","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" сек","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" сек","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" сек","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" сек","type":"plaintext"}]},"abbreviated":{"one":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}]}},"minute":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" минут","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" минута","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" минут","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" мин","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" мин","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" мин","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" мин","type":"plaintext"}]},"abbreviated":{"one":[{"value":"{0}","type":"placeholder"},{"value":"м","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":"м","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":"м","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":"м","type":"plaintext"}]}},"hour":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" сата","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" сата","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" сати","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" сат","type":"plaintext"}]},"abbreviated":{"one":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":"с","type":"plaintext"}]}},"day":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" дана","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" дан","type":"plaintext"}]},"abbreviated":{"one":[{"value":"{0}","type":"placeholder"},{"value":"д","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":"д","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":"д","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":"д","type":"plaintext"}]}},"week":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" недеље","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" недеља","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" нед","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" нед","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" нед","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" нед","type":"plaintext"}]}},"month":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" месец","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" месеца","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" месеци","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" месец","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" мес","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" мес","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" мес","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" мес","type":"plaintext"}]}},"year":{"default":{"one":[{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" године","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" година","type":"plaintext"}]},"short":{"one":[{"value":"{0}","type":"placeholder"},{"value":" год","type":"plaintext"}],"few":[{"value":"{0}","type":"placeholder"},{"value":" год","type":"plaintext"}],"many":[{"value":"{0}","type":"placeholder"},{"value":" год","type":"plaintext"}],"other":[{"value":"{0}","type":"placeholder"},{"value":" год","type":"plaintext"}]}}}};
177
+ this.time_in_seconds = {
178
+ "second": 1,
179
+ "minute": 60,
180
+ "hour": 3600,
181
+ "day": 86400,
182
+ "week": 604800,
183
+ "month": 2629743.83,
184
+ "year": 31556926
185
+ };
186
+ }
187
+
188
+ TimespanFormatter.prototype.format = function(seconds, fmt_options) {
189
+ var key, number, obj, options, strings, token;
190
+ if (fmt_options == null) {
191
+ fmt_options = {};
192
+ }
193
+ options = {};
194
+ for (key in fmt_options) {
195
+ obj = fmt_options[key];
196
+ options[key] = obj;
197
+ }
198
+ options["direction"] || (options["direction"] = (seconds < 0 ? "ago" : "until"));
199
+ if (options["unit"] === null || options["unit"] === void 0) {
200
+ options["unit"] = this.calculate_unit(Math.abs(seconds), options);
201
+ }
202
+ options["type"] || (options["type"] = this.default_type);
203
+ options["number"] = this.calculate_time(Math.abs(seconds), options["unit"]);
204
+ number = this.calculate_time(Math.abs(seconds), options["unit"]);
205
+ options["rule"] = TwitterCldr.PluralRules.rule_for(number);
206
+ strings = (function() {
207
+ var _i, _len, _ref, _results;
208
+ _ref = this.tokens[options["direction"]][options["unit"]][options["type"]][options["rule"]];
209
+ _results = [];
210
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
211
+ token = _ref[_i];
212
+ _results.push(token.value);
213
+ }
214
+ return _results;
215
+ }).call(this);
216
+ return strings.join("").replace(/\{[0-9]\}/, number.toString());
217
+ };
218
+
219
+ TimespanFormatter.prototype.calculate_unit = function(seconds, unit_options) {
220
+ var key, multiplier, obj, options;
221
+ if (unit_options == null) {
222
+ unit_options = {};
223
+ }
224
+ options = {};
225
+ for (key in unit_options) {
226
+ obj = unit_options[key];
227
+ options[key] = obj;
228
+ }
229
+ if (options.approximate == null) {
230
+ options["approximate"] = false;
231
+ }
232
+ multiplier = options.approximate ? this.approximate_multiplier : 1;
233
+ if (seconds < (this.time_in_seconds.minute * multiplier)) {
234
+ return "second";
235
+ } else if (seconds < (this.time_in_seconds.hour * multiplier)) {
236
+ return "minute";
237
+ } else if (seconds < (this.time_in_seconds.day * multiplier)) {
238
+ return "hour";
239
+ } else if (seconds < (this.time_in_seconds.week * multiplier)) {
240
+ return "day";
241
+ } else if (seconds < (this.time_in_seconds.month * multiplier)) {
242
+ return "week";
243
+ } else if (seconds < (this.time_in_seconds.year * multiplier)) {
244
+ return "month";
245
+ } else {
246
+ return "year";
247
+ }
248
+ };
249
+
250
+ TimespanFormatter.prototype.calculate_time = function(seconds, unit) {
251
+ return Math.round(seconds / this.time_in_seconds[unit]);
252
+ };
253
+
254
+ return TimespanFormatter;
255
+
256
+ })();
257
+
258
+ TwitterCldr.DateTimeFormatter = (function() {
259
+
260
+ function DateTimeFormatter() {
261
+ this.tokens = {"date_time":{"default":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"},{"value":" ","type":"plaintext"},{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"full":[{"value":"EEEE","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"},{"value":" ","type":"plaintext"},{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"zzzz","type":"pattern"}],"long":[{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"},{"value":" ","type":"plaintext"},{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"z","type":"pattern"}],"medium":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"},{"value":" ","type":"plaintext"},{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"short":[{"value":"d","type":"pattern"},{"value":".","type":"plaintext"},{"value":"M","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"},{"value":".","type":"plaintext"},{"value":" ","type":"plaintext"},{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"}],"additional":{"Ed":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":".","type":"plaintext"}],"H":[{"value":"HH","type":"pattern"}],"Hm":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"}],"Hms":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"M":[{"value":"L","type":"pattern"}],"MEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"d","type":"pattern"}],"MMM":[{"value":"LLL","type":"pattern"}],"MMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMdd":[{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMdd":[{"value":"MM","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"dd","type":"pattern"}],"Md":[{"value":"d","type":"pattern"},{"value":"/","type":"plaintext"},{"value":"M","type":"pattern"}],"d":[{"value":"d","type":"pattern"}],"h":[{"value":"hh","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hm":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hms":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"ms":[{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"y":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yM":[{"value":"y","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"M","type":"pattern"}],"yMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"yyyy","type":"pattern"},{"value":".","type":"plaintext"}],"yMMM":[{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yQQQ":[{"value":"QQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yyMM":[{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"},{"value":".","type":"plaintext"}],"yyMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQ":[{"value":"QQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyyy":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yyyyMM":[{"value":"yyyy","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"MM","type":"pattern"}],"yyyyMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}]}},"time":{"default":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"full":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"zzzz","type":"pattern"}],"long":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"z","type":"pattern"}],"medium":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"short":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"}],"additional":{"Ed":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":".","type":"plaintext"}],"H":[{"value":"HH","type":"pattern"}],"Hm":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"}],"Hms":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"M":[{"value":"L","type":"pattern"}],"MEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"d","type":"pattern"}],"MMM":[{"value":"LLL","type":"pattern"}],"MMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMdd":[{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMdd":[{"value":"MM","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"dd","type":"pattern"}],"Md":[{"value":"d","type":"pattern"},{"value":"/","type":"plaintext"},{"value":"M","type":"pattern"}],"d":[{"value":"d","type":"pattern"}],"h":[{"value":"hh","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hm":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hms":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"ms":[{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"y":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yM":[{"value":"y","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"M","type":"pattern"}],"yMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"yyyy","type":"pattern"},{"value":".","type":"plaintext"}],"yMMM":[{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yQQQ":[{"value":"QQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yyMM":[{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"},{"value":".","type":"plaintext"}],"yyMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQ":[{"value":"QQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyyy":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yyyyMM":[{"value":"yyyy","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"MM","type":"pattern"}],"yyyyMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}]}},"date":{"default":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"full":[{"value":"EEEE","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"long":[{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"medium":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"short":[{"value":"d","type":"pattern"},{"value":".","type":"plaintext"},{"value":"M","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"},{"value":".","type":"plaintext"}],"additional":{"Ed":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":".","type":"plaintext"}],"H":[{"value":"HH","type":"pattern"}],"Hm":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"}],"Hms":[{"value":"HH","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"M":[{"value":"L","type":"pattern"}],"MEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"d","type":"pattern"}],"MMM":[{"value":"LLL","type":"pattern"}],"MMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMMEd":[{"value":"E","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMMdd":[{"value":"dd","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMMM","type":"pattern"}],"MMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MMM","type":"pattern"}],"MMdd":[{"value":"MM","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"dd","type":"pattern"}],"Md":[{"value":"d","type":"pattern"},{"value":"/","type":"plaintext"},{"value":"M","type":"pattern"}],"d":[{"value":"d","type":"pattern"}],"h":[{"value":"hh","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hm":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"hms":[{"value":"hh","type":"pattern"},{"value":".","type":"plaintext"},{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"a","type":"pattern"}],"ms":[{"value":"mm","type":"pattern"},{"value":".","type":"plaintext"},{"value":"ss","type":"pattern"}],"y":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yM":[{"value":"y","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"M","type":"pattern"}],"yMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"yyyy","type":"pattern"},{"value":".","type":"plaintext"}],"yMMM":[{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMEd":[{"value":"E","type":"pattern"},{"value":", ","type":"plaintext"},{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"M","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yQQQ":[{"value":"QQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"y","type":"pattern"}],"yyMM":[{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyMMMd":[{"value":"d","type":"pattern"},{"value":". ","type":"plaintext"},{"value":"MMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"},{"value":".","type":"plaintext"}],"yyMMdd":[{"value":"dd","type":"pattern"},{"value":".","type":"plaintext"},{"value":"MM","type":"pattern"},{"value":".","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQ":[{"value":"QQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyQQQQ":[{"value":"QQQQ","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"yy","type":"pattern"}],"yyyy":[{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}],"yyyyMM":[{"value":"yyyy","type":"pattern"},{"value":"-","type":"plaintext"},{"value":"MM","type":"pattern"}],"yyyyMMMM":[{"value":"MMMM","type":"pattern"},{"value":" ","type":"plaintext"},{"value":"y","type":"pattern"},{"value":".","type":"plaintext"}]}}};
262
+ this.weekday_keys = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
263
+ this.methods = {
264
+ 'G': 'era',
265
+ 'y': 'year',
266
+ 'Y': 'year_of_week_of_year',
267
+ 'Q': 'quarter',
268
+ 'q': 'quarter_stand_alone',
269
+ 'M': 'month',
270
+ 'L': 'month_stand_alone',
271
+ 'w': 'week_of_year',
272
+ 'W': 'week_of_month',
273
+ 'd': 'day',
274
+ 'D': 'day_of_month',
275
+ 'F': 'day_of_week_in_month',
276
+ 'E': 'weekday',
277
+ 'e': 'weekday_local',
278
+ 'c': 'weekday_local_stand_alone',
279
+ 'a': 'period',
280
+ 'h': 'hour',
281
+ 'H': 'hour',
282
+ 'K': 'hour',
283
+ 'k': 'hour',
284
+ 'm': 'minute',
285
+ 's': 'second',
286
+ 'S': 'second_fraction',
287
+ 'z': 'timezone',
288
+ 'Z': 'timezone',
289
+ 'v': 'timezone_generic_non_location',
290
+ 'V': 'timezone_metazone'
291
+ };
292
+ }
293
+
294
+ DateTimeFormatter.prototype.format = function(obj, options) {
295
+ var format_token, token, tokens,
296
+ _this = this;
297
+ format_token = function(token) {
298
+ var result;
299
+ result = "";
300
+ switch (token.type) {
301
+ case "pattern":
302
+ return _this.result_for_token(token, obj);
303
+ default:
304
+ if (token.value.length > 0 && token.value[0] === "'" && token.value[token.value.length - 1] === "'") {
305
+ return token.value.substring(1, token.value.length - 1);
306
+ } else {
307
+ return token.value;
308
+ }
309
+ }
310
+ };
311
+ tokens = this.get_tokens(obj, options);
312
+ return ((function() {
313
+ var _i, _len, _results;
314
+ _results = [];
315
+ for (_i = 0, _len = tokens.length; _i < _len; _i++) {
316
+ token = tokens[_i];
317
+ _results.push(format_token(token));
318
+ }
319
+ return _results;
320
+ })()).join("");
321
+ };
322
+
323
+ DateTimeFormatter.prototype.get_tokens = function(obj, options) {
324
+ var format, type;
325
+ format = options.format || "date_time";
326
+ type = options.type || "default";
327
+ if (format === "additional") {
328
+ return this.tokens["date_time"][format][this.additional_format_selector().find_closest(options.type)];
329
+ } else {
330
+ return this.tokens[format][type];
331
+ }
332
+ };
333
+
334
+ DateTimeFormatter.prototype.result_for_token = function(token, date) {
335
+ return this[this.methods[token.value[0]]](date, token.value, token.value.length);
336
+ };
337
+
338
+ DateTimeFormatter.prototype.additional_format_selector = function() {
339
+ return new TwitterCldr.AdditionalDateFormatSelector(this.tokens["date_time"]["additional"]);
340
+ };
341
+
342
+ DateTimeFormatter.additional_formats = function() {
343
+ return new TwitterCldr.DateTimeFormatter().additional_format_selector().patterns();
344
+ };
345
+
346
+ DateTimeFormatter.prototype.era = function(date, pattern, length) {
347
+ var choices, index, result;
348
+ switch (length) {
349
+ case 0:
350
+ choices = ["", ""];
351
+ break;
352
+ case 1:
353
+ case 2:
354
+ case 3:
355
+ choices = TwitterCldr.Calendar.calendar["eras"]["abbr"];
356
+ break;
357
+ default:
358
+ choices = TwitterCldr.Calendar.calendar["eras"]["name"];
359
+ }
360
+ index = date.getFullYear() < 0 ? 0 : 1;
361
+ result = choices[index];
362
+ if (result != null) {
363
+ return result;
364
+ } else {
365
+ return this.era(date, pattern.slice(0, -1), length - 1);
366
+ }
367
+ };
368
+
369
+ DateTimeFormatter.prototype.year = function(date, pattern, length) {
370
+ var year;
371
+ year = date.getFullYear().toString();
372
+ if (length === 2) {
373
+ if (year.length !== 1) {
374
+ year = year.slice(-2);
375
+ }
376
+ }
377
+ if (length > 1) {
378
+ year = ("0000" + year).slice(-length);
379
+ }
380
+ return year;
381
+ };
382
+
383
+ DateTimeFormatter.prototype.year_of_week_of_year = function(date, pattern, length) {
384
+ throw 'not implemented';
385
+ };
386
+
387
+ DateTimeFormatter.prototype.day_of_week_in_month = function(date, pattern, length) {
388
+ throw 'not implemented';
389
+ };
390
+
391
+ DateTimeFormatter.prototype.quarter = function(date, pattern, length) {
392
+ var quarter;
393
+ quarter = ((date.getMonth() / 3) | 0) + 1;
394
+ switch (length) {
395
+ case 1:
396
+ return quarter.toString();
397
+ case 2:
398
+ return ("0000" + quarter.toString()).slice(-length);
399
+ case 3:
400
+ return TwitterCldr.Calendar.calendar.quarters.format.abbreviated[quarter];
401
+ case 4:
402
+ return TwitterCldr.Calendar.calendar.quarters.format.wide[quarter];
403
+ }
404
+ };
405
+
406
+ DateTimeFormatter.prototype.quarter_stand_alone = function(date, pattern, length) {
407
+ var quarter;
408
+ quarter = (date.getMonth() - 1) / 3 + 1;
409
+ switch (length) {
410
+ case 1:
411
+ return quarter.toString();
412
+ case 2:
413
+ return ("0000" + quarter.toString()).slice(-length);
414
+ case 3:
415
+ throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
416
+ break;
417
+ case 4:
418
+ throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
419
+ break;
420
+ case 5:
421
+ return TwitterCldr.Calendar.calendar.quarters['stand-alone'].narrow[quarter];
422
+ }
423
+ };
424
+
425
+ DateTimeFormatter.prototype.month = function(date, pattern, length) {
426
+ var month_str;
427
+ month_str = (date.getMonth() + 1).toString();
428
+ switch (length) {
429
+ case 1:
430
+ return month_str;
431
+ case 2:
432
+ return ("0000" + month_str).slice(-length);
433
+ case 3:
434
+ return TwitterCldr.Calendar.calendar.months.format.abbreviated[month_str];
435
+ case 4:
436
+ return TwitterCldr.Calendar.calendar.months.format.wide[month_str];
437
+ case 5:
438
+ throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
439
+ break;
440
+ default:
441
+ throw "Unknown date format";
442
+ }
443
+ };
444
+
445
+ DateTimeFormatter.prototype.month_stand_alone = function(date, pattern, length) {
446
+ var month_str;
447
+ month_str = (date.getMonth() + 1).toString();
448
+ switch (length) {
449
+ case 1:
450
+ return month_str;
451
+ case 2:
452
+ return ("0000" + month_str).slice(-length);
453
+ case 3:
454
+ return TwitterCldr.Calendar.calendar.months['stand-alone'].abbreviated[month_str];
455
+ case 4:
456
+ return TwitterCldr.Calendar.calendar.months['stand-alone'].wide[month_str];
457
+ case 5:
458
+ return TwitterCldr.Calendar.calendar.months['stand-alone'].narrow[month_str];
459
+ default:
460
+ throw "Unknown date format";
461
+ }
462
+ };
463
+
464
+ DateTimeFormatter.prototype.day = function(date, pattern, length) {
465
+ switch (length) {
466
+ case 1:
467
+ return date.getDate().toString();
468
+ case 2:
469
+ return ("0000" + date.getDate().toString()).slice(-length);
470
+ }
471
+ };
472
+
473
+ DateTimeFormatter.prototype.weekday = function(date, pattern, length) {
474
+ var key;
475
+ key = this.weekday_keys[date.getDay()];
476
+ switch (length) {
477
+ case 1:
478
+ case 2:
479
+ case 3:
480
+ return TwitterCldr.Calendar.calendar.days.format.abbreviated[key];
481
+ case 4:
482
+ return TwitterCldr.Calendar.calendar.days.format.wide[key];
483
+ case 5:
484
+ return TwitterCldr.Calendar.calendar.days['stand-alone'].narrow[key];
485
+ }
486
+ };
487
+
488
+ DateTimeFormatter.prototype.weekday_local = function(date, pattern, length) {
489
+ var day;
490
+ switch (length) {
491
+ case 1:
492
+ case 2:
493
+ day = date.getDay();
494
+ if (day === 0) {
495
+ return "7";
496
+ } else {
497
+ return day.toString();
498
+ }
499
+ break;
500
+ default:
501
+ return this.weekday(date, pattern, length);
502
+ }
503
+ };
504
+
505
+ DateTimeFormatter.prototype.weekday_local_stand_alone = function(date, pattern, length) {
506
+ switch (length) {
507
+ case 1:
508
+ return this.weekday_local(date, pattern, length);
509
+ default:
510
+ return this.weekday(date, pattern, length);
511
+ }
512
+ };
513
+
514
+ DateTimeFormatter.prototype.period = function(time, pattern, length) {
515
+ if (time.getHours() > 11) {
516
+ return TwitterCldr.Calendar.calendar.periods.format.wide["pm"];
517
+ } else {
518
+ return TwitterCldr.Calendar.calendar.periods.format.wide["am"];
519
+ }
520
+ };
521
+
522
+ DateTimeFormatter.prototype.hour = function(time, pattern, length) {
523
+ var hour;
524
+ hour = time.getHours();
525
+ switch (pattern[0]) {
526
+ case 'h':
527
+ if (hour > 12) {
528
+ hour = hour - 12;
529
+ } else if (hour === 0) {
530
+ hour = 12;
531
+ }
532
+ break;
533
+ case 'K':
534
+ if (hour > 11) {
535
+ hour = hour - 12;
536
+ }
537
+ break;
538
+ case 'k':
539
+ if (hour === 0) {
540
+ hour = 24;
541
+ }
542
+ }
543
+ if (length === 1) {
544
+ return hour.toString();
545
+ } else {
546
+ return ("000000" + hour.toString()).slice(-length);
547
+ }
548
+ };
549
+
550
+ DateTimeFormatter.prototype.minute = function(time, pattern, length) {
551
+ if (length === 1) {
552
+ return time.getMinutes().toString();
553
+ } else {
554
+ return ("000000" + time.getMinutes().toString()).slice(-length);
555
+ }
556
+ };
557
+
558
+ DateTimeFormatter.prototype.second = function(time, pattern, length) {
559
+ if (length === 1) {
560
+ return time.getSeconds().toString();
561
+ } else {
562
+ return ("000000" + time.getSeconds().toString()).slice(-length);
563
+ }
564
+ };
565
+
566
+ DateTimeFormatter.prototype.second_fraction = function(time, pattern, length) {
567
+ if (length > 6) {
568
+ throw 'can not use the S format with more than 6 digits';
569
+ }
570
+ return ("000000" + Math.round(Math.pow(time.getMilliseconds() * 100.0, 6 - length)).toString()).slice(-length);
571
+ };
572
+
573
+ DateTimeFormatter.prototype.timezone = function(time, pattern, length) {
574
+ var hours, minutes, offset, offsetString, sign;
575
+ offset = time.getTimezoneOffset();
576
+ hours = ("00" + (Math.abs(offset) / 60).toString()).slice(-2);
577
+ minutes = ("00" + (Math.abs(offset) % 60).toString()).slice(-2);
578
+ sign = offset > 0 ? "-" : "+";
579
+ offsetString = sign + hours + ":" + minutes;
580
+ switch (length) {
581
+ case 1:
582
+ case 2:
583
+ case 3:
584
+ return offsetString;
585
+ default:
586
+ return "UTC" + offsetString;
587
+ }
588
+ };
589
+
590
+ DateTimeFormatter.prototype.timezone_generic_non_location = function(time, pattern, length) {
591
+ throw 'not yet implemented (requires timezone translation data")';
592
+ };
593
+
594
+ return DateTimeFormatter;
595
+
596
+ })();
597
+
598
+ TwitterCldr.AdditionalDateFormatSelector = (function() {
599
+
600
+ function AdditionalDateFormatSelector(pattern_hash) {
601
+ this.pattern_hash = pattern_hash;
602
+ }
603
+
604
+ AdditionalDateFormatSelector.prototype.find_closest = function(goal_pattern) {
605
+ var key, min_key, min_rank, rank, ranks;
606
+ if (!(goal_pattern != null) || goal_pattern.trim().length === 0) {
607
+ return null;
608
+ } else {
609
+ ranks = this.rank(goal_pattern);
610
+ min_rank = 100;
611
+ min_key = null;
612
+ for (key in ranks) {
613
+ rank = ranks[key];
614
+ if (rank < min_rank) {
615
+ min_rank = rank;
616
+ min_key = key;
617
+ }
618
+ }
619
+ return min_key;
620
+ }
621
+ };
622
+
623
+ AdditionalDateFormatSelector.prototype.patterns = function() {
624
+ var key, _results;
625
+ _results = [];
626
+ for (key in this.pattern_hash) {
627
+ _results.push(key);
628
+ }
629
+ return _results;
630
+ };
631
+
632
+ AdditionalDateFormatSelector.prototype.separate = function(pattern_key) {
633
+ var cur_char, last_char, result, _i, _len;
634
+ last_char = "";
635
+ result = [];
636
+ for (_i = 0, _len = pattern_key.length; _i < _len; _i++) {
637
+ cur_char = pattern_key[_i];
638
+ if (cur_char === last_char) {
639
+ result[result.length - 1] += cur_char;
640
+ } else {
641
+ result.push(cur_char);
642
+ }
643
+ last_char = cur_char;
644
+ }
645
+ return result;
646
+ };
647
+
648
+ AdditionalDateFormatSelector.prototype.all_separated_patterns = function() {
649
+ var key, _results;
650
+ _results = [];
651
+ for (key in this.pattern_hash) {
652
+ _results.push(this.separate(key));
653
+ }
654
+ return _results;
655
+ };
656
+
657
+ AdditionalDateFormatSelector.prototype.score = function(entities, goal_entities) {
658
+ var score;
659
+ score = this.exist_score(entities, goal_entities) * 2;
660
+ score += this.position_score(entities, goal_entities);
661
+ return score + this.count_score(entities, goal_entities);
662
+ };
663
+
664
+ AdditionalDateFormatSelector.prototype.position_score = function(entities, goal_entities) {
665
+ var found, goal_entity, index, sum;
666
+ sum = 0;
667
+ for (index in goal_entities) {
668
+ goal_entity = goal_entities[index];
669
+ found = entities.indexOf(goal_entity);
670
+ if (found > -1) {
671
+ sum += Math.abs(found - index);
672
+ }
673
+ }
674
+ return sum;
675
+ };
676
+
677
+ AdditionalDateFormatSelector.prototype.exist_score = function(entities, goal_entities) {
678
+ var count, entity, goal_entity, _i, _len;
679
+ count = 0;
680
+ for (_i = 0, _len = goal_entities.length; _i < _len; _i++) {
681
+ goal_entity = goal_entities[_i];
682
+ if (!(((function() {
683
+ var _j, _len1, _results;
684
+ _results = [];
685
+ for (_j = 0, _len1 = entities.length; _j < _len1; _j++) {
686
+ entity = entities[_j];
687
+ if (entity[0] === goal_entity[0]) {
688
+ _results.push(entity);
689
+ }
690
+ }
691
+ return _results;
692
+ })()).length > 0)) {
693
+ count += 1;
694
+ }
695
+ }
696
+ return count;
697
+ };
698
+
699
+ AdditionalDateFormatSelector.prototype.count_score = function(entities, goal_entities) {
700
+ var entity, found_entity, goal_entity, sum, _i, _len;
701
+ sum = 0;
702
+ for (_i = 0, _len = goal_entities.length; _i < _len; _i++) {
703
+ goal_entity = goal_entities[_i];
704
+ found_entity = ((function() {
705
+ var _j, _len1, _results;
706
+ _results = [];
707
+ for (_j = 0, _len1 = entities.length; _j < _len1; _j++) {
708
+ entity = entities[_j];
709
+ if (entity[0] === goal_entity[0]) {
710
+ _results.push(entity);
711
+ }
712
+ }
713
+ return _results;
714
+ })())[0];
715
+ if (found_entity != null) {
716
+ sum += Math.abs(found_entity.length - goal_entity.length);
717
+ }
718
+ }
719
+ return sum;
720
+ };
721
+
722
+ AdditionalDateFormatSelector.prototype.rank = function(goal_pattern) {
723
+ var result, separated_goal_pattern, separated_pattern, _i, _len, _ref;
724
+ separated_goal_pattern = this.separate(goal_pattern);
725
+ result = {};
726
+ _ref = this.all_separated_patterns();
727
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
728
+ separated_pattern = _ref[_i];
729
+ result[separated_pattern.join("")] = this.score(separated_pattern, separated_goal_pattern);
730
+ }
731
+ return result;
732
+ };
733
+
734
+ return AdditionalDateFormatSelector;
735
+
736
+ })();
737
+
738
+ TwitterCldr.NumberFormatter = (function() {
739
+
740
+ function NumberFormatter() {
741
+ this.all_tokens = {"decimal":{"positive":["","#,##0.###"],"negative":["-","#,##0.###"]},"percent":{"positive":["","#,##0","%"],"negative":["-","#,##0","%"]},"currency":{"positive":["","#,##0.00"," ¤"],"negative":["-","#,##0.00"," ¤"]},"short_decimal":{"positive":{"1000":["","0"],"10000":["","00"," хиљ"],"100000":["","000"," хиљ"],"1000000":["","0"," мил"],"10000000":["","00"," мил"],"100000000":["","000"," мил"],"1000000000":["","0"," млрд"],"10000000000":["","00"," млрд"],"100000000000":["","000"," млрд"],"1000000000000":["","0"," бил"],"10000000000000":["","00"," бил"],"100000000000000":["","000"," бил"]},"negative":{"1000":["-","0"],"10000":["-","00"," хиљ"],"100000":["-","000"," хиљ"],"1000000":["-","0"," мил"],"10000000":["-","00"," мил"],"100000000":["-","000"," мил"],"1000000000":["-","0"," млрд"],"10000000000":["-","00"," млрд"],"100000000000":["-","000"," млрд"],"1000000000000":["-","0"," бил"],"10000000000000":["-","00"," бил"],"100000000000000":["-","000"," бил"]}},"long_decimal":{"positive":{"1000":["","0"," хиљада"],"10000":["","00"," хиљада"],"100000":["","000"," хиљада"],"1000000":["","0"," милиона"],"10000000":["","00"," милиона"],"100000000":["","000"," милиона"],"1000000000":["","0"," милијарди"],"10000000000":["","00"," милијарди"],"100000000000":["","000"," милијарди"],"1000000000000":["","0"," трилиона"],"10000000000000":["","00"," трилиона"],"100000000000000":["","000"," трилиона"]},"negative":{"1000":["-","0"," хиљада"],"10000":["-","00"," хиљада"],"100000":["-","000"," хиљада"],"1000000":["-","0"," милиона"],"10000000":["-","00"," милиона"],"100000000":["-","000"," милиона"],"1000000000":["-","0"," милијарди"],"10000000000":["-","00"," милијарди"],"100000000000":["-","000"," милијарди"],"1000000000000":["-","0"," трилиона"],"10000000000000":["-","00"," трилиона"],"100000000000000":["-","000"," трилиона"]}}};
742
+ this.tokens = [];
743
+ this.symbols = {"alias":"","decimal":",","exponential":"E","group":".","infinity":"∞","list":";","minus_sign":"-","nan":"NaN","per_mille":"‰","percent_sign":"%","plus_sign":"+"};
744
+ this.default_symbols = {
745
+ 'group': ',',
746
+ 'decimal': '.',
747
+ 'plus_sign': '+',
748
+ 'minus_sign': '-'
749
+ };
750
+ }
751
+
752
+ NumberFormatter.prototype.format = function(number, options) {
753
+ var fraction, fraction_format, integer_format, intg, key, opts, prefix, result, sign, suffix, val, _ref, _ref1;
754
+ if (options == null) {
755
+ options = {};
756
+ }
757
+ opts = this.default_format_options_for(number);
758
+ for (key in options) {
759
+ val = options[key];
760
+ opts[key] = options[key] != null ? options[key] : opts[key];
761
+ }
762
+ _ref = this.partition_tokens(this.get_tokens(number, opts)), prefix = _ref[0], suffix = _ref[1], integer_format = _ref[2], fraction_format = _ref[3];
763
+ number = this.transform_number(number);
764
+ _ref1 = this.parse_number(number, opts), intg = _ref1[0], fraction = _ref1[1];
765
+ result = integer_format.apply(parseFloat(intg), opts);
766
+ if (fraction) {
767
+ result += fraction_format.apply(fraction, opts);
768
+ }
769
+ sign = number < 0 && prefix !== "-" ? this.symbols.minus_sign || this.default_symbols.minus_sign : "";
770
+ return "" + prefix + result + suffix;
771
+ };
772
+
773
+ NumberFormatter.prototype.transform_number = function(number) {
774
+ return number;
775
+ };
776
+
777
+ NumberFormatter.prototype.partition_tokens = function(tokens) {
778
+ return [tokens[0] || "", tokens[2] || "", new TwitterCldr.NumberFormatter.IntegerHelper(tokens[1], this.symbols), new TwitterCldr.NumberFormatter.FractionHelper(tokens[1], this.symbols)];
779
+ };
780
+
781
+ NumberFormatter.prototype.parse_number = function(number, options) {
782
+ var precision;
783
+ if (options == null) {
784
+ options = {};
785
+ }
786
+ if (options.precision != null) {
787
+ precision = options.precision;
788
+ } else {
789
+ precision = this.precision_from(number);
790
+ }
791
+ number = this.round_to(number, precision);
792
+ return Math.abs(number).toFixed(precision).split(".");
793
+ };
794
+
795
+ NumberFormatter.prototype.precision_from = function(num) {
796
+ var parts;
797
+ parts = num.toString().split(".");
798
+ if (parts.length === 2) {
799
+ return parts[1].length;
800
+ } else {
801
+ return 0;
802
+ }
803
+ };
804
+
805
+ NumberFormatter.prototype.round_to = function(number, precision) {
806
+ var factor;
807
+ factor = Math.pow(10, precision);
808
+ return Math.round(number * factor) / factor;
809
+ };
810
+
811
+ NumberFormatter.prototype.get_tokens = function() {
812
+ throw "get_tokens() not implemented - use a derived class like PercentFormatter.";
813
+ };
814
+
815
+ return NumberFormatter;
816
+
817
+ })();
818
+
819
+ TwitterCldr.PercentFormatter = (function(_super) {
820
+
821
+ __extends(PercentFormatter, _super);
822
+
823
+ function PercentFormatter(options) {
824
+ if (options == null) {
825
+ options = {};
826
+ }
827
+ this.default_percent_sign = "%";
828
+ PercentFormatter.__super__.constructor.apply(this, arguments);
829
+ }
830
+
831
+ PercentFormatter.prototype.format = function(number, options) {
832
+ if (options == null) {
833
+ options = {};
834
+ }
835
+ return PercentFormatter.__super__.format.call(this, number, options).replace('¤', this.symbols.percent_sign || this.default_percent_sign);
836
+ };
837
+
838
+ PercentFormatter.prototype.default_format_options_for = function(number) {
839
+ return {
840
+ precision: 0
841
+ };
842
+ };
843
+
844
+ PercentFormatter.prototype.get_tokens = function(number, options) {
845
+ if (number < 0) {
846
+ return this.all_tokens.percent.negative;
847
+ } else {
848
+ return this.all_tokens.percent.positive;
849
+ }
850
+ };
851
+
852
+ return PercentFormatter;
853
+
854
+ })(TwitterCldr.NumberFormatter);
855
+
856
+ TwitterCldr.DecimalFormatter = (function(_super) {
857
+
858
+ __extends(DecimalFormatter, _super);
859
+
860
+ function DecimalFormatter() {
861
+ return DecimalFormatter.__super__.constructor.apply(this, arguments);
862
+ }
863
+
864
+ DecimalFormatter.prototype.format = function(number, options) {
865
+ if (options == null) {
866
+ options = {};
867
+ }
868
+ try {
869
+ return DecimalFormatter.__super__.format.call(this, number, options);
870
+ } catch (error) {
871
+ return number;
872
+ }
873
+ };
874
+
875
+ DecimalFormatter.prototype.default_format_options_for = function(number) {
876
+ return {
877
+ precision: this.precision_from(number)
878
+ };
879
+ };
880
+
881
+ DecimalFormatter.prototype.get_tokens = function(number, options) {
882
+ if (options == null) {
883
+ options = {};
884
+ }
885
+ if (number < 0) {
886
+ return this.all_tokens.decimal.negative;
887
+ } else {
888
+ return this.all_tokens.decimal.positive;
889
+ }
890
+ };
891
+
892
+ return DecimalFormatter;
893
+
894
+ })(TwitterCldr.NumberFormatter);
895
+
896
+ TwitterCldr.CurrencyFormatter = (function(_super) {
897
+
898
+ __extends(CurrencyFormatter, _super);
899
+
900
+ function CurrencyFormatter(options) {
901
+ if (options == null) {
902
+ options = {};
903
+ }
904
+ this.default_currency_symbol = "$";
905
+ this.default_precision = 2;
906
+ CurrencyFormatter.__super__.constructor.apply(this, arguments);
907
+ }
908
+
909
+ CurrencyFormatter.prototype.format = function(number, options) {
910
+ var currency;
911
+ if (options == null) {
912
+ options = {};
913
+ }
914
+ if (options.currency) {
915
+ if (TwitterCldr.Currencies != null) {
916
+ currency = TwitterCldr.Currencies.for_code(options.currency);
917
+ currency || (currency = {
918
+ symbol: options.currency
919
+ });
920
+ } else {
921
+ currency = {
922
+ symbol: options.currency
923
+ };
924
+ }
925
+ } else {
926
+ currency = {
927
+ symbol: this.default_currency_symbol
928
+ };
929
+ }
930
+ return CurrencyFormatter.__super__.format.call(this, number, options).replace('¤', currency.symbol);
931
+ };
932
+
933
+ CurrencyFormatter.prototype.default_format_options_for = function(number) {
934
+ var precision;
935
+ precision = this.precision_from(number);
936
+ if (precision === 0) {
937
+ precision = this.default_precision;
938
+ }
939
+ return {
940
+ precision: precision
941
+ };
942
+ };
943
+
944
+ CurrencyFormatter.prototype.get_tokens = function(number, options) {
945
+ if (options == null) {
946
+ options = {};
947
+ }
948
+ if (number < 0) {
949
+ return this.all_tokens.currency.negative;
950
+ } else {
951
+ return this.all_tokens.currency.positive;
952
+ }
953
+ };
954
+
955
+ return CurrencyFormatter;
956
+
957
+ })(TwitterCldr.NumberFormatter);
958
+
959
+ TwitterCldr.AbbreviatedNumberFormatter = (function(_super) {
960
+
961
+ __extends(AbbreviatedNumberFormatter, _super);
962
+
963
+ function AbbreviatedNumberFormatter() {
964
+ return AbbreviatedNumberFormatter.__super__.constructor.apply(this, arguments);
965
+ }
966
+
967
+ AbbreviatedNumberFormatter.prototype.NUMBER_MAX = Math.pow(10, 15);
968
+
969
+ AbbreviatedNumberFormatter.prototype.NUMBER_MIN = 1000;
970
+
971
+ AbbreviatedNumberFormatter.prototype.default_format_options_for = function(number) {
972
+ return {
973
+ precision: this.precision_from(number)
974
+ };
975
+ };
976
+
977
+ AbbreviatedNumberFormatter.prototype.get_type = function() {
978
+ return "decimal";
979
+ };
980
+
981
+ AbbreviatedNumberFormatter.prototype.get_key = function(number) {
982
+ var i, zeroes;
983
+ zeroes = ((function() {
984
+ var _i, _ref, _results;
985
+ _results = [];
986
+ for (i = _i = 0, _ref = Math.floor(number).toString().length - 1; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
987
+ _results.push("0");
988
+ }
989
+ return _results;
990
+ })()).join("");
991
+ return "1" + zeroes;
992
+ };
993
+
994
+ AbbreviatedNumberFormatter.prototype.get_tokens = function(number, options) {
995
+ var format, tokens, type;
996
+ if (options == null) {
997
+ options = {};
998
+ }
999
+ type = (number < this.NUMBER_MAX) && (number >= this.NUMBER_MIN) ? this.get_type() : "decimal";
1000
+ format = type === this.get_type() ? this.get_key(number) : null;
1001
+ tokens = this.all_tokens[type];
1002
+ tokens = number < 0 ? tokens.negative : tokens.positive;
1003
+ if (format != null) {
1004
+ tokens = tokens[format];
1005
+ }
1006
+ return tokens;
1007
+ };
1008
+
1009
+ AbbreviatedNumberFormatter.prototype.transform_number = function(number) {
1010
+ var sig_figs;
1011
+ if ((number < this.NUMBER_MAX) && (number >= this.NUMBER_MIN)) {
1012
+ sig_figs = (parseInt(number).toString().length - 1) % 3;
1013
+ return parseInt(number.toString().slice(0, +sig_figs + 1 || 9e9));
1014
+ } else {
1015
+ return number;
1016
+ }
1017
+ };
1018
+
1019
+ return AbbreviatedNumberFormatter;
1020
+
1021
+ })(TwitterCldr.NumberFormatter);
1022
+
1023
+ TwitterCldr.ShortDecimalFormatter = (function(_super) {
1024
+
1025
+ __extends(ShortDecimalFormatter, _super);
1026
+
1027
+ function ShortDecimalFormatter() {
1028
+ return ShortDecimalFormatter.__super__.constructor.apply(this, arguments);
1029
+ }
1030
+
1031
+ ShortDecimalFormatter.prototype.get_type = function() {
1032
+ return "short_decimal";
1033
+ };
1034
+
1035
+ return ShortDecimalFormatter;
1036
+
1037
+ })(TwitterCldr.AbbreviatedNumberFormatter);
1038
+
1039
+ TwitterCldr.LongDecimalFormatter = (function(_super) {
1040
+
1041
+ __extends(LongDecimalFormatter, _super);
1042
+
1043
+ function LongDecimalFormatter() {
1044
+ return LongDecimalFormatter.__super__.constructor.apply(this, arguments);
1045
+ }
1046
+
1047
+ LongDecimalFormatter.prototype.get_type = function() {
1048
+ return "long_decimal";
1049
+ };
1050
+
1051
+ return LongDecimalFormatter;
1052
+
1053
+ })(TwitterCldr.AbbreviatedNumberFormatter);
1054
+
1055
+ TwitterCldr.NumberFormatter.BaseHelper = (function() {
1056
+
1057
+ function BaseHelper() {}
1058
+
1059
+ BaseHelper.prototype.interpolate = function(string, value, orientation) {
1060
+ var i, length, start;
1061
+ if (orientation == null) {
1062
+ orientation = "right";
1063
+ }
1064
+ value = value.toString();
1065
+ length = value.length;
1066
+ start = orientation === "left" ? 0 : -length;
1067
+ if (string.length < length) {
1068
+ string = (((function() {
1069
+ var _i, _results;
1070
+ _results = [];
1071
+ for (i = _i = 0; 0 <= length ? _i < length : _i > length; i = 0 <= length ? ++_i : --_i) {
1072
+ _results.push("#");
1073
+ }
1074
+ return _results;
1075
+ })()).join("") + string).slice(-length);
1076
+ }
1077
+ if (start < 0) {
1078
+ string = string.slice(0, start + string.length) + value;
1079
+ } else {
1080
+ string = string.slice(0, start) + value + string.slice(length);
1081
+ }
1082
+ return string.replace(/#/g, "");
1083
+ };
1084
+
1085
+ return BaseHelper;
1086
+
1087
+ })();
1088
+
1089
+ TwitterCldr.NumberFormatter.IntegerHelper = (function(_super) {
1090
+
1091
+ __extends(IntegerHelper, _super);
1092
+
1093
+ function IntegerHelper(token, symbols) {
1094
+ var format;
1095
+ if (symbols == null) {
1096
+ symbols = {};
1097
+ }
1098
+ format = token.split('.')[0];
1099
+ this.format = this.prepare_format(format, symbols);
1100
+ this.groups = this.parse_groups(format);
1101
+ this.separator = symbols.group || ',';
1102
+ }
1103
+
1104
+ IntegerHelper.prototype.apply = function(number, options) {
1105
+ if (options == null) {
1106
+ options = {};
1107
+ }
1108
+ return this.format_groups(this.interpolate(this.format, parseInt(number)));
1109
+ };
1110
+
1111
+ IntegerHelper.prototype.format_groups = function(string) {
1112
+ var cur_token, token, tokens;
1113
+ if (this.groups.length === 0) {
1114
+ return string;
1115
+ }
1116
+ tokens = [];
1117
+ cur_token = this.chop_group(string, this.groups[0]);
1118
+ tokens.push(cur_token);
1119
+ if (cur_token) {
1120
+ string = string.slice(0, string.length - cur_token.length);
1121
+ }
1122
+ while (string.length > this.groups[this.groups.length - 1]) {
1123
+ cur_token = this.chop_group(string, this.groups[this.groups.length - 1]);
1124
+ tokens.push(cur_token);
1125
+ if (cur_token) {
1126
+ string = string.slice(0, string.length - cur_token.length);
1127
+ }
1128
+ }
1129
+ tokens.push(string);
1130
+ return ((function() {
1131
+ var _i, _len, _results;
1132
+ _results = [];
1133
+ for (_i = 0, _len = tokens.length; _i < _len; _i++) {
1134
+ token = tokens[_i];
1135
+ if (token !== null) {
1136
+ _results.push(token);
1137
+ }
1138
+ }
1139
+ return _results;
1140
+ })()).reverse().join(this.separator);
1141
+ };
1142
+
1143
+ IntegerHelper.prototype.parse_groups = function(format) {
1144
+ var index, rest, width, widths;
1145
+ index = format.lastIndexOf(',');
1146
+ if (!(index > 0)) {
1147
+ return [];
1148
+ }
1149
+ rest = format.slice(0, index);
1150
+ widths = [format.length - index - 1];
1151
+ if (rest.lastIndexOf(',') > -1) {
1152
+ widths.push(rest.length - rest.lastIndexOf(',') - 1);
1153
+ }
1154
+ widths = (function() {
1155
+ var _i, _len, _results;
1156
+ _results = [];
1157
+ for (_i = 0, _len = widths.length; _i < _len; _i++) {
1158
+ width = widths[_i];
1159
+ if (width !== null) {
1160
+ _results.push(width);
1161
+ }
1162
+ }
1163
+ return _results;
1164
+ })();
1165
+ widths.reverse();
1166
+ return ((function() {
1167
+ var _i, _ref, _results;
1168
+ _results = [];
1169
+ for (index = _i = 0, _ref = widths.length; 0 <= _ref ? _i < _ref : _i > _ref; index = 0 <= _ref ? ++_i : --_i) {
1170
+ if (widths.indexOf(widths[index], index + 1) === -1) {
1171
+ _results.push(widths[index]);
1172
+ }
1173
+ }
1174
+ return _results;
1175
+ })()).reverse();
1176
+ };
1177
+
1178
+ IntegerHelper.prototype.chop_group = function(string, size) {
1179
+ if (string.length > size) {
1180
+ return string.slice(-size);
1181
+ } else {
1182
+ return null;
1183
+ }
1184
+ };
1185
+
1186
+ IntegerHelper.prototype.prepare_format = function(format, symbols) {
1187
+ return format.replace(",", "").replace("+", symbols.plus_sign).replace("-", symbols.minus_sign);
1188
+ };
1189
+
1190
+ return IntegerHelper;
1191
+
1192
+ })(TwitterCldr.NumberFormatter.BaseHelper);
1193
+
1194
+ TwitterCldr.NumberFormatter.FractionHelper = (function(_super) {
1195
+
1196
+ __extends(FractionHelper, _super);
1197
+
1198
+ function FractionHelper(token, symbols) {
1199
+ if (symbols == null) {
1200
+ symbols = {};
1201
+ }
1202
+ this.format = token ? token.split('.').pop() : "";
1203
+ this.decimal = symbols.decimal || ".";
1204
+ this.precision = this.format.length;
1205
+ }
1206
+
1207
+ FractionHelper.prototype.apply = function(fraction, options) {
1208
+ var precision;
1209
+ if (options == null) {
1210
+ options = {};
1211
+ }
1212
+ precision = options.precision != null ? options.precision : this.precision;
1213
+ if (precision > 0) {
1214
+ return this.decimal + this.interpolate(this.format_for(options), fraction, "left");
1215
+ } else {
1216
+ return "";
1217
+ }
1218
+ };
1219
+
1220
+ FractionHelper.prototype.format_for = function(options) {
1221
+ var i, precision;
1222
+ precision = options.precision != null ? options.precision : this.precision;
1223
+ if (precision) {
1224
+ return ((function() {
1225
+ var _i, _results;
1226
+ _results = [];
1227
+ for (i = _i = 0; 0 <= precision ? _i < precision : _i > precision; i = 0 <= precision ? ++_i : --_i) {
1228
+ _results.push("0");
1229
+ }
1230
+ return _results;
1231
+ })()).join("");
1232
+ } else {
1233
+ return this.format;
1234
+ }
1235
+ };
1236
+
1237
+ return FractionHelper;
1238
+
1239
+ })(TwitterCldr.NumberFormatter.BaseHelper);
1240
+
1241
+ TwitterCldr.Currencies = (function() {
1242
+
1243
+ function Currencies() {}
1244
+
1245
+ Currencies.currencies = {"ADP":{"currency":"ADP","name":"Andorran peseta","symbol":null},"AED":{"currency":"AED","name":"UAE dirham","symbol":null},"AFA":{"currency":"AFA","name":"Afghan afghani (1927-2002)","symbol":null},"AFN":{"currency":"AFN","name":"Afghan Afghani","symbol":null},"ALK":{"currency":"ALK","name":"Albanian lek (1946-1965)","symbol":null},"ALL":{"currency":"ALL","name":"Albanian lek","symbol":null},"AMD":{"currency":"AMD","name":"Armenian dram","symbol":null},"ANG":{"currency":"ANG","name":"Netherlands Antillean guilder","symbol":null},"AOA":{"currency":"AOA","name":"Angolan kwanza","symbol":null},"AOK":{"currency":"AOK","name":"Angolan kwanza (1977-1991)","symbol":null},"AON":{"currency":"AON","name":"Angolan new kwanza (1990-2000)","symbol":null},"AOR":{"currency":"AOR","name":"Angolan readjusted kwanza (1995-1999)","symbol":null},"ARA":{"currency":"ARA","name":"Argentine austral","symbol":null},"ARL":{"currency":"ARL","name":"Argentine peso ley (1970-1983)","symbol":null},"ARM":{"currency":"ARM","name":"Argentine peso (1881-1970)","symbol":null},"ARP":{"currency":"ARP","name":"Argentine peso (1983-1985)","symbol":null},"ARS":{"currency":"ARS","name":"Argentine peso","symbol":null},"ATS":{"currency":"ATS","name":"Austrian schilling","symbol":null},"AUD":{"currency":"AUD","name":"Australian dollar","symbol":"A$"},"AWG":{"currency":"AWG","name":"Aruban florin","symbol":null},"AZM":{"currency":"AZM","name":"Azerbaijani manat (1993-2006)","symbol":null},"AZN":{"currency":"AZN","name":"Azerbaijani manat","symbol":null},"BAD":{"currency":"BAD","name":"Bosnia-Herzegovina dinar (1992-1994)","symbol":null},"BAM":{"currency":"BAM","name":"Bosnia-Herzegovina convertible mark","symbol":null},"BAN":{"currency":"BAN","name":"Bosnia-Herzegovina new dinar (1994-1997)","symbol":null},"BBD":{"currency":"BBD","name":"Barbadian dollar","symbol":null},"BDT":{"currency":"BDT","name":"Bangladeshi taka","symbol":null},"BEC":{"currency":"BEC","name":"Belgian franc (convertible)","symbol":null},"BEF":{"currency":"BEF","name":"Belgian franc","symbol":null},"BEL":{"currency":"BEL","name":"Belgian franc (financial)","symbol":null},"BGL":{"currency":"BGL","name":"Bulgarian hard lev","symbol":null},"BGM":{"currency":"BGM","name":"Bulgarian socialist lev","symbol":null},"BGN":{"currency":"BGN","name":"Bulgarian lev","symbol":null},"BGO":{"currency":"BGO","name":"Bulgarian lev (1879-1952)","symbol":null},"BHD":{"currency":"BHD","name":"Bahraini dinar","symbol":null},"BIF":{"currency":"BIF","name":"Burundian franc","symbol":null},"BMD":{"currency":"BMD","name":"Bermudan dollar","symbol":null},"BND":{"currency":"BND","name":"Brunei dollar","symbol":null},"BOB":{"currency":"BOB","name":"Bolivian boliviano","symbol":null},"BOL":{"currency":"BOL","name":"Bolivian boliviano (1863-1963)","symbol":null},"BOP":{"currency":"BOP","name":"Bolivian peso","symbol":null},"BOV":{"currency":"BOV","name":"Bolivian mvdol","symbol":null},"BRB":{"currency":"BRB","name":"Brazilian new cruzeiro (1967-1986)","symbol":null},"BRC":{"currency":"BRC","name":"Brazilian cruzado (1986-1989)","symbol":null},"BRE":{"currency":"BRE","name":"Brazilian cruzeiro (1990-1993)","symbol":null},"BRL":{"currency":"BRL","name":"Brazilian real","symbol":"R$"},"BRN":{"currency":"BRN","name":"Brazilian new cruzado (1989-1990)","symbol":null},"BRR":{"currency":"BRR","name":"Brazilian cruzeiro (1993-1994)","symbol":null},"BRZ":{"currency":"BRZ","name":"Brazilian cruzeiro (1942-1967)","symbol":null},"BSD":{"currency":"BSD","name":"Bahamian dollar","symbol":null},"BTN":{"currency":"BTN","name":"Bhutanese ngultrum","symbol":null},"BUK":{"currency":"BUK","name":"Burmese kyat","symbol":null},"BWP":{"currency":"BWP","name":"Botswanan pula","symbol":null},"BYB":{"currency":"BYB","name":"Belarusian new ruble (1994-1999)","symbol":null},"BYR":{"currency":"BYR","name":"Belarusian ruble","symbol":null},"BZD":{"currency":"BZD","name":"Belize dollar","symbol":null},"CAD":{"currency":"CAD","name":"Canadian dollar","symbol":"CA$"},"CDF":{"currency":"CDF","name":"Congolese franc","symbol":null},"CHE":{"currency":"CHE","name":"WIR euro","symbol":null},"CHF":{"currency":"CHF","name":"Swiss franc","symbol":null},"CHW":{"currency":"CHW","name":"WIR franc","symbol":null},"CLE":{"currency":"CLE","name":"Chilean escudo","symbol":null},"CLF":{"currency":"CLF","name":"Chilean unit of account (UF)","symbol":null},"CLP":{"currency":"CLP","name":"Chilean peso","symbol":null},"CNX":{"currency":"CNX","name":"Chinese People’s Bank dollar","symbol":null},"CNY":{"currency":"CNY","name":"Chinese yuan","symbol":"CN¥"},"COP":{"currency":"COP","name":"Colombian peso","symbol":null},"COU":{"currency":"COU","name":"Colombian real value unit","symbol":null},"CRC":{"currency":"CRC","name":"Costa Rican colón","symbol":null},"CSD":{"currency":"CSD","name":"Serbian dinar (2002-2006)","symbol":null},"CSK":{"currency":"CSK","name":"Czechoslovak hard koruna","symbol":null},"CUC":{"currency":"CUC","name":"Cuban convertible peso","symbol":null},"CUP":{"currency":"CUP","name":"Cuban peso","symbol":null},"CVE":{"currency":"CVE","name":"Cape Verdean escudo","symbol":null},"CYP":{"currency":"CYP","name":"Cypriot pound","symbol":null},"CZK":{"currency":"CZK","name":"Czech Republic koruna","symbol":null},"DDM":{"currency":"DDM","name":"East German mark","symbol":null},"DEM":{"currency":"DEM","name":"German mark","symbol":null},"DJF":{"currency":"DJF","name":"Djiboutian franc","symbol":null},"DKK":{"currency":"DKK","name":"Danish krone","symbol":null},"DOP":{"currency":"DOP","name":"Dominican peso","symbol":null},"DZD":{"currency":"DZD","name":"Algerian dinar","symbol":null},"ECS":{"currency":"ECS","name":"Ecuadorian sucre","symbol":null},"ECV":{"currency":"ECV","name":"Ecuadorian unit of constant value","symbol":null},"EEK":{"currency":"EEK","name":"Estonian kroon","symbol":null},"EGP":{"currency":"EGP","name":"Egyptian pound","symbol":null},"ERN":{"currency":"ERN","name":"Eritrean nakfa","symbol":null},"ESA":{"currency":"ESA","name":"Spanish peseta (A account)","symbol":null},"ESB":{"currency":"ESB","name":"Spanish peseta (convertible account)","symbol":null},"ESP":{"currency":"ESP","name":"Spanish peseta","symbol":null},"ETB":{"currency":"ETB","name":"Ethiopian birr","symbol":null},"EUR":{"currency":"EUR","name":"euro","symbol":"€"},"FIM":{"currency":"FIM","name":"Finnish markka","symbol":null},"FJD":{"currency":"FJD","name":"Fijian dollar","symbol":null},"FKP":{"currency":"FKP","name":"Falkland Islands pound","symbol":null},"FRF":{"currency":"FRF","name":"French franc","symbol":null},"GBP":{"currency":"GBP","name":"British pound sterling","symbol":"£"},"GEK":{"currency":"GEK","name":"Georgian kupon larit","symbol":null},"GEL":{"currency":"GEL","name":"Georgian lari","symbol":null},"GHC":{"currency":"GHC","name":"Ghanaian cedi (1979-2007)","symbol":null},"GHS":{"currency":"GHS","name":"Ghanaian cedi","symbol":null},"GIP":{"currency":"GIP","name":"Gibraltar pound","symbol":null},"GMD":{"currency":"GMD","name":"Gambian dalasi","symbol":null},"GNF":{"currency":"GNF","name":"Guinean franc","symbol":null},"GNS":{"currency":"GNS","name":"Guinean syli","symbol":null},"GQE":{"currency":"GQE","name":"Equatorial Guinean ekwele","symbol":null},"GRD":{"currency":"GRD","name":"Greek drachma","symbol":null},"GTQ":{"currency":"GTQ","name":"Guatemalan quetzal","symbol":null},"GWE":{"currency":"GWE","name":"Portuguese Guinea escudo","symbol":null},"GWP":{"currency":"GWP","name":"Guinea-Bissau peso","symbol":null},"GYD":{"currency":"GYD","name":"Guyanaese dollar","symbol":null},"HKD":{"currency":"HKD","name":"Hong Kong dollar","symbol":"HK$"},"HNL":{"currency":"HNL","name":"Honduran lempira","symbol":null},"HRD":{"currency":"HRD","name":"Croatian dinar","symbol":null},"HRK":{"currency":"HRK","name":"Croatian kuna","symbol":null},"HTG":{"currency":"HTG","name":"Haitian gourde","symbol":null},"HUF":{"currency":"HUF","name":"Hungarian forint","symbol":null},"IDR":{"currency":"IDR","name":"Indonesian rupiah","symbol":null},"IEP":{"currency":"IEP","name":"Irish pound","symbol":null},"ILP":{"currency":"ILP","name":"Israeli pound","symbol":null},"ILR":{"currency":"ILR","name":"Israeli sheqel (1980-1985)","symbol":null},"ILS":{"currency":"ILS","name":"Israeli new sheqel","symbol":"₪"},"INR":{"currency":"INR","name":"Indian rupee","symbol":"₹"},"IQD":{"currency":"IQD","name":"Iraqi dinar","symbol":null},"IRR":{"currency":"IRR","name":"Iranian rial","symbol":null},"ISJ":{"currency":"ISJ","name":"Icelandic króna (1918-1981)","symbol":null},"ISK":{"currency":"ISK","name":"Icelandic króna","symbol":null},"ITL":{"currency":"ITL","name":"Italian lira","symbol":null},"JMD":{"currency":"JMD","name":"Jamaican dollar","symbol":null},"JOD":{"currency":"JOD","name":"Jordanian dinar","symbol":null},"JPY":{"currency":"JPY","name":"Japanese yen","symbol":"¥"},"KES":{"currency":"KES","name":"Kenyan shilling","symbol":null},"KGS":{"currency":"KGS","name":"Kyrgystani som","symbol":null},"KHR":{"currency":"KHR","name":"Cambodian riel","symbol":null},"KMF":{"currency":"KMF","name":"Comorian franc","symbol":null},"KPW":{"currency":"KPW","name":"North Korean won","symbol":null},"KRH":{"currency":"KRH","name":"South Korean hwan (1953-1962)","symbol":null},"KRO":{"currency":"KRO","name":"South Korean won (1945-1953)","symbol":null},"KRW":{"currency":"KRW","name":"South Korean won","symbol":"₩"},"KWD":{"currency":"KWD","name":"Kuwaiti dinar","symbol":null},"KYD":{"currency":"KYD","name":"Cayman Islands dollar","symbol":null},"KZT":{"currency":"KZT","name":"Kazakhstani tenge","symbol":null},"LAK":{"currency":"LAK","name":"Laotian kip","symbol":null},"LBP":{"currency":"LBP","name":"Lebanese pound","symbol":null},"LKR":{"currency":"LKR","name":"Sri Lankan rupee","symbol":null},"LRD":{"currency":"LRD","name":"Liberian dollar","symbol":null},"LSL":{"currency":"LSL","name":"Lesotho loti","symbol":null},"LTL":{"currency":"LTL","name":"Lithuanian litas","symbol":null},"LTT":{"currency":"LTT","name":"Lithuanian talonas","symbol":null},"LUC":{"currency":"LUC","name":"Luxembourgian convertible franc","symbol":null},"LUF":{"currency":"LUF","name":"Luxembourgian franc","symbol":null},"LUL":{"currency":"LUL","name":"Luxembourg financial franc","symbol":null},"LVL":{"currency":"LVL","name":"Latvian lats","symbol":null},"LVR":{"currency":"LVR","name":"Latvian ruble","symbol":null},"LYD":{"currency":"LYD","name":"Libyan dinar","symbol":null},"MAD":{"currency":"MAD","name":"Moroccan dirham","symbol":null},"MAF":{"currency":"MAF","name":"Moroccan franc","symbol":null},"MCF":{"currency":"MCF","name":"Monegasque franc","symbol":null},"MDC":{"currency":"MDC","name":"Moldovan cupon","symbol":null},"MDL":{"currency":"MDL","name":"Moldovan leu","symbol":null},"MGA":{"currency":"MGA","name":"Malagasy Ariary","symbol":null},"MGF":{"currency":"MGF","name":"Malagasy franc","symbol":null},"MKD":{"currency":"MKD","name":"Macedonian denar","symbol":null},"MKN":{"currency":"MKN","name":"Macedonian denar (1992-1993)","symbol":null},"MLF":{"currency":"MLF","name":"Malian franc","symbol":null},"MMK":{"currency":"MMK","name":"Myanma kyat","symbol":null},"MNT":{"currency":"MNT","name":"Mongolian tugrik","symbol":null},"MOP":{"currency":"MOP","name":"Macanese pataca","symbol":null},"MRO":{"currency":"MRO","name":"Mauritanian ouguiya","symbol":null},"MTL":{"currency":"MTL","name":"Maltese lira","symbol":null},"MTP":{"currency":"MTP","name":"Maltese pound","symbol":null},"MUR":{"currency":"MUR","name":"Mauritian rupee","symbol":null},"MVP":{"currency":"MVP","name":"Maldivian rupee","symbol":null},"MVR":{"currency":"MVR","name":"Maldivian rufiyaa","symbol":null},"MWK":{"currency":"MWK","name":"Malawian Kwacha","symbol":null},"MXN":{"currency":"MXN","name":"Mexican peso","symbol":"MX$"},"MXP":{"currency":"MXP","name":"Mexican silver peso (1861-1992)","symbol":null},"MXV":{"currency":"MXV","name":"Mexican investment unit","symbol":null},"MYR":{"currency":"MYR","name":"Malaysian ringgit","symbol":null},"MZE":{"currency":"MZE","name":"Mozambican escudo","symbol":null},"MZM":{"currency":"MZM","name":"Mozambican metical (1980-2006)","symbol":null},"MZN":{"currency":"MZN","name":"Mozambican metical","symbol":null},"NAD":{"currency":"NAD","name":"Namibian dollar","symbol":null},"NGN":{"currency":"NGN","name":"Nigerian naira","symbol":null},"NIC":{"currency":"NIC","name":"Nicaraguan córdoba (1988-1991)","symbol":null},"NIO":{"currency":"NIO","name":"Nicaraguan córdoba","symbol":null},"NLG":{"currency":"NLG","name":"Dutch guilder","symbol":null},"NOK":{"currency":"NOK","name":"Norwegian krone","symbol":null},"NPR":{"currency":"NPR","name":"Nepalese rupee","symbol":null},"NZD":{"currency":"NZD","name":"New Zealand dollar","symbol":"NZ$"},"OMR":{"currency":"OMR","name":"Omani rial","symbol":null},"PAB":{"currency":"PAB","name":"Panamanian balboa","symbol":null},"PEI":{"currency":"PEI","name":"Peruvian inti","symbol":null},"PEN":{"currency":"PEN","name":"Peruvian nuevo sol","symbol":null},"PES":{"currency":"PES","name":"Peruvian sol (1863-1965)","symbol":null},"PGK":{"currency":"PGK","name":"Papua New Guinean kina","symbol":null},"PHP":{"currency":"PHP","name":"Philippine peso","symbol":null},"PKR":{"currency":"PKR","name":"Pakistani rupee","symbol":null},"PLN":{"currency":"PLN","name":"Polish zloty","symbol":null},"PLZ":{"currency":"PLZ","name":"Polish zloty (PLZ)","symbol":null},"PTE":{"currency":"PTE","name":"Portuguese escudo","symbol":null},"PYG":{"currency":"PYG","name":"Paraguayan guarani","symbol":null},"QAR":{"currency":"QAR","name":"Qatari rial","symbol":null},"RHD":{"currency":"RHD","name":"Rhodesian dollar","symbol":null},"ROL":{"currency":"ROL","name":"Romanian leu (1952-2006)","symbol":null},"RON":{"currency":"RON","name":"Romanian leu","symbol":null},"RSD":{"currency":"RSD","name":"Serbian dinar","symbol":null},"RUB":{"currency":"RUB","name":"Russian ruble","symbol":null},"RUR":{"currency":"RUR","name":"Russian ruble (1991-1998)","symbol":null},"RWF":{"currency":"RWF","name":"Rwandan franc","symbol":null},"SAR":{"currency":"SAR","name":"Saudi riyal","symbol":null},"SBD":{"currency":"SBD","name":"Solomon Islands dollar","symbol":null},"SCR":{"currency":"SCR","name":"Seychellois rupee","symbol":null},"SDD":{"currency":"SDD","name":"Sudanese dinar (1992-2007)","symbol":null},"SDG":{"currency":"SDG","name":"Sudanese pound","symbol":null},"SDP":{"currency":"SDP","name":"Sudanese pound (1957-1998)","symbol":null},"SEK":{"currency":"SEK","name":"Swedish krona","symbol":null},"SGD":{"currency":"SGD","name":"Singapore dollar","symbol":null},"SHP":{"currency":"SHP","name":"Saint Helena pound","symbol":null},"SIT":{"currency":"SIT","name":"Slovenian tolar","symbol":null},"SKK":{"currency":"SKK","name":"Slovak koruna","symbol":null},"SLL":{"currency":"SLL","name":"Sierra Leonean leone","symbol":null},"SOS":{"currency":"SOS","name":"Somali shilling","symbol":null},"SRD":{"currency":"SRD","name":"Surinamese dollar","symbol":null},"SRG":{"currency":"SRG","name":"Surinamese guilder","symbol":null},"SSP":{"currency":"SSP","name":"South Sudanese pound","symbol":null},"STD":{"currency":"STD","name":"São Tomé and Príncipe dobra","symbol":null},"SUR":{"currency":"SUR","name":"Soviet rouble","symbol":null},"SVC":{"currency":"SVC","name":"Salvadoran colón","symbol":null},"SYP":{"currency":"SYP","name":"Syrian pound","symbol":null},"SZL":{"currency":"SZL","name":"Swazi lilangeni","symbol":null},"THB":{"currency":"THB","name":"Thai baht","symbol":"฿"},"TJR":{"currency":"TJR","name":"Tajikistani ruble","symbol":null},"TJS":{"currency":"TJS","name":"Tajikistani somoni","symbol":null},"TMM":{"currency":"TMM","name":"Turkmenistani manat (1993-2009)","symbol":null},"TMT":{"currency":"TMT","name":"Turkmenistani manat","symbol":null},"TND":{"currency":"TND","name":"Tunisian dinar","symbol":null},"TOP":{"currency":"TOP","name":"Tongan paʻanga","symbol":null},"TPE":{"currency":"TPE","name":"Timorese escudo","symbol":null},"TRL":{"currency":"TRL","name":"Turkish lira (1922-2005)","symbol":null},"TRY":{"currency":"TRY","name":"Turkish lira","symbol":null},"TTD":{"currency":"TTD","name":"Trinidad and Tobago dollar","symbol":null},"TWD":{"currency":"TWD","name":"New Taiwan dollar","symbol":"NT$"},"TZS":{"currency":"TZS","name":"Tanzanian shilling","symbol":null},"UAH":{"currency":"UAH","name":"Ukrainian hryvnia","symbol":null},"UAK":{"currency":"UAK","name":"Ukrainian karbovanets","symbol":null},"UGS":{"currency":"UGS","name":"Ugandan shilling (1966-1987)","symbol":null},"UGX":{"currency":"UGX","name":"Ugandan shilling","symbol":null},"USD":{"currency":"USD","name":"US dollar","symbol":"$"},"USN":{"currency":"USN","name":"US dollar (next day)","symbol":null},"USS":{"currency":"USS","name":"US dollar (same day)","symbol":null},"UYI":{"currency":"UYI","name":"Uruguayan peso (indexed units)","symbol":null},"UYP":{"currency":"UYP","name":"Uruguayan peso (1975-1993)","symbol":null},"UYU":{"currency":"UYU","name":"Uruguayan peso","symbol":null},"UZS":{"currency":"UZS","name":"Uzbekistan som","symbol":null},"VEB":{"currency":"VEB","name":"Venezuelan bolívar (1871-2008)","symbol":null},"VEF":{"currency":"VEF","name":"Venezuelan bolívar","symbol":null},"VND":{"currency":"VND","name":"Vietnamese dong","symbol":"₫"},"VNN":{"currency":"VNN","name":"Vietnamese dong (1978-1985)","symbol":null},"VUV":{"currency":"VUV","name":"Vanuatu vatu","symbol":null},"WST":{"currency":"WST","name":"Samoan tala","symbol":null},"XAF":{"currency":"XAF","name":"CFA franc BEAC","symbol":"FCFA"},"XAG":{"currency":"XAG","name":"troy ounce of silver","symbol":null},"XAU":{"currency":"XAU","name":"troy ounce of gold","symbol":null},"XBA":{"currency":"XBA","name":"European composite unit","symbol":null},"XBB":{"currency":"XBB","name":"European monetary unit","symbol":null},"XBC":{"currency":"XBC","name":"European unit of account (XBC)","symbol":null},"XBD":{"currency":"XBD","name":"European unit of account (XBD)","symbol":null},"XCD":{"currency":"XCD","name":"East Caribbean dollar","symbol":"EC$"},"XDR":{"currency":"XDR","name":"special drawing rights","symbol":null},"XEU":{"currency":"XEU","name":"European currency unit","symbol":null},"XFO":{"currency":"XFO","name":"French gold franc","symbol":null},"XFU":{"currency":"XFU","name":"French UIC-franc","symbol":null},"XOF":{"currency":"XOF","name":"CFA franc BCEAO","symbol":"CFA"},"XPD":{"currency":"XPD","name":"troy ounce of palladium","symbol":null},"XPF":{"currency":"XPF","name":"CFP franc","symbol":"CFPF"},"XPT":{"currency":"XPT","name":"troy ounce of platinum","symbol":null},"XRE":{"currency":"XRE","name":"RINET Funds unit","symbol":null},"XSU":{"currency":"XSU","name":"Sucre","symbol":null},"XTS":{"currency":"XTS","name":"Testing Currency unit","symbol":null},"XUA":{"currency":"XUA","name":"ADB unit of account","symbol":null},"XXX":{"currency":"XXX","name":"(unknown unit of currency)","symbol":null},"YDD":{"currency":"YDD","name":"Yemeni dinar","symbol":null},"YER":{"currency":"YER","name":"Yemeni rial","symbol":null},"YUD":{"currency":"YUD","name":"Yugoslavian hard dinar (1966-1990)","symbol":null},"YUM":{"currency":"YUM","name":"Yugoslavian new dinar (1994-2002)","symbol":null},"YUN":{"currency":"YUN","name":"Yugoslavian convertible dinar (1990-1992)","symbol":null},"YUR":{"currency":"YUR","name":"Yugoslavian reformed dinar (1992-1993)","symbol":null},"ZAL":{"currency":"ZAL","name":"South African rand (financial)","symbol":null},"ZAR":{"currency":"ZAR","name":"South African rand","symbol":null},"ZMK":{"currency":"ZMK","name":"Zambian kwacha","symbol":null},"ZRN":{"currency":"ZRN","name":"Zairean new zaire (1993-1998)","symbol":null},"ZRZ":{"currency":"ZRZ","name":"Zairean zaire (1971-1993)","symbol":null},"ZWD":{"currency":"ZWD","name":"Zimbabwean dollar (1980-2008)","symbol":null},"ZWL":{"currency":"ZWL","name":"Zimbabwean dollar (2009)","symbol":null},"ZWR":{"currency":"ZWR","name":"Zimbabwean dollar (2008)","symbol":null}};
1246
+
1247
+ Currencies.currency_codes = function() {
1248
+ var data, _;
1249
+ return this.codes || (this.codes = (function() {
1250
+ var _ref, _results;
1251
+ _ref = this.currencies;
1252
+ _results = [];
1253
+ for (_ in _ref) {
1254
+ data = _ref[_];
1255
+ _results.push(data.code);
1256
+ }
1257
+ return _results;
1258
+ }).call(this));
1259
+ };
1260
+
1261
+ Currencies.for_code = function(currency_code) {
1262
+ var country_name, data, result, _ref;
1263
+ result = null;
1264
+ _ref = this.currencies;
1265
+ for (country_name in _ref) {
1266
+ data = _ref[country_name];
1267
+ if (data.code === currency_code) {
1268
+ result = {
1269
+ country: country_name,
1270
+ code: data.code,
1271
+ symbol: data.symbol,
1272
+ currency: data.currency
1273
+ };
1274
+ break;
1275
+ }
1276
+ }
1277
+ return result;
1278
+ };
1279
+
1280
+ return Currencies;
1281
+
1282
+ })();
1283
+
1284
+ TwitterCldr.ListFormatter = (function() {
1285
+
1286
+ function ListFormatter(options) {
1287
+ if (options == null) {
1288
+ options = {};
1289
+ }
1290
+ this.formats = {"2":"{0} и {1}","end":"{0} и {1}","middle":"{0}, {1}","start":"{0}, {1}"};
1291
+ }
1292
+
1293
+ ListFormatter.prototype.format = function(list) {
1294
+ if (this.formats[list.length.toString()] != null) {
1295
+ return this.compose(this.formats[list.length.toString()], list);
1296
+ } else {
1297
+ return this.compose_list(list);
1298
+ }
1299
+ };
1300
+
1301
+ ListFormatter.prototype.compose_list = function(list) {
1302
+ var format_key, i, result, _i, _ref;
1303
+ result = this.compose(this.formats.end || this.formats.middle || "", [list[list.length - 2], list[list.length - 1]]);
1304
+ if (list.length > 2) {
1305
+ for (i = _i = 3, _ref = list.length; 3 <= _ref ? _i <= _ref : _i >= _ref; i = 3 <= _ref ? ++_i : --_i) {
1306
+ format_key = i === list.length ? "start" : "middle";
1307
+ if (this.formats[format_key] == null) {
1308
+ format_key = "middle";
1309
+ }
1310
+ result = this.compose(this.formats[format_key] || "", [list[list.length - i], result]);
1311
+ }
1312
+ }
1313
+ return result;
1314
+ };
1315
+
1316
+ ListFormatter.prototype.compose = function(format, elements) {
1317
+ var element, result;
1318
+ elements = (function() {
1319
+ var _i, _len, _results;
1320
+ _results = [];
1321
+ for (_i = 0, _len = elements.length; _i < _len; _i++) {
1322
+ element = elements[_i];
1323
+ if (element !== null) {
1324
+ _results.push(element);
1325
+ }
1326
+ }
1327
+ return _results;
1328
+ })();
1329
+ if (elements.length > 1) {
1330
+ result = format.replace(/\{(\d+)\}/g, function() {
1331
+ return RegExp.$1;
1332
+ });
1333
+ if (TwitterCldr.is_rtl) {
1334
+ result = TwitterCldr.Bidi.from_string(result, {
1335
+ "direction": "RTL"
1336
+ }).reorder_visually().toString();
1337
+ }
1338
+ return result.replace(/(\d+)/g, function() {
1339
+ return elements[parseInt(RegExp.$1)];
1340
+ });
1341
+ } else {
1342
+ return elements[0] || "";
1343
+ }
1344
+ };
1345
+
1346
+ return ListFormatter;
1347
+
1348
+ })();
1349
+
1350
+ TwitterCldr.Bidi = (function() {
1351
+ var MAX_DEPTH;
1352
+
1353
+ MAX_DEPTH = 62;
1354
+
1355
+ function Bidi(options) {
1356
+ if (options == null) {
1357
+ options = {};
1358
+ }
1359
+ this.bidi_classes = {"BN":{"8":[0],"13":[14],"5":[127,8298],"25":[134],"0":[173,65279,917505],"2":[8203],"4":[8288],"7":[119155],"95":[917536]},"S":{"0":[9,11,31]},"B":{"0":[10,13,133,8233],"2":[28]},"WS":{"0":[12,32,5760,6158,8232,8287,12288],"10":[8192]},"ON":{"1":[33,171,174,697,884,900,1542,1550,5787,6468,8189,8448,8456,8506,12342,12443,12829,13278,42622,64830,65120,65281,126704,127338],"4":[38,187,8512,65286,65529,127942],"5":[59,91,3059,8478,11493,65307,65339,127792],"3":[123,166,2038,3898,8451,8522,12289,13004,13175,43048,43124,128249,128320],"0":[161,180,215,247,894,903,1014,1418,1758,1769,3066,5120,6464,8125,8468,8485,8487,8489,8585,12336,12448,12539,13311,42611,42888,65021,65105,65108,65128,65131,65793,67871,119365,120539,120597,120655,120713,120771,128064],"2":[182,8127,8141,8157,8173,8316,8332,8470,12349,12924,42509,65124,65506],"13":[706,722,127153],"8":[741,65110],"16":[751,127968],"6":[3192,11513,65512,68409],"9":[5008,6128,11088,65040],"10":[6144,9280,65371,128581],"33":[6622,42752],"23":[8208,128336],"14":[8245,12977,127136,127169,127185],"25":[8261,9083,11904],"15":[8528,12880],"129":[8592],"289":[8724],"93":[9110],"38":[9216],"39":[9312],"449":[9450],"82":[9901],"254":[9985],"588":[10496],"59":[11776],"88":[11931],"213":[12032],"11":[12272,65936],"24":[12296],"35":[12736],"63":[19904],"54":[42128],"31":[65072],"74":[65856],"19":[69714,127872],"65":[119296],"86":[119552],"43":[126976],"99":[127024],"32":[127744],"69":[127799,128507,128640],"36":[127904],"62":[128000],"181":[128066],"61":[128256],"115":[128768]},"ET":{"2":[35,65283],"3":[162],"1":[176,1545,2546,43064,65129,65504,65509],"0":[1423,1642,2555,2801,3065,3647,6107,8494,8723,65119],"4":[8240],"25":[8352]},"ES":{"0":[43,45,8722,64297,65291,65293],"1":[8314,8330,65122]},"CS":{"0":[44,58,160,1548,8239,8260,65104,65106,65109,65292,65306],"1":[46,65294]},"EN":{"9":[48,1776,8320,65296],"1":[178],"0":[185,8304],"5":[8308],"19":[9352],"49":[120782],"10":[127232]},"L":{"25":[65,97,5761,6576,65313,65345,65549],"0":[170,181,186,750,902,908,1417,2363,2482,2510,2519,2563,2654,2691,2761,2768,2880,2903,2947,2972,3024,3031,3133,3199,3294,3406,3415,3517,3716,3722,3725,3749,3751,3773,3782,3894,3896,3967,3973,4145,4152,4295,4301,4696,4800,6070,6108,6314,6743,6753,6965,6971,7082,7143,7150,7379,7393,8025,8027,8029,8126,8206,8305,8319,8450,8455,8469,8484,8486,8488,9109,9900,11559,11565,43047,43597,43697,43712,43714,65792,65794,69632,69932,71340,71350,119970,119995,120134],"22":[192,3090,3218,6656,11648],"30":[216,8031,13280,66304,127248],"448":[248],"6":[699,1369,2425,2474,2548,2602,2730,2858,3449,3520,3648,3737,4688,4792,6100,8118,8134,8182,11680,11688,11696,11704,11712,11720,11728,11736,43808,43816,64256,69703,69819,119997,120086,120138],"1":[720,886,2434,2447,2503,2507,2524,2575,2610,2613,2616,2738,2763,2784,2818,2831,2866,2877,2887,2891,2908,2969,2974,2979,3006,3009,3160,3168,3202,3274,3285,3296,3313,3330,3424,3458,3634,3713,3719,3754,3762,4155,4227,5941,6087,6448,6755,7078,7154,7220,7413,8526,11506,11631,12334,43346,43444,43450,43486,43567,43571,43701,44006,65596,69815,71342,110592,119171,119966,119973,127568],"4":[736,2741,2869,3125,3253,3776,3976,6512,6973,8473,8517,12337,12344,43705,64275,120128],"3":[880,890,2365,2377,2486,2493,2649,2749,2962,3137,3389,3732,3757,3804,4186,4682,4698,4746,4786,4802,4882,5902,6435,7401,8144,8490,8508,11499,12540,42896,43015,44009,66336,74864,119977,120071,120123],"2":[904,2382,2527,2622,2674,2703,2911,2958,2984,3014,3018,3073,3086,3214,3270,3342,3398,3402,3535,3570,3745,5998,6441,6681,7146,8130,8178,12293,12445,43011,43584,65498],"19":[910,2404],"82":[931],"139":[1015],"157":[1162,66560],"37":[1329,7968,11520,43264],"38":[1377,119040],"54":[2307],"9":[2392,2662,3114,3174,3242,3302,3792,3902,6112,6160,6784,6800,8458,43000,43250,43600,44016,66720,69734,69872,70079,70096,71360],"7":[2437,2821,3077,3205,3261,3333,3544,4030,6078,7360,8016,43056,43588,43758,120077,120772],"21":[2451,2579,2707,2835],"11":[2534,2990,12992,43214,65536,119982],"5":[2565,2949,4039,4231,6451,6765,7406,7960,8008,8150,42738,42889,43777,43785,43793,65474,65482,65490],"8":[2693,3507,6979,7028,12321,65847,119146,127552],"10":[2790,6608,8495,42912,43471],"17":[2918,3461,5920,5952,119648],"12":[3046,3663,4046,4213,5888,5984,8160,8336,94099],"40":[3346,4704,6272,8544,12549,43520],"15":[3430,4193,4992],"23":[3482,3840,42624],"47":[3585,6916,7164,12832,43395,43648,119214],"26":[3866,6992,66352],"35":[3913,69891],"44":[4096,12784,65799,66000],"24":[4159,43020,43310,69840],"14":[4238,4808,7227,65599],"39":[4254,6470],"376":[4304],"32":[4752],"56":[4824,120540,120598,120656,120714],"66":[4888],"28":[4960,6400,66176,127462],"84":[5024,119808],"638":[5121],"80":[5792],"51":[6016,43072,70018],"87":[6176],"69":[6320],"43":[6528],"55":[6686,11568],"13":[6816,65616,66504,69942],"31":[7042,43612],"57":[7084,127280],"50":[7245,120488],"191":[7424],"277":[7680],"52":[8064],"68":[9014,93952],"77":[9372],"255":[10240],"46":[11264,11312,13008,42560,94032],"132":[11360],"85":[12353],"89":[12449],"93":[12593],"42":[12688,71296,127344,127504],"27":[12896,42512,120094],"49":[12927],"118":[13056],"98":[13179,74752],"6591":[13312],"22156":[19968],"316":[42192],"79":[42656],"101":[42786],"67":[43136],"29":[43359,66432,119180],"16":[43453,43739],"36":[43968,66463],"11206":[44032],"48":[55243,66208,69762],"8813":[55296],"105":[64112],"88":[65382],"18":[65576],"122":[65664],"53":[69634],"878":[73728],"1070":[77824],"568":[92160],"245":[118784],"61":[119081],"70":[119894],"64":[120005],"339":[120146],"42719":[131072],"4383":[173824],"541":[194560],"131071":[983040]},"NSM":{"111":[768],"6":[1155,1750,2385,3636,6071,6744,7394,65056,119173],"44":[1425],"0":[1471,1479,1648,1809,2362,2364,2381,2433,2492,2509,2620,2641,2677,2748,2765,2817,2876,2879,2893,2902,2946,3008,3021,3260,3405,3530,3542,3633,3761,3893,3895,3897,4038,4226,4237,4253,6086,6109,6313,6450,6742,6752,6754,6783,6964,6972,6978,7083,7142,7149,7405,7412,11647,42655,43010,43014,43019,43204,43443,43452,43587,43596,43696,43713,43766,44005,44008,44013,64286,66045,68159,69633,71339,71341,71351],"1":[1473,1476,1767,2402,2530,2561,2625,2631,2672,2689,2759,2786,2914,3157,3170,3276,3298,3426,3771,3864,3974,4153,4157,4184,4229,5970,6002,6068,6439,6679,7040,7080,7144,7222,12441,42736,43045,43569,43573,43703,43710,43756,68101,69760,69817,70016],"10":[1552,1958,3981,6089,43335],"20":[1611],"5":[1759,3764,3784,4146,43561,71344],"3":[1770,2070,2497,2881,3146,3393,4141,4209,6912,7074,7676,12330,42607,43446,68108,69811,94095,119210],"26":[1840,2276],"8":[2027,2075,7019,70070],"2":[2085,2137,2304,2635,3134,3142,3538,4190,4957,5906,5938,6155,6432,6457,7151,7376,11503,43392,43698,68097,68152,69888,119143,119362],"4":[2089,2753,3968,6966,69927],"7":[2369,3655,6757,7212,43302,69933,119163],"13":[3953],"35":[3993],"9":[6771,42612],"12":[7380],"38":[7616],"32":[8400],"31":[11744],"17":[43232],"15":[65024],"14":[69688],"239":[917760]},"R":{"0":[1470,1472,1475,1478,2042,2074,2084,2088,2142,8207,64285,64318,67592,67644,67903,68096],"26":[1488,68121,68440],"4":[1520,64312],"42":[1984],"1":[2036,64320,64323,67639,68030],"21":[2048,68416],"14":[2096],"24":[2112],"9":[64287,64326],"12":[64298],"5":[67584],"43":[67594],"22":[67647],"8":[67671,68176],"27":[67840],"25":[67872],"55":[67968],"3":[68112],"2":[68117],"7":[68160,68472],"31":[68192],"53":[68352],"72":[68608]},"AN":{"4":[1536],"9":[1632],"1":[1643],"0":[1757],"30":[69216]},"AL":{"0":[1544,1547,1549,1563,1969,2208,126500,126503,126521,126523,126530,126535,126537,126539,126548,126551,126553,126555,126557,126559,126564,126590],"44":[1566],"2":[1645,126541,126625],"100":[1649],"1":[1765,1774,1807,126497,126545,126561],"19":[1786],"29":[1810],"88":[1869],"10":[2210],"113":[64336],"362":[64467],"63":[64848],"53":[64914],"12":[65008],"4":[65136,126629],"134":[65142],"3":[126464,126516,126567,126580,126585],"26":[126469],"9":[126505,126592],"6":[126572],"16":[126603,126635]},"LRE":{"0":[8234]},"RLE":{"0":[8235]},"PDF":{"0":[8236]},"LRO":{"0":[8237]},"RLO":{"0":[8238]}};
1360
+ this.string_arr = options.string_arr || options.types;
1361
+ this.types = options.types || [];
1362
+ this.levels = [];
1363
+ this.runs = [];
1364
+ this.direction = options.direction;
1365
+ this.default_direction = options.default_direction || "LTR";
1366
+ this.length = this.types.length;
1367
+ this.run_bidi();
1368
+ }
1369
+
1370
+ Bidi.bidi_class_for = function(code_point) {
1371
+ var bidi_class, end, range, range_list, range_offset, ranges, start, _i, _len, _ref;
1372
+ _ref = this.bidi_classes;
1373
+ for (bidi_class in _ref) {
1374
+ ranges = _ref[bidi_class];
1375
+ for (range_offset in ranges) {
1376
+ range_list = ranges[range_offset];
1377
+ for (_i = 0, _len = range_list.length; _i < _len; _i++) {
1378
+ range = range_list[_i];
1379
+ start = range;
1380
+ end = start + parseInt(range_offset);
1381
+ if ((code_point >= start) && (code_point <= end)) {
1382
+ return bidi_class;
1383
+ }
1384
+ }
1385
+ }
1386
+ }
1387
+ return null;
1388
+ };
1389
+
1390
+ Bidi.from_string = function(str, options) {
1391
+ var string_arr;
1392
+ if (options == null) {
1393
+ options = {};
1394
+ }
1395
+ string_arr = TwitterCldr.Utilities.unpack_string(str);
1396
+ options.types || (options.types = this.compute_types(string_arr));
1397
+ options.string_arr || (options.string_arr = string_arr);
1398
+ return new TwitterCldr.Bidi(options);
1399
+ };
1400
+
1401
+ Bidi.from_type_array = function(types, options) {
1402
+ if (options == null) {
1403
+ options = {};
1404
+ }
1405
+ options.types || (options.types = types);
1406
+ return new TwitterCldr.Bidi(options);
1407
+ };
1408
+
1409
+ Bidi.compute_types = function(arr) {
1410
+ var code_point, _i, _len, _results;
1411
+ _results = [];
1412
+ for (_i = 0, _len = arr.length; _i < _len; _i++) {
1413
+ code_point = arr[_i];
1414
+ _results.push(TwitterCldr.Bidi.bidi_class_for(code_point));
1415
+ }
1416
+ return _results;
1417
+ };
1418
+
1419
+ Bidi.prototype.toString = function() {
1420
+ return TwitterCldr.Utilities.pack_array(this.string_arr);
1421
+ };
1422
+
1423
+ Bidi.prototype.reorder_visually = function() {
1424
+ var depth, finish, i, level, lowest_odd, max, start, tmpb, tmpo, _i, _j, _k, _len, _ref, _ref1;
1425
+ if (!this.string_arr) {
1426
+ throw "No string given!";
1427
+ }
1428
+ max = 0;
1429
+ lowest_odd = MAX_DEPTH + 1;
1430
+ _ref = this.levels;
1431
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1432
+ level = _ref[_i];
1433
+ max = TwitterCldr.Utilities.max([level, max]);
1434
+ if (!TwitterCldr.Utilities.is_even(level)) {
1435
+ lowest_odd = TwitterCldr.Utilities.min([lowest_odd, level]);
1436
+ }
1437
+ }
1438
+ for (depth = _j = max; max <= 0 ? _j < 0 : _j > 0; depth = max <= 0 ? ++_j : --_j) {
1439
+ start = 0;
1440
+ while (start < this.levels.length) {
1441
+ while (start < this.levels.length && this.levels[start] < depth) {
1442
+ start += 1;
1443
+ }
1444
+ if (start === this.levels.length) {
1445
+ break;
1446
+ }
1447
+ finish = start + 1;
1448
+ while (finish < this.levels.length && this.levels[finish] >= depth) {
1449
+ finish += 1;
1450
+ }
1451
+ for (i = _k = 0, _ref1 = (finish - start) / 2; 0 <= _ref1 ? _k < _ref1 : _k > _ref1; i = 0 <= _ref1 ? ++_k : --_k) {
1452
+ tmpb = this.levels[finish - i - 1];
1453
+ this.levels[finish - i - 1] = this.levels[start + i];
1454
+ this.levels[start + i] = tmpb;
1455
+ tmpo = this.string_arr[finish - i - 1];
1456
+ this.string_arr[finish - i - 1] = this.string_arr[start + i];
1457
+ this.string_arr[start + i] = tmpo;
1458
+ }
1459
+ start = finish + 1;
1460
+ }
1461
+ }
1462
+ return this;
1463
+ };
1464
+
1465
+ Bidi.prototype.compute_paragraph_embedding_level = function() {
1466
+ var type, _i, _len, _ref;
1467
+ if (["LTR", "RTL"].indexOf(this.direction) > -1) {
1468
+ if (this.direction === "LTR") {
1469
+ return 0;
1470
+ } else {
1471
+ return 1;
1472
+ }
1473
+ } else {
1474
+ _ref = this.types;
1475
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1476
+ type = _ref[_i];
1477
+ if (type === "L") {
1478
+ return 0;
1479
+ }
1480
+ if (type === "R") {
1481
+ return 1;
1482
+ }
1483
+ }
1484
+ if (this.default_direction === "LTR") {
1485
+ return 0;
1486
+ } else {
1487
+ return 1;
1488
+ }
1489
+ }
1490
+ };
1491
+
1492
+ Bidi.prototype.compute_explicit_levels = function() {
1493
+ var current_embedding, directional_override, embedding_stack, i, input, is_ltr, is_special, len, new_embedding, next_fmt, output, size, sp, _i, _j, _ref, _ref1;
1494
+ current_embedding = this.base_embedding;
1495
+ directional_override = -1;
1496
+ embedding_stack = [];
1497
+ this.formatter_indices || (this.formatter_indices = []);
1498
+ sp = 0;
1499
+ for (i = _i = 0, _ref = this.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
1500
+ is_ltr = false;
1501
+ is_special = true;
1502
+ is_ltr = this.types[i] === "LRE" || this.types[i] === "LRO";
1503
+ switch (this.types[i]) {
1504
+ case "RLE":
1505
+ case "RLO":
1506
+ case "LRE":
1507
+ case "LRO":
1508
+ new_embedding = is_ltr ? (current_embedding & ~1) + 2 : (current_embedding + 1) | 1;
1509
+ if (new_embedding < MAX_DEPTH) {
1510
+ if (directional_override !== -1) {
1511
+ current_embedding |= -0x80;
1512
+ }
1513
+ embedding_stack[sp] = current_embedding;
1514
+ current_embedding = new_embedding;
1515
+ sp += 1;
1516
+ directional_override = this.types[i] === "LRO" ? "L" : this.types[i] === "RLO" ? "R" : -1;
1517
+ }
1518
+ break;
1519
+ case "PDF":
1520
+ if (sp > 0) {
1521
+ sp -= 1;
1522
+ new_embedding = embedding_stack[sp];
1523
+ current_embedding = new_embedding & 0x7f;
1524
+ directional_override = new_embedding < 0 ? (_ref1 = (new_embedding & 1) === 0) != null ? _ref1 : {
1525
+ "L": "R"
1526
+ } : -1;
1527
+ }
1528
+ break;
1529
+ default:
1530
+ is_special = false;
1531
+ }
1532
+ this.levels[i] = current_embedding;
1533
+ if (is_special) {
1534
+ this.formatter_indices.push(i);
1535
+ } else if (directional_override !== -1) {
1536
+ this.types[i] = directional_override;
1537
+ }
1538
+ }
1539
+ output = 0;
1540
+ input = 0;
1541
+ size = this.formatter_indices.length;
1542
+ for (i = _j = 0; 0 <= size ? _j <= size : _j >= size; i = 0 <= size ? ++_j : --_j) {
1543
+ next_fmt = i === size ? this.length : this.formatter_indices[i];
1544
+ len = next_fmt - input;
1545
+ TwitterCldr.Utilities.arraycopy(this.levels, input, this.levels, output, len);
1546
+ TwitterCldr.Utilities.arraycopy(this.types, input, this.types, output, len);
1547
+ output += len;
1548
+ input = next_fmt + 1;
1549
+ }
1550
+ return this.length -= this.formatter_indices.length;
1551
+ };
1552
+
1553
+ Bidi.prototype.compute_runs = function() {
1554
+ var current_embedding, i, last_run_start, run_count, where, _i, _j, _ref, _ref1;
1555
+ run_count = 0;
1556
+ current_embedding = this.base_embedding;
1557
+ for (i = _i = 0, _ref = this.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
1558
+ if (this.levels[i] !== current_embedding) {
1559
+ current_embedding = this.levels[i];
1560
+ run_count += 1;
1561
+ }
1562
+ }
1563
+ where = 0;
1564
+ last_run_start = 0;
1565
+ current_embedding = this.base_embedding;
1566
+ for (i = _j = 0, _ref1 = this.length; 0 <= _ref1 ? _j < _ref1 : _j > _ref1; i = 0 <= _ref1 ? ++_j : --_j) {
1567
+ if (this.levels[i] !== current_embedding) {
1568
+ this.runs[where] = last_run_start;
1569
+ where += 1;
1570
+ last_run_start = i;
1571
+ current_embedding = this.levels[i];
1572
+ }
1573
+ }
1574
+ return this.runs[where] = last_run_start;
1575
+ };
1576
+
1577
+ Bidi.prototype.resolve_weak_types = function() {
1578
+ var eor, finish, i, j, k, level, next_level, next_type, prev_strong_type, prev_type, previous_level, run_count, run_idx, sor, start, _i, _j, _k;
1579
+ run_count = this.runs.length;
1580
+ previous_level = this.base_embedding;
1581
+ for (run_idx = _i = 0; 0 <= run_count ? _i < run_count : _i > run_count; run_idx = 0 <= run_count ? ++_i : --_i) {
1582
+ start = this.get_run_start(run_idx);
1583
+ finish = this.get_run_limit(run_idx);
1584
+ level = this.get_run_level(run_idx) || 0;
1585
+ sor = TwitterCldr.Utilities.is_even(TwitterCldr.Utilities.max([previous_level, level])) ? "L" : "R";
1586
+ next_level = run_idx === (run_count - 1) ? this.base_embedding : this.get_run_level(run_idx + 1) || 0;
1587
+ eor = TwitterCldr.Utilities.is_even(TwitterCldr.Utilities.max([level, next_level])) ? "L" : "R";
1588
+ prev_type = sor;
1589
+ prev_strong_type = sor;
1590
+ for (i = _j = start; start <= finish ? _j < finish : _j > finish; i = start <= finish ? ++_j : --_j) {
1591
+ next_type = i === (finish - 1) ? eor : this.types[i + 1];
1592
+ if (this.types[i] === "NSM") {
1593
+ this.types[i] = prev_type;
1594
+ } else {
1595
+ prev_type = this.types[i];
1596
+ }
1597
+ if (this.types[i] === "EN") {
1598
+ if (prev_strong_type === "AL") {
1599
+ this.types[i] = "AN";
1600
+ }
1601
+ } else if (this.types[i] === "L" || this.types[i] === "R" || this.types[i] === "AL") {
1602
+ prev_strong_type = this.types[i];
1603
+ }
1604
+ if (this.types[i] === "AL") {
1605
+ this.types[i] = "R";
1606
+ }
1607
+ if (prev_type === "EN" && next_type === "EN") {
1608
+ if (this.types[i] === "ES" || this.types[i] === "CS") {
1609
+ this.types[i] = nextType;
1610
+ }
1611
+ } else if (prev_type === "AN" && next_type === "AN" && this.types[i] === "CS") {
1612
+ this.types[i] = next_type;
1613
+ }
1614
+ if (this.types[i] === "ET" || this.types[i] === "BN") {
1615
+ if (prev_type === "EN") {
1616
+ this.types[i] = prev_type;
1617
+ } else {
1618
+ j = i + 1;
1619
+ while (j < finish && this.types[j] === "ET" || this.types[j] === "BN") {
1620
+ j += 1;
1621
+ }
1622
+ if (j < finish && this.types[j] === "EN") {
1623
+ for (k = _k = i; i <= j ? _k < j : _k > j; k = i <= j ? ++_k : --_k) {
1624
+ this.types[k] = "EN";
1625
+ }
1626
+ }
1627
+ }
1628
+ }
1629
+ if (this.types[i] === "ET" || this.types[i] === "CS" || this.types[i] === "BN") {
1630
+ this.types[i] = "ON";
1631
+ }
1632
+ if (prev_strong_type === "L" && this.types[i] === "EN") {
1633
+ this.types[i] = prev_strong_type;
1634
+ }
1635
+ }
1636
+ previous_level = level;
1637
+ }
1638
+ };
1639
+
1640
+ Bidi.prototype.get_run_count = function() {
1641
+ return this.runs.length;
1642
+ };
1643
+
1644
+ Bidi.prototype.get_run_level = function(which) {
1645
+ return this.levels[this.runs[which]];
1646
+ };
1647
+
1648
+ Bidi.prototype.get_run_limit = function(which) {
1649
+ if (which === (this.runs.length - 1)) {
1650
+ return this.length;
1651
+ } else {
1652
+ return this.runs[which + 1];
1653
+ }
1654
+ };
1655
+
1656
+ Bidi.prototype.get_run_start = function(which) {
1657
+ return this.runs[which];
1658
+ };
1659
+
1660
+ Bidi.prototype.resolve_implicit_levels = function() {
1661
+ var i, _i, _ref;
1662
+ for (i = _i = 0, _ref = this.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
1663
+ if ((this.levels[i] & 1) === 0) {
1664
+ if (this.types[i] === "R") {
1665
+ this.levels[i] += 1;
1666
+ } else if (this.types[i] === "AN" || this.types[i] === "EN") {
1667
+ this.levels[i] += 2;
1668
+ }
1669
+ } else {
1670
+ if (this.types[i] === "L" || this.types[i] === "AN" || this.types[i] === "EN") {
1671
+ this.levels[i] += 1;
1672
+ }
1673
+ }
1674
+ }
1675
+ };
1676
+
1677
+ Bidi.prototype.resolve_neutral_types = function() {
1678
+ var embedding_direction, eor, finish, i, j, level, neutral_start, new_strong, next_level, override, prev_strong, previous_level, run, run_count, sor, start, this_type, _i, _j, _k;
1679
+ run_count = this.get_run_count();
1680
+ previous_level = this.base_embedding;
1681
+ for (run = _i = 0; 0 <= run_count ? _i < run_count : _i > run_count; run = 0 <= run_count ? ++_i : --_i) {
1682
+ start = this.get_run_start(run);
1683
+ finish = this.get_run_limit(run);
1684
+ level = this.get_run_level(run);
1685
+ if (level == null) {
1686
+ continue;
1687
+ }
1688
+ embedding_direction = TwitterCldr.Utilities.is_even(level) ? "L" : "R";
1689
+ sor = TwitterCldr.Utilities.is_even(TwitterCldr.Utilities.max([previous_level, level])) ? "L" : "R";
1690
+ next_level = run === (run_count - 1) ? this.base_embedding : this.get_run_level(run + 1);
1691
+ eor = TwitterCldr.Utilities.is_even(TwitterCldr.Utilities.max([level, next_level])) ? "L" : "R";
1692
+ prev_strong = sor;
1693
+ neutral_start = -1;
1694
+ for (i = _j = start; start <= finish ? _j <= finish : _j >= finish; i = start <= finish ? ++_j : --_j) {
1695
+ new_strong = -1;
1696
+ this_type = i === finish ? eor : this.types[i];
1697
+ switch (this_type) {
1698
+ case "L":
1699
+ new_strong = "L";
1700
+ break;
1701
+ case "R":
1702
+ case "AN":
1703
+ case "EN":
1704
+ new_strong = "R";
1705
+ break;
1706
+ case "BN":
1707
+ case "ON":
1708
+ case "S":
1709
+ case "B":
1710
+ case "WS":
1711
+ if (neutral_start === -1) {
1712
+ neutral_start = i;
1713
+ }
1714
+ }
1715
+ if (new_strong !== -1) {
1716
+ if (neutral_start !== -1) {
1717
+ override = prev_strong === new_strong ? prev_strong : embedding_direction;
1718
+ for (j = _k = neutral_start; neutral_start <= i ? _k < i : _k > i; j = neutral_start <= i ? ++_k : --_k) {
1719
+ this.types[j] = override;
1720
+ }
1721
+ }
1722
+ prev_strong = new_strong;
1723
+ neutral_start = -1;
1724
+ }
1725
+ }
1726
+ previous_level = level;
1727
+ }
1728
+ };
1729
+
1730
+ Bidi.prototype.reinsert_formatting_codes = function() {
1731
+ var index, input, left_level, len, next_fmt, output, right_level, _i, _ref;
1732
+ if ((this.formatter_indices != null) && this.formatter_indices.length > 0) {
1733
+ input = this.length;
1734
+ output = this.levels.length;
1735
+ for (index = _i = _ref = this.formatter_indices.length - 1; _ref <= 0 ? _i <= 0 : _i >= 0; index = _ref <= 0 ? ++_i : --_i) {
1736
+ next_fmt = this.formatter_indices[index];
1737
+ len = output - next_fmt - 1;
1738
+ output = next_fmt;
1739
+ input -= len;
1740
+ if (next_fmt + 1 < this.levels.length) {
1741
+ TwitterCldr.Utilities.arraycopy(this.levels, input, this.levels, next_fmt + 1, len);
1742
+ }
1743
+ right_level = output === this.levels.length - 1 ? this.base_embedding : this.levels[output + 1] != null ? this.levels[output + 1] : 0;
1744
+ left_level = input === 0 ? this.base_embedding : this.levels[input] != null ? this.levels[input] : 0;
1745
+ this.levels[output] = TwitterCldr.Utilities.max([left_level, right_level]);
1746
+ }
1747
+ }
1748
+ return this.length = this.levels.length;
1749
+ };
1750
+
1751
+ Bidi.prototype.run_bidi = function() {
1752
+ this.base_embedding = this.compute_paragraph_embedding_level();
1753
+ this.compute_explicit_levels();
1754
+ this.compute_runs();
1755
+ this.resolve_weak_types();
1756
+ this.resolve_neutral_types();
1757
+ this.resolve_implicit_levels();
1758
+ this.reinsert_formatting_codes();
1759
+ this.compute_runs();
1760
+ };
1761
+
1762
+ return Bidi;
1763
+
1764
+ })();
1765
+
1766
+ TwitterCldr.Calendar = (function() {
1767
+
1768
+ function Calendar() {}
1769
+
1770
+ Calendar.calendar = {"additional_formats":{"Ed":"E d.","H":"HH","Hm":"HH.mm","Hms":"HH.mm.ss","M":"L","MEd":"E, M-d","MMM":"LLL","MMMEd":"E d. MMM","MMMMEd":"E d. MMMM","MMMMd":"d. MMMM","MMMMdd":"dd. MMMM","MMMd":"d. MMM","MMMdd":"dd.MMM","MMdd":"MM-dd","Md":"d/M","d":"d","h":"hh a","hm":"hh.mm a","hms":"hh.mm.ss a","ms":"mm.ss","y":"y.","yM":"y-M","yMEd":"E, d. M. yyyy.","yMMM":"MMM y.","yMMMEd":"E, d. MMM y.","yMMMM":"MMMM y.","yMMMd":"d. MMM y.","yMd":"d. M. y.","yQQQ":"QQQ. y","yQQQQ":"QQQQ. y","yyMM":"MM.yy","yyMMMd":"d. MMM yy.","yyMMdd":"dd.MM.yy","yyQQQ":"QQQ yy","yyQQQQ":"QQQQ yy","yyyy":"y.","yyyyMM":"yyyy-MM","yyyyMMMM":"MMMM y."},"days":{"format":{"abbreviated":{"fri":"пет","mon":"пон","sat":"суб","sun":"нед","thu":"чет","tue":"уто","wed":"сре"},"narrow":{"fri":"п","mon":"п","sat":"с","sun":"н","thu":"ч","tue":"у","wed":"с"},"short":{"fri":"пет","mon":"пон","sat":"суб","sun":"нед","thu":"чет","tue":"уто","wed":"сре"},"wide":{"fri":"петак","mon":"понедељак","sat":"субота","sun":"недеља","thu":"четвртак","tue":"уторак","wed":"среда"}},"stand-alone":{"abbreviated":{"fri":"пет","mon":"пон","sat":"суб","sun":"нед","thu":"чет","tue":"уто","wed":"сре"},"narrow":{"fri":"п","mon":"п","sat":"с","sun":"н","thu":"ч","tue":"у","wed":"с"},"short":{"fri":"пе","mon":"по","sat":"су","sun":"не","thu":"че","tue":"ут","wed":"ср"},"wide":{"fri":"петак","mon":"понедељак","sat":"субота","sun":"недеља","thu":"четвртак","tue":"уторак","wed":"среда"}}},"eras":{"abbr":{"0":"п. н. е.","1":"н. е."},"name":{"0":"Пре нове ере","1":"Нове ере"},"narrow":{"0":"п.н.е.","1":"н.е."}},"fields":{"day":"дан","dayperiod":"пре подне/поподне","era":"ера","hour":"час","minute":"минут","month":"месец","second":"секунд","week":"недеља","weekday":"дан у недељи","year":"година","zone":"зона"},"formats":{"date":{"default":{"pattern":"dd.MM.y."},"full":{"pattern":"EEEE, dd. MMMM y."},"long":{"pattern":"dd. MMMM y."},"medium":{"pattern":"dd.MM.y."},"short":{"pattern":"d.M.yy."}},"datetime":{"default":{"pattern":"{{date}} {{time}}"},"full":{"pattern":"{{date}} {{time}}"},"long":{"pattern":"{{date}} {{time}}"},"medium":{"pattern":"{{date}} {{time}}"},"short":{"pattern":"{{date}} {{time}}"}},"time":{"default":{"pattern":"HH.mm.ss"},"full":{"pattern":"HH.mm.ss zzzz"},"long":{"pattern":"HH.mm.ss z"},"medium":{"pattern":"HH.mm.ss"},"short":{"pattern":"HH.mm"}}},"months":{"format":{"abbreviated":{"1":"јан","10":"окт","11":"нов","12":"дец","2":"феб","3":"мар","4":"апр","5":"мај","6":"јун","7":"јул","8":"авг","9":"сеп"},"narrow":{"1":"ј","10":"о","11":"н","12":"д","2":"ф","3":"м","4":"а","5":"м","6":"ј","7":"ј","8":"а","9":"с"},"wide":{"1":"јануар","10":"октобар","11":"новембар","12":"децембар","2":"фебруар","3":"март","4":"април","5":"мај","6":"јун","7":"јул","8":"август","9":"септембар"}},"stand-alone":{"abbreviated":{"1":"јан","10":"окт","11":"нов","12":"дец","2":"феб","3":"мар","4":"апр","5":"мај","6":"јун","7":"јул","8":"авг","9":"сеп"},"narrow":{"1":"ј","10":"о","11":"н","12":"д","2":"ф","3":"м","4":"а","5":"м","6":"ј","7":"ј","8":"а","9":"с"},"wide":{"1":"јануар","10":"октобар","11":"новембар","12":"децембар","2":"фебруар","3":"март","4":"април","5":"мај","6":"јун","7":"јул","8":"август","9":"септембар"}}},"periods":{"format":{"abbreviated":null,"narrow":null,"wide":{"am":"пре подне","pm":"поподне"}},"stand-alone":{}},"quarters":{"format":{"abbreviated":{"1":"К1","2":"К2","3":"К3","4":"К4"},"narrow":{"1":1.0,"2":2.0,"3":3.0,"4":4.0},"wide":{"1":"Прво тромесечје","2":"Друго тромесечје","3":"Треће тромесечје","4":"Четврто тромесечје"}},"stand-alone":{"abbreviated":{"1":"К1","2":"К2","3":"К3","4":"К4"},"narrow":{"1":1.0,"2":2.0,"3":3.0,"4":4.0},"wide":{"1":"Прво тромесечје","2":"Друго тромесечје","3":"Треће тромесечје","4":"Четврто тромесечје"}}}};
1771
+
1772
+ Calendar.months = function(options) {
1773
+ var key, result, root, val;
1774
+ if (options == null) {
1775
+ options = {};
1776
+ }
1777
+ root = this.get_root("months", options);
1778
+ result = [];
1779
+ for (key in root) {
1780
+ val = root[key];
1781
+ result[parseInt(key) - 1] = val;
1782
+ }
1783
+ return result;
1784
+ };
1785
+
1786
+ Calendar.weekdays = function(options) {
1787
+ if (options == null) {
1788
+ options = {};
1789
+ }
1790
+ return this.get_root("days", options);
1791
+ };
1792
+
1793
+ Calendar.get_root = function(key, options) {
1794
+ var format, names_form, root, _ref;
1795
+ if (options == null) {
1796
+ options = {};
1797
+ }
1798
+ root = this.calendar[key];
1799
+ names_form = options["names_form"] || "wide";
1800
+ format = options.format || ((root != null ? (_ref = root["stand-alone"]) != null ? _ref[names_form] : void 0 : void 0) != null ? "stand-alone" : "format");
1801
+ return root[format][names_form];
1802
+ };
1803
+
1804
+ return Calendar;
1805
+
1806
+ })();
1807
+
1808
+ root = typeof exports !== "undefined" && exports !== null ? exports : (this.TwitterCldr = {}, this.TwitterCldr);
1809
+
1810
+ for (key in TwitterCldr) {
1811
+ obj = TwitterCldr[key];
1812
+ root[key] = obj;
1813
+ }
1814
+
1815
+ }).call(this);