twitter_cldr 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. data/README.md +34 -18
  2. data/lib/twitter_cldr.rb +15 -21
  3. data/lib/twitter_cldr/core_ext.rb +2 -1
  4. data/lib/twitter_cldr/core_ext/array.rb +22 -0
  5. data/lib/twitter_cldr/core_ext/numbers/localized_number.rb +0 -1
  6. data/lib/twitter_cldr/core_ext/string.rb +10 -2
  7. data/lib/twitter_cldr/formatters/calendars/datetime_formatter.rb +4 -1
  8. data/lib/twitter_cldr/formatters/numbers/currency_formatter.rb +7 -2
  9. data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +5 -1
  10. data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +1 -1
  11. data/lib/twitter_cldr/formatters/numbers/percent_formatter.rb +5 -3
  12. data/lib/twitter_cldr/formatters/plurals/rules.rb +9 -5
  13. data/lib/twitter_cldr/normalizers/nfkd.rb +3 -1
  14. data/lib/twitter_cldr/shared.rb +2 -0
  15. data/lib/twitter_cldr/shared/calendar.rb +64 -0
  16. data/lib/twitter_cldr/shared/currencies.rb +6 -2
  17. data/lib/twitter_cldr/shared/languages.rb +10 -6
  18. data/lib/twitter_cldr/shared/numbers.rb +26 -0
  19. data/lib/twitter_cldr/shared/resources.rb +26 -9
  20. data/lib/twitter_cldr/shared/unicode_data.rb +26 -6
  21. data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +5 -3
  22. data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +1 -1
  23. data/lib/twitter_cldr/version.rb +1 -1
  24. data/resources/{ar → locales/ar}/calendars.yml +30 -33
  25. data/resources/{ar → locales/ar}/languages.yml +120 -118
  26. data/resources/{ar → locales/ar}/numbers.yml +8 -9
  27. data/resources/{ar → locales/ar}/plurals.yml +0 -0
  28. data/resources/{da → locales/da}/calendars.yml +24 -9
  29. data/resources/{da → locales/da}/languages.yml +14 -8
  30. data/resources/{da → locales/da}/numbers.yml +1 -2
  31. data/resources/{da → locales/da}/plurals.yml +0 -0
  32. data/resources/{de → locales/de}/calendars.yml +42 -8
  33. data/resources/{de → locales/de}/languages.yml +47 -42
  34. data/resources/{de → locales/de}/numbers.yml +1 -2
  35. data/resources/{de → locales/de}/plurals.yml +0 -0
  36. data/resources/{en → locales/en}/calendars.yml +16 -7
  37. data/resources/{en → locales/en}/languages.yml +53 -5
  38. data/resources/{en → locales/en}/numbers.yml +1 -2
  39. data/resources/{en → locales/en}/plurals.yml +0 -0
  40. data/resources/{es → locales/es}/calendars.yml +29 -15
  41. data/resources/{es → locales/es}/languages.yml +7 -5
  42. data/resources/{es → locales/es}/numbers.yml +3 -3
  43. data/resources/{es → locales/es}/plurals.yml +0 -0
  44. data/resources/{fa → locales/fa}/calendars.yml +87 -18
  45. data/resources/{fa → locales/fa}/languages.yml +13 -9
  46. data/resources/locales/fa/numbers.yml +29 -0
  47. data/resources/{fa → locales/fa}/plurals.yml +0 -0
  48. data/resources/{fi → locales/fi}/calendars.yml +64 -14
  49. data/resources/{fi → locales/fi}/languages.yml +47 -36
  50. data/resources/{fi → locales/fi}/numbers.yml +1 -2
  51. data/resources/{fi → locales/fi}/plurals.yml +0 -0
  52. data/resources/{fil → locales/fil}/calendars.yml +32 -23
  53. data/resources/{fil → locales/fil}/languages.yml +75 -22
  54. data/resources/{fil → locales/fil}/numbers.yml +1 -2
  55. data/resources/{fil → locales/fil}/plurals.yml +0 -0
  56. data/resources/{fr → locales/fr}/calendars.yml +54 -12
  57. data/resources/{fr → locales/fr}/languages.yml +5 -2
  58. data/resources/{fr → locales/fr}/numbers.yml +1 -2
  59. data/resources/{fr → locales/fr}/plurals.yml +0 -0
  60. data/resources/{he → locales/he}/calendars.yml +74 -38
  61. data/resources/{he → locales/he}/languages.yml +41 -26
  62. data/resources/{he → locales/he}/numbers.yml +1 -2
  63. data/resources/{he → locales/he}/plurals.yml +0 -0
  64. data/resources/{hi → locales/hi}/calendars.yml +36 -42
  65. data/resources/{hi → locales/hi}/languages.yml +8 -3
  66. data/resources/{hi → locales/hi}/numbers.yml +1 -2
  67. data/resources/{hi → locales/hi}/plurals.yml +0 -0
  68. data/resources/{hu → locales/hu}/calendars.yml +95 -19
  69. data/resources/{hu → locales/hu}/languages.yml +15 -4
  70. data/resources/{hu → locales/hu}/numbers.yml +1 -2
  71. data/resources/{hu → locales/hu}/plurals.yml +0 -0
  72. data/resources/{id → locales/id}/calendars.yml +56 -39
  73. data/resources/{id → locales/id}/languages.yml +148 -141
  74. data/resources/{id → locales/id}/numbers.yml +1 -2
  75. data/resources/{id → locales/id}/plurals.yml +0 -0
  76. data/resources/{it → locales/it}/calendars.yml +51 -15
  77. data/resources/{it → locales/it}/languages.yml +5 -5
  78. data/resources/{it → locales/it}/numbers.yml +2 -2
  79. data/resources/{it → locales/it}/plurals.yml +0 -0
  80. data/resources/{ja → locales/ja}/calendars.yml +26 -36
  81. data/resources/{ja → locales/ja}/languages.yml +29 -16
  82. data/resources/{ja → locales/ja}/numbers.yml +2 -3
  83. data/resources/{ja → locales/ja}/plurals.yml +0 -0
  84. data/resources/{ko → locales/ko}/calendars.yml +18 -9
  85. data/resources/{ko → locales/ko}/languages.yml +13 -10
  86. data/resources/{ko → locales/ko}/numbers.yml +1 -2
  87. data/resources/{ko → locales/ko}/plurals.yml +0 -0
  88. data/resources/{ms → locales/ms}/calendars.yml +91 -53
  89. data/resources/locales/ms/languages.yml +157 -0
  90. data/resources/{ms → locales/ms}/numbers.yml +1 -2
  91. data/resources/{ms → locales/ms}/plurals.yml +0 -0
  92. data/resources/{nl → locales/nl}/calendars.yml +38 -9
  93. data/resources/{nl → locales/nl}/languages.yml +28 -21
  94. data/resources/{nl → locales/nl}/numbers.yml +1 -2
  95. data/resources/{nl → locales/nl}/plurals.yml +0 -0
  96. data/resources/{no → locales/no}/calendars.yml +11 -6
  97. data/resources/{no → locales/no}/languages.yml +0 -0
  98. data/resources/{no → locales/no}/numbers.yml +1 -2
  99. data/resources/{no → locales/no}/plurals.yml +0 -0
  100. data/resources/{pl → locales/pl}/calendars.yml +80 -15
  101. data/resources/{pl → locales/pl}/languages.yml +6 -6
  102. data/resources/{pl → locales/pl}/numbers.yml +3 -2
  103. data/resources/{pl → locales/pl}/plurals.yml +0 -0
  104. data/resources/{pt → locales/pt}/calendars.yml +34 -8
  105. data/resources/{pt → locales/pt}/languages.yml +12 -4
  106. data/resources/{pt → locales/pt}/numbers.yml +1 -2
  107. data/resources/{pt → locales/pt}/plurals.yml +0 -0
  108. data/resources/{ru → locales/ru}/calendars.yml +69 -30
  109. data/resources/{ru → locales/ru}/languages.yml +18 -16
  110. data/resources/{ru → locales/ru}/numbers.yml +2 -3
  111. data/resources/{ru → locales/ru}/plurals.yml +0 -0
  112. data/resources/{sv → locales/sv}/calendars.yml +95 -15
  113. data/resources/{sv → locales/sv}/languages.yml +30 -8
  114. data/resources/{sv → locales/sv}/numbers.yml +1 -2
  115. data/resources/{sv → locales/sv}/plurals.yml +0 -0
  116. data/resources/{th → locales/th}/calendars.yml +89 -64
  117. data/resources/{th → locales/th}/languages.yml +5 -3
  118. data/resources/{th → locales/th}/numbers.yml +1 -2
  119. data/resources/{th → locales/th}/plurals.yml +0 -0
  120. data/resources/{tr → locales/tr}/calendars.yml +93 -19
  121. data/resources/{tr → locales/tr}/languages.yml +30 -28
  122. data/resources/{tr → locales/tr}/numbers.yml +2 -3
  123. data/resources/{tr → locales/tr}/plurals.yml +0 -0
  124. data/resources/{ur → locales/ur}/calendars.yml +33 -37
  125. data/resources/locales/ur/languages.yml +163 -0
  126. data/resources/{ur → locales/ur}/numbers.yml +1 -2
  127. data/resources/{ur → locales/ur}/plurals.yml +0 -0
  128. data/resources/{zh-Hant → locales/zh-Hant}/calendars.yml +76 -44
  129. data/resources/{zh-Hant → locales/zh-Hant}/languages.yml +122 -22
  130. data/resources/{zh-Hant → locales/zh-Hant}/numbers.yml +3 -4
  131. data/resources/{zh → locales/zh}/calendars.yml +81 -24
  132. data/resources/{zh → locales/zh}/languages.yml +13 -14
  133. data/resources/{zh → locales/zh}/numbers.yml +1 -2
  134. data/resources/{zh → locales/zh}/plurals.yml +0 -0
  135. data/spec/core_ext/array_spec.rb +16 -0
  136. data/spec/core_ext/calendars/date_spec.rb +6 -1
  137. data/spec/core_ext/calendars/datetime_spec.rb +6 -1
  138. data/spec/core_ext/calendars/time_spec.rb +6 -1
  139. data/spec/core_ext/numbers/localized_number_spec.rb +38 -8
  140. data/spec/core_ext/string_spec.rb +14 -1
  141. data/spec/formatters/numbers/number_formatter_spec.rb +3 -3
  142. data/spec/formatters/plurals/rules_spec.rb +3 -3
  143. data/spec/readme_spec.rb +190 -0
  144. data/spec/shared/calendar_spec.rb +133 -0
  145. data/spec/shared/numbers_spec.rb +35 -0
  146. data/spec/shared/resources_spec.rb +33 -15
  147. data/spec/tokenizers/calendars/date_tokenizer_spec.rb +37 -26
  148. data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +36 -29
  149. data/spec/tokenizers/calendars/time_tokenizer_spec.rb +22 -18
  150. data/spec/twitter_cldr_spec.rb +21 -7
  151. metadata +166 -114
  152. data/resources/fa/numbers.yml +0 -30
  153. data/resources/ms/languages.yml +0 -54
  154. data/resources/ur/languages.yml +0 -81
