twitter_cldr 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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