@@ -3,7 +3,7 @@ zh-Hant:
3
3
  formats:
4
4
  currency:
5
5
  patterns:
6
- default: {}
6
+ default: "¤#,##0.00"
7
7
  unit:
8
8
  other: "{0} {1}"
9
9
  decimal:
@@ -16,15 +16,14 @@ zh-Hant:
16
16
  patterns:
17
17
  default: {}
18
18
  symbols:
19
+ alias: ""
19
20
  decimal: "."
20
21
  exponential: E
21
22
  group: ","
22
23
  infinity: ∞
23
24
  list: ;
24
25
  minus_sign: "-"
25
- nan: NaN
26
- native_zero_digit: 0
27
- pattern_digit: "#"
26
+ nan: 非數值
28
27
  per_mille: ‰
29
28
  percent_sign: "%"
30
29
  plus_sign: +
@@ -11,7 +11,14 @@ zh:
11
11
  thu: 周四
12
12
  tue: 周二
13
13
  wed: 周三
14
- narrow: :"calendars.gregorian.days.stand-alone.narrow"
14
+ narrow:
15
+ fri: 五
16
+ mon: 一
17
+ sat: 六
18
+ sun: 日
19
+ thu: 四
20
+ tue: 二
21
+ wed: 三
15
22
  wide:
16
23
  fri: 星期五
17
24
  mon: 星期一
@@ -21,7 +28,14 @@ zh:
21
28
  tue: 星期二
22
29
  wed: 星期三
23
30
  stand-alone:
24
- abbreviated: :"calendars.gregorian.days.format.abbreviated"
31
+ abbreviated:
32
+ fri: 周五
33
+ mon: 周一
34
+ sat: 周六
35
+ sun: 周日
36
+ thu: 周四
37
+ tue: 周二
38
+ wed: 周三
25
39
  narrow:
26
40
  fri: 五
27
41
  mon: 一
@@ -30,7 +44,14 @@ zh:
30
44
  thu: 四
31
45
  tue: 二
32
46
  wed: 三
33
- wide: :"calendars.gregorian.days.format.wide"
47
+ wide:
48
+ fri: 星期五
49
+ mon: 星期一
50
+ sat: 星期六
51
+ sun: 星期日
52
+ thu: 星期四
53
+ tue: 星期二
54
+ wed: 星期三
34
55
  fields:
35
56
  day: 日
36
57
  dayperiod: 上午/下午
@@ -57,13 +78,13 @@ zh:
57
78
  datetime:
58
79
  default: :"calendars.gregorian.formats.datetime.medium"
59
80
  full:
60
- pattern: "{1}{0}"
81
+ pattern: "{{date}}{{time}}"
61
82
  long:
62
- pattern: "{1}{0}"
83
+ pattern: "{{date}}{{time}}"
63
84
  medium:
64
- pattern: "{1} {0}"
85
+ pattern: "{{date}} {{time}}"
65
86
  short:
66
- pattern: "{1} {0}"
87
+ pattern: "{{date}} {{time}}"
67
88
  time:
68
89
  default: :"calendars.gregorian.formats.time.medium"
69
90
  full:
@@ -71,7 +92,7 @@ zh:
71
92
  long:
72
93
  pattern: zah时mm分ss秒
73
94
  medium:
74
- pattern: "ahh:mm:ss"
95
+ pattern: "ah:mm:ss"
75
96
  short:
76
97
  pattern: "ah:mm"
77
98
  months:
@@ -89,7 +110,19 @@ zh:
89
110
  7: 7月
90
111
  8: 8月
91
112
  9: 9月
92
- narrow: :"calendars.gregorian.months.stand-alone.narrow"
113
+ narrow:
114
+ 1: 1
115
+ 10: 10
116
+ 11: 11
117
+ 12: 12
118
+ 2: 2
119
+ 3: 3
120
+ 4: 4
121
+ 5: 5
122
+ 6: 6
123
+ 7: 7
124
+ 8: 8
125
+ 9: 9
93
126
  wide:
94
127
  1: 1月
95
128
  10: 10月
@@ -118,18 +151,18 @@ zh:
118
151
  8: 八月
119
152
  9: 九月
120
153
  narrow:
121
- 1: 1
122
- 10: 10
154
+ 1: 1
155
+ 10: 10
123
156
  11: 11月
124
157
  12: 12月
125
- 2: 2
126
- 3: 3
127
- 4: 4
128
- 5: 5
129
- 6: 6
130
- 7: 7
131
- 8: 8
132
- 9: 9
158
+ 2: 2
159
+ 3: 3
160
+ 4: 4
161
+ 5: 5
162
+ 6: 6
163
+ 7: 7
164
+ 8: 8
165
+ 9: 9
133
166
  wide:
134
167
  1: 一月
135
168
  10: 十月
@@ -144,8 +177,20 @@ zh:
144
177
  8: 八月
145
178
  9: 九月
146
179
  periods:
147
- am: 上午
148
- pm: 下午
180
+ format:
181
+ abbreviated: :"calendars.gregorian.dayPeriods.format.wide"
182
+ narrow: :"calendars.gregorian.dayPeriods.format.abbreviated"
183
+ wide:
184
+ afternoon: 下午
185
+ am: 上午
186
+ earlyMorning: 清晨
187
+ midDay: 中午
188
+ morning: 上午
189
+ night: 晚上
190
+ noon: 中午
191
+ pm: 下午
192
+ weeHours: 凌晨
193
+ stand-alone: {}
149
194
  quarters:
150
195
  format:
151
196
  abbreviated:
@@ -153,17 +198,29 @@ zh:
153
198
  2: 2季
154
199
  3: 3季
155
200
  4: 4季
156
- narrow: :"calendars.gregorian.quarters.stand-alone.narrow"
201
+ narrow:
202
+ 1: 1
203
+ 2: 2
204
+ 3: 3
205
+ 4: 4
157
206
  wide:
158
207
  1: 第1季度
159
208
  2: 第2季度
160
209
  3: 第3季度
161
210
  4: 第4季度
162
211
  stand-alone:
163
- abbreviated: :"calendars.gregorian.quarters.format.abbreviated"
212
+ abbreviated:
213
+ 1: 一季度
214
+ 2: 二季度
215
+ 3: 三季度
216
+ 4: 四季度
164
217
  narrow:
165
218
  1: 1
166
219
  2: 2
167
220
  3: 3
168
221
  4: 4
169
- wide: :"calendars.gregorian.quarters.format.wide"
222
+ wide:
223
+ 1: 第一季度
224
+ 2: 第二季度
225
+ 3: 第三季度
226
+ 4: 第四季度
@@ -69,7 +69,6 @@ zh:
69
69
  cai: 其他中美印第安语系
70
70
  car: 巴勒比文
71
71
  cau: 其他高加索语系
72
- cch: cch
73
72
  ce: 车臣文
74
73
  ceb: 宿务文
75
74
  cel: 其他凯尔特语系
@@ -104,7 +103,7 @@ zh:
104
103
  day: 达雅克文
105
104
  de: 德文
106
105
  de-AT: 奥地利德语
107
- de-CH: "高地德文 (瑞士)"
106
+ de-CH: 瑞士高地德文
108
107
  del: 特拉华文
109
108
  den: 司雷夫文
110
109
  dgr: 多格里布文
@@ -154,7 +153,7 @@ zh:
154
153
  frr: 北弗里西亚语
155
154
  frs: 东弗里西亚文
156
155
  fur: 弗留利文
157
- fy: 弗里斯兰文
156
+ fy: 西弗里西亚文
158
157
  ga: 爱尔兰文
159
158
  gaa: 加文
160
159
  gay: 迦约文
@@ -196,9 +195,9 @@ zh:
196
195
  ia: 国际语
197
196
  iba: 伊班文
198
197
  id: 印度尼西亚文
199
- ie: 国际语E
198
+ ie: 国际语(E
200
199
  ig: 伊格博文
201
- ii: 四川话
200
+ ii: 四川彝文
202
201
  ijo: 伊乔文
203
202
  ik: 依奴皮维克文
204
203
  ilo: 伊洛干诺文
@@ -220,12 +219,10 @@ zh:
220
219
  kaa: 卡拉卡尔帕克文
221
220
  kab: 卡比尔文
222
221
  kac: 卡琴文
223
- kaj: kaj
224
222
  kam: 卡姆巴文
225
223
  kar: 喀伦文
226
224
  kaw: 卡威文
227
225
  kbd: 卡巴尔达文
228
- kcg: kcg
229
226
  kfo: 科罗语
230
227
  kg: 刚果文
231
228
  kha: 卡西文
@@ -332,12 +329,12 @@ zh:
332
329
  nog: 诺盖文
333
330
  non: 古诺尔斯文
334
331
  nqo: 西非书面语言
335
- nr: 南部恩德贝勒文
332
+ nr: 南恩德贝勒文
336
333
  nso: 北索托文
337
334
  nub: 努比亚语系
338
335
  nv: 纳瓦霍文
339
- nwc: "尼瓦尔文 Classical Newari"
340
- ny: 尼扬贾文;齐切瓦文;切瓦文
336
+ nwc: "尼瓦尔文(Classical Newari"
337
+ ny: 尼扬扎文
341
338
  nym: 尼亚姆韦齐文
342
339
  nyn: 尼昂科勒文
343
340
  nyo: 尼约罗文
@@ -373,7 +370,7 @@ zh:
373
370
  raj: 拉贾斯坦文
374
371
  rap: 拉帕努伊文
375
372
  rar: 拉罗汤加文
376
- rm: 列托-罗曼文
373
+ rm: 罗曼什文
377
374
  rn: 基隆迪文
378
375
  ro: 罗马尼亚文
379
376
  roa: 其他拉丁语系
@@ -422,17 +419,18 @@ zh:
422
419
  son: 桑海文
423
420
  sq: 阿尔巴尼亚文
424
421
  sr: 塞尔维亚文
425
- srn: "Sranan Tongo(源于克里奥尔语)"
422
+ srn: 苏里南汤加语
426
423
  srr: 谢列尔文
427
424
  ss: 斯瓦特文
428
425
  ssa: 非洲撒哈拉沙漠边缘地带语言
429
- st: 塞索托文
426
+ st: 南索托文
430
427
  su: 巽他语
431
428
  suk: 苏库马文
432
429
  sus: 苏苏文
433
430
  sux: 苏马文
434
431
  sv: 瑞典文
435
432
  sw: 斯瓦希里文
433
+ swb: 科摩罗语
436
434
  syr: 叙利亚文
437
435
  ta: 泰米尔文
438
436
  tai: 傣语诸语言(其他)
@@ -471,7 +469,7 @@ zh:
471
469
  uga: 乌加里特文
472
470
  uk: 乌克兰文
473
471
  umb: 翁本杜文
474
- und: 未定语种
472
+ und: 未知语言
475
473
  ur: 乌尔都文
476
474
  uz: 乌兹别克文
477
475
  vai: 瓦伊文
@@ -493,6 +491,7 @@ zh:
493
491
  yi: 依地文
494
492
  yo: 约鲁巴文
495
493
  ypk: 尤皮克诸语言
494
+ yue: 粤语
496
495
  za: 壮语
497
496
  zap: 萨波蒂克文
498
497
  zen: 泽纳加文
@@ -16,6 +16,7 @@ zh:
16
16
  patterns:
17
17
  default: "#E0"
18
18
  symbols:
19
+ alias: ""
19
20
  decimal: "."
20
21
  exponential: E
21
22
  group: ","
@@ -23,8 +24,6 @@ zh:
23
24
  list: ;
24
25
  minus_sign: "-"
25
26
  nan: NaN
26
- native_zero_digit: 0
27
- pattern_digit: "#"
28
27
  per_mille: ‰
29
28
  percent_sign: "%"
30
29
  plus_sign: +
File without changes
@@ -0,0 +1,16 @@
1
+ # encoding: UTF-8
2
+
3
+ # Copyright 2012 Twitter, Inc
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ require 'spec_helper'
7
+
8
+ include TwitterCldr
9
+
10
+ describe LocalizedArray do
11
+ describe "#code_points_to_string" do
12
+ it "transforms an array of code points into a string" do
13
+ ["0074", "0077", "0069", "0074", "0074", "0065", "0072"].localize.code_points_to_string.should == "twitter"
14
+ end
15
+ end
16
+ end
@@ -46,7 +46,12 @@ describe Date do
46
46
  Date.today.localize(:th).to_short_s
47
47
  end
48
48
 
49
- it "should stringify with buddhist calendar" do
49
+ it "should stringify with buddhist calendar" do
50
+ # Ensure that buddhist calendar data is present in th locale.
51
+ TwitterCldr.get_locale_resource(:th, :calendars)[:th][:calendars][:buddhist].should_not(
52
+ be_nil, 'buddhist calendar is missing for :th locale (check resources/locales/th/calendars.yml)'
53
+ )
54
+
50
55
  #Date.today.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
51
56
  Date.today.localize(:th, :calendar_type => :buddhist).to_long_s
52
57
  Date.today.localize(:th, :calendar_type => :buddhist).to_medium_s
@@ -47,7 +47,12 @@ describe DateTime do
47
47
  DateTime.now.localize(:th).to_short_s
48
48
  end
49
49
 
50
- it "should stringify with buddhist calendar" do
50
+ it "should stringify with buddhist calendar" do
51
+ # Ensure that buddhist calendar data is present in th locale.
52
+ TwitterCldr.get_locale_resource(:th, :calendars)[:th][:calendars][:buddhist].should_not(
53
+ be_nil, 'buddhist calendar is missing for :th locale (check resources/locales/th/calendars.yml)'
54
+ )
55
+
51
56
  #DateTime.now.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
52
57
  DateTime.now.localize(:th, :calendar_type => :buddhist).to_long_s
53
58
  DateTime.now.localize(:th, :calendar_type => :buddhist).to_medium_s
@@ -46,7 +46,12 @@ describe Time do
46
46
  Time.now.localize(:th).to_short_s
47
47
  end
48
48
 
49
- it "should stringify with buddhist calendar" do
49
+ it "should stringify with buddhist calendar" do
50
+ # Ensure that buddhist calendar data is present in th locale.
51
+ TwitterCldr.get_locale_resource(:th, :calendars)[:th][:calendars][:buddhist].should_not(
52
+ be_nil, 'buddhist calendar is missing for :th locale (check resources/locales/th/calendars.yml)'
53
+ )
54
+
50
55
  #Time.now.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
51
56
  Time.now.localize(:th, :calendar_type => :buddhist).to_long_s
52
57
  Time.now.localize(:th, :calendar_type => :buddhist).to_medium_s
@@ -50,7 +50,7 @@ describe LocalizedNumber do
50
50
  number.send(method).object_id.should_not == number.object_id
51
51
  end
52
52
 
53
- it 'creates an object of appropriate type, but do not change type of the original object' do
53
+ it 'creates an object of appropriate type, but does not change the type of the original object' do
54
54
  new_number = currency.send(method)
55
55
  new_number.type.should == type
56
56
  currency.type.should == :currency
@@ -66,16 +66,46 @@ describe LocalizedNumber do
66
66
  end
67
67
 
68
68
  describe '#to_s' do
69
- let(:number) { LocalizedNumber.new(10, :en) }
69
+ context 'decimals' do
70
+ let(:number) { LocalizedNumber.new(10, :en) }
71
+
72
+ it 'should default precision to zero' do
73
+ mock.proxy(number.formatter).format(number.base_obj, {})
74
+ number.to_s.should == "10"
75
+ end
76
+
77
+ it 'should not overwrite precision when explicitly passed' do
78
+ mock.proxy(number.formatter).format(number.base_obj, :precision => 2)
79
+ number.to_s(:precision => 2).should == "10.00"
80
+ end
81
+ end
82
+
83
+ context 'currencies' do
84
+ let(:number) { LocalizedNumber.new(10, :en, :type => :currency) }
70
85
 
71
- it 'should default precision to zero for fixnums' do
72
- mock(number.formatter).format(number.base_obj, :precision => 0)
73
- number.to_s
86
+ it "should default to a precision of 2" do
87
+ mock.proxy(number.formatter).format(number.base_obj, :precision => 2)
88
+ number.to_s(:precision => 2).should == "$10.00"
89
+ end
90
+
91
+ it 'should not overwrite precision when explicitly passed' do
92
+ mock.proxy(number.formatter).format(number.base_obj, :precision => 1)
93
+ number.to_s(:precision => 1).should == "$10.0"
94
+ end
74
95
  end
75
96
 
76
- it 'should not overwrite precision when explicitly passed' do
77
- mock(number.formatter).format(number.base_obj, :precision => 2)
78
- number.to_s(:precision => 2)
97
+ context 'percentages' do
98
+ let(:number) { LocalizedNumber.new(10, :en, :type => :percent) }
99
+
100
+ it "should default to a precision of 0" do
101
+ mock.proxy(number.formatter).format(number.base_obj, {})
102
+ number.to_s.should == "10%"
103
+ end
104
+
105
+ it 'should not overwrite precision when explicitly passed' do
106
+ mock.proxy(number.formatter).format(number.base_obj, :precision => 1)
107
+ number.to_s(:precision => 1).should == "10.0%"
108
+ end
79
109
  end
80
110
  end
81
111