twitter_cldr 1.9.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (403) hide show
  1. data/Gemfile +7 -0
  2. data/History.txt +11 -0
  3. data/README.md +93 -13
  4. data/Rakefile +27 -6
  5. data/lib/twitter_cldr/formatters.rb +15 -12
  6. data/lib/twitter_cldr/formatters/base.rb +1 -1
  7. data/lib/twitter_cldr/formatters/calendars/datetime_formatter.rb +18 -3
  8. data/lib/twitter_cldr/formatters/calendars/timespan_formatter.rb +24 -26
  9. data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +47 -0
  10. data/lib/twitter_cldr/formatters/numbers/abbreviated/long_decimal_formatter.rb +18 -0
  11. data/lib/twitter_cldr/formatters/numbers/abbreviated/short_decimal_formatter.rb +18 -0
  12. data/lib/twitter_cldr/formatters/numbers/currency_formatter.rb +22 -17
  13. data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +0 -9
  14. data/lib/twitter_cldr/formatters/numbers/helpers/base.rb +1 -1
  15. data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +25 -10
  16. data/lib/twitter_cldr/formatters/numbers/percent_formatter.rb +9 -6
  17. data/lib/twitter_cldr/localized/localized_datetime.rb +6 -2
  18. data/lib/twitter_cldr/localized/localized_number.rb +9 -3
  19. data/lib/twitter_cldr/localized/localized_timespan.rb +1 -1
  20. data/lib/twitter_cldr/resources.rb +13 -12
  21. data/lib/twitter_cldr/resources/custom_locales_resources_importer.rb +1 -1
  22. data/lib/twitter_cldr/resources/download.rb +1 -1
  23. data/lib/twitter_cldr/resources/locales_resources_importer.rb +10 -6
  24. data/lib/twitter_cldr/shared/bidi.rb +27 -27
  25. data/lib/twitter_cldr/shared/currencies.rb +20 -13
  26. data/lib/twitter_cldr/tokenizers.rb +10 -9
  27. data/lib/twitter_cldr/tokenizers/base.rb +33 -21
  28. data/lib/twitter_cldr/tokenizers/calendars/additional_date_format_selector.rb +86 -0
  29. data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +20 -11
  30. data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +50 -13
  31. data/lib/twitter_cldr/tokenizers/calendars/time_tokenizer.rb +19 -10
  32. data/lib/twitter_cldr/tokenizers/calendars/timespan_tokenizer.rb +32 -32
  33. data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +45 -22
  34. data/lib/twitter_cldr/utils.rb +16 -1
  35. data/lib/twitter_cldr/version.rb +1 -1
  36. data/resources/collation/tailoring/af.yml +1 -0
  37. data/resources/collation/tailoring/ar.yml +3 -2
  38. data/resources/collation/tailoring/be.yml +7 -0
  39. data/resources/collation/tailoring/bg.yml +5 -0
  40. data/resources/collation/tailoring/bn.yml +9 -0
  41. data/resources/collation/tailoring/ca.yml +3 -2
  42. data/resources/collation/tailoring/cs.yml +3 -2
  43. data/resources/collation/tailoring/cy.yml +51 -0
  44. data/resources/collation/tailoring/da.yml +3 -2
  45. data/resources/collation/tailoring/de.yml +1 -0
  46. data/resources/collation/tailoring/el.yml +1 -0
  47. data/resources/collation/tailoring/en.yml +1 -0
  48. data/resources/collation/tailoring/es.yml +3 -2
  49. data/resources/collation/tailoring/eu.yml +1 -0
  50. data/resources/collation/tailoring/fa.yml +3 -2
  51. data/resources/collation/tailoring/fi.yml +3 -2
  52. data/resources/collation/tailoring/fil.yml +3 -2
  53. data/resources/collation/tailoring/fr.yml +1 -0
  54. data/resources/collation/tailoring/ga.yml +5 -0
  55. data/resources/collation/tailoring/gl.yml +5 -0
  56. data/resources/collation/tailoring/he.yml +1 -0
  57. data/resources/collation/tailoring/hi.yml +3 -2
  58. data/resources/collation/tailoring/hu.yml +3 -2
  59. data/resources/collation/tailoring/id.yml +1 -0
  60. data/resources/collation/tailoring/it.yml +1 -0
  61. data/resources/collation/tailoring/ja.yml +107 -54
  62. data/resources/collation/tailoring/ko.yml +3 -2
  63. data/resources/collation/tailoring/lv.yml +35 -0
  64. data/resources/collation/tailoring/ms.yml +1 -0
  65. data/resources/collation/tailoring/nb.yml +3 -2
  66. data/resources/collation/tailoring/nl.yml +1 -0
  67. data/resources/collation/tailoring/pl.yml +3 -2
  68. data/resources/collation/tailoring/pt.yml +1 -0
  69. data/resources/collation/tailoring/ro.yml +31 -0
  70. data/resources/collation/tailoring/ru.yml +1 -0
  71. data/resources/collation/tailoring/sk.yml +35 -0
  72. data/resources/collation/tailoring/sq.yml +65 -0
  73. data/resources/collation/tailoring/sr.yml +5 -0
  74. data/resources/collation/tailoring/sv.yml +3 -2
  75. data/resources/collation/tailoring/ta.yml +57 -0
  76. data/resources/collation/tailoring/th.yml +3 -2
  77. data/resources/collation/tailoring/tr.yml +3 -2
  78. data/resources/collation/tailoring/uk.yml +3 -2
  79. data/resources/collation/tailoring/ur.yml +3 -2
  80. data/resources/collation/tailoring/zh-Hant.yml +3 -2
  81. data/resources/collation/tailoring/zh.yml +3 -2
  82. data/resources/collation/tries/be.dump +0 -0
  83. data/resources/collation/tries/bg.dump +0 -0
  84. data/resources/collation/tries/bn.dump +0 -0
  85. data/resources/collation/tries/cy.dump +0 -0
  86. data/resources/collation/tries/ga.dump +0 -0
  87. data/resources/collation/tries/gl.dump +0 -0
  88. data/resources/collation/tries/lv.dump +0 -0
  89. data/resources/collation/tries/ro.dump +0 -0
  90. data/resources/collation/tries/sk.dump +0 -0
  91. data/resources/collation/tries/sq.dump +0 -0
  92. data/resources/collation/tries/sr.dump +0 -0
  93. data/resources/collation/tries/ta.dump +0 -0
  94. data/resources/custom/locales/ar/units.yml +6 -6
  95. data/resources/custom/locales/be/units.yml +27 -0
  96. data/resources/custom/locales/bg/units.yml +19 -0
  97. data/resources/custom/locales/bn/units.yml +7 -0
  98. data/resources/custom/locales/cs/units.yml +3 -3
  99. data/resources/custom/locales/cy/units.yml +35 -0
  100. data/resources/custom/locales/fil/units.yml +2 -2
  101. data/resources/custom/locales/ga/units.yml +24 -0
  102. data/resources/custom/locales/gl/units.yml +19 -0
  103. data/resources/custom/locales/hu/plurals.yml +3 -0
  104. data/resources/custom/locales/hu/units.yml +4 -0
  105. data/resources/custom/locales/lv/units.yml +23 -0
  106. data/resources/custom/locales/ms/units.yml +1 -1
  107. data/resources/custom/locales/ro/units.yml +23 -0
  108. data/resources/custom/locales/sk/units.yml +23 -0
  109. data/resources/custom/locales/sr/units.yml +27 -0
  110. data/resources/custom/locales/ta/units.yml +11 -0
  111. data/resources/custom/locales/th/calendars.yml +14 -0
  112. data/resources/locales/af/calendars.yml +56 -0
  113. data/resources/locales/af/currencies.yml +358 -0
  114. data/resources/locales/af/languages.yml +23 -3
  115. data/resources/locales/af/numbers.yml +22 -8
  116. data/resources/locales/af/units.yml +26 -54
  117. data/resources/locales/ar/calendars.yml +99 -6
  118. data/resources/locales/ar/currencies.yml +1491 -0
  119. data/resources/locales/ar/languages.yml +33 -6
  120. data/resources/locales/ar/numbers.yml +27 -14
  121. data/resources/locales/ar/units.yml +31 -31
  122. data/resources/locales/be/calendars.yml +229 -0
  123. data/resources/locales/be/currencies.yml +66 -0
  124. data/resources/locales/be/languages.yml +149 -0
  125. data/resources/locales/be/layout.yml +4 -0
  126. data/resources/locales/be/lists.yml +7 -0
  127. data/resources/locales/be/numbers.yml +43 -0
  128. data/resources/locales/be/plurals.yml +5 -0
  129. data/resources/locales/be/units.yml +87 -0
  130. data/resources/locales/bg/calendars.yml +220 -0
  131. data/resources/locales/bg/currencies.yml +773 -0
  132. data/resources/locales/bg/languages.yml +513 -0
  133. data/resources/locales/bg/layout.yml +4 -0
  134. data/resources/locales/bg/lists.yml +7 -0
  135. data/resources/locales/bg/numbers.yml +57 -0
  136. data/resources/locales/bg/plurals.yml +3 -0
  137. data/resources/locales/bg/units.yml +108 -0
  138. data/resources/locales/bn/calendars.yml +205 -0
  139. data/resources/locales/bn/currencies.yml +564 -0
  140. data/resources/locales/bn/languages.yml +513 -0
  141. data/resources/locales/bn/layout.yml +4 -0
  142. data/resources/locales/bn/lists.yml +7 -0
  143. data/resources/locales/bn/numbers.yml +57 -0
  144. data/resources/locales/bn/plurals.yml +3 -0
  145. data/resources/locales/bn/units.yml +108 -0
  146. data/resources/locales/ca/calendars.yml +70 -21
  147. data/resources/locales/ca/currencies.yml +904 -0
  148. data/resources/locales/ca/languages.yml +70 -5
  149. data/resources/locales/ca/numbers.yml +19 -6
  150. data/resources/locales/ca/units.yml +0 -28
  151. data/resources/locales/cs/calendars.yml +73 -27
  152. data/resources/locales/cs/currencies.yml +1063 -0
  153. data/resources/locales/cs/languages.yml +113 -31
  154. data/resources/locales/cs/numbers.yml +17 -4
  155. data/resources/locales/cs/units.yml +0 -28
  156. data/resources/locales/cy/calendars.yml +266 -0
  157. data/resources/locales/cy/currencies.yml +54 -0
  158. data/resources/locales/cy/languages.yml +92 -0
  159. data/resources/locales/cy/layout.yml +4 -0
  160. data/resources/locales/cy/lists.yml +7 -0
  161. data/resources/locales/cy/numbers.yml +49 -0
  162. data/resources/locales/cy/plurals.yml +4 -0
  163. data/resources/locales/cy/units.yml +73 -0
  164. data/resources/locales/da/calendars.yml +117 -16
  165. data/resources/locales/da/currencies.yml +814 -0
  166. data/resources/locales/da/languages.yml +66 -5
  167. data/resources/locales/da/numbers.yml +16 -3
  168. data/resources/locales/da/units.yml +21 -35
  169. data/resources/locales/de/calendars.yml +115 -17
  170. data/resources/locales/de/currencies.yml +843 -0
  171. data/resources/locales/de/languages.yml +5 -3
  172. data/resources/locales/de/numbers.yml +18 -5
  173. data/resources/locales/de/units.yml +0 -28
  174. data/resources/locales/el/calendars.yml +61 -8
  175. data/resources/locales/el/currencies.yml +866 -0
  176. data/resources/locales/el/languages.yml +61 -5
  177. data/resources/locales/el/numbers.yml +18 -5
  178. data/resources/locales/el/units.yml +7 -42
  179. data/resources/locales/en/calendars.yml +43 -4
  180. data/resources/locales/en/currencies.yml +912 -0
  181. data/resources/locales/en/languages.yml +26 -6
  182. data/resources/locales/en/numbers.yml +17 -4
  183. data/resources/locales/es/calendars.yml +60 -0
  184. data/resources/locales/es/currencies.yml +820 -0
  185. data/resources/locales/es/languages.yml +66 -1
  186. data/resources/locales/es/numbers.yml +20 -7
  187. data/resources/locales/es/units.yml +0 -28
  188. data/resources/locales/eu/calendars.yml +43 -2
  189. data/resources/locales/eu/currencies.yml +378 -0
  190. data/resources/locales/eu/languages.yml +29 -13
  191. data/resources/locales/eu/numbers.yml +17 -4
  192. data/resources/locales/eu/units.yml +22 -43
  193. data/resources/locales/fa/calendars.yml +57 -0
  194. data/resources/locales/fa/currencies.yml +449 -0
  195. data/resources/locales/fa/languages.yml +8 -3
  196. data/resources/locales/fa/numbers.yml +20 -7
  197. data/resources/locales/fa/units.yml +0 -42
  198. data/resources/locales/fi/calendars.yml +49 -1
  199. data/resources/locales/fi/currencies.yml +903 -0
  200. data/resources/locales/fi/languages.yml +58 -2
  201. data/resources/locales/fi/numbers.yml +25 -12
  202. data/resources/locales/fi/units.yml +0 -28
  203. data/resources/locales/fil/calendars.yml +51 -0
  204. data/resources/locales/fil/currencies.yml +357 -0
  205. data/resources/locales/fil/languages.yml +25 -8
  206. data/resources/locales/fil/numbers.yml +18 -5
  207. data/resources/locales/fil/units.yml +14 -28
  208. data/resources/locales/fr/calendars.yml +114 -12
  209. data/resources/locales/fr/currencies.yml +884 -0
  210. data/resources/locales/fr/languages.yml +43 -9
  211. data/resources/locales/fr/numbers.yml +22 -9
  212. data/resources/locales/fr/units.yml +2 -30
  213. data/resources/locales/ga/calendars.yml +187 -0
  214. data/resources/locales/ga/currencies.yml +513 -0
  215. data/resources/locales/ga/languages.yml +147 -0
  216. data/resources/locales/ga/layout.yml +4 -0
  217. data/resources/locales/ga/lists.yml +7 -0
  218. data/resources/locales/ga/numbers.yml +43 -0
  219. data/resources/locales/ga/plurals.yml +4 -0
  220. data/resources/locales/ga/units.yml +66 -0
  221. data/resources/locales/gl/calendars.yml +216 -0
  222. data/resources/locales/gl/currencies.yml +476 -0
  223. data/resources/locales/gl/languages.yml +213 -0
  224. data/resources/locales/gl/layout.yml +4 -0
  225. data/resources/locales/gl/lists.yml +7 -0
  226. data/resources/locales/gl/numbers.yml +57 -0
  227. data/resources/locales/gl/plurals.yml +3 -0
  228. data/resources/locales/gl/units.yml +108 -0
  229. data/resources/locales/he/calendars.yml +70 -18
  230. data/resources/locales/he/currencies.yml +497 -0
  231. data/resources/locales/he/languages.yml +301 -7
  232. data/resources/locales/he/lists.yml +2 -2
  233. data/resources/locales/he/numbers.yml +23 -8
  234. data/resources/locales/he/plurals.yml +3 -2
  235. data/resources/locales/he/units.yml +72 -30
  236. data/resources/locales/hi/calendars.yml +54 -1
  237. data/resources/locales/hi/currencies.yml +388 -0
  238. data/resources/locales/hi/languages.yml +2 -0
  239. data/resources/locales/hi/numbers.yml +21 -8
  240. data/resources/locales/hi/units.yml +15 -29
  241. data/resources/locales/hu/calendars.yml +52 -5
  242. data/resources/locales/hu/currencies.yml +640 -0
  243. data/resources/locales/hu/languages.yml +60 -4
  244. data/resources/locales/hu/numbers.yml +25 -12
  245. data/resources/locales/hu/units.yml +1 -29
  246. data/resources/locales/id/calendars.yml +125 -21
  247. data/resources/locales/id/currencies.yml +603 -0
  248. data/resources/locales/id/languages.yml +113 -51
  249. data/resources/locales/id/numbers.yml +16 -3
  250. data/resources/locales/id/units.yml +0 -28
  251. data/resources/locales/it/calendars.yml +59 -6
  252. data/resources/locales/it/currencies.yml +722 -0
  253. data/resources/locales/it/languages.yml +77 -5
  254. data/resources/locales/it/numbers.yml +22 -9
  255. data/resources/locales/it/units.yml +0 -14
  256. data/resources/locales/ja/calendars.yml +55 -5
  257. data/resources/locales/ja/currencies.yml +602 -0
  258. data/resources/locales/ja/languages.yml +103 -43
  259. data/resources/locales/ja/numbers.yml +18 -5
  260. data/resources/locales/ja/units.yml +6 -34
  261. data/resources/locales/ko/calendars.yml +50 -0
  262. data/resources/locales/ko/currencies.yml +596 -0
  263. data/resources/locales/ko/languages.yml +75 -8
  264. data/resources/locales/ko/numbers.yml +17 -4
  265. data/resources/locales/ko/units.yml +0 -28
  266. data/resources/locales/lv/calendars.yml +275 -0
  267. data/resources/locales/lv/currencies.yml +765 -0
  268. data/resources/locales/lv/languages.yml +576 -0
  269. data/resources/locales/lv/layout.yml +4 -0
  270. data/resources/locales/lv/lists.yml +7 -0
  271. data/resources/locales/lv/numbers.yml +58 -0
  272. data/resources/locales/lv/plurals.yml +4 -0
  273. data/resources/locales/lv/units.yml +136 -0
  274. data/resources/locales/ms/calendars.yml +86 -4
  275. data/resources/locales/ms/currencies.yml +341 -0
  276. data/resources/locales/ms/languages.yml +25 -3
  277. data/resources/locales/ms/numbers.yml +19 -6
  278. data/resources/locales/ms/units.yml +0 -56
  279. data/resources/locales/nb/calendars.yml +48 -1
  280. data/resources/locales/nb/currencies.yml +846 -0
  281. data/resources/locales/nb/languages.yml +44 -2
  282. data/resources/locales/nb/numbers.yml +16 -3
  283. data/resources/locales/nb/units.yml +6 -28
  284. data/resources/locales/nl/calendars.yml +110 -9
  285. data/resources/locales/nl/currencies.yml +640 -0
  286. data/resources/locales/nl/languages.yml +68 -8
  287. data/resources/locales/nl/numbers.yml +25 -12
  288. data/resources/locales/nl/units.yml +14 -28
  289. data/resources/locales/pl/calendars.yml +53 -6
  290. data/resources/locales/pl/currencies.yml +1100 -0
  291. data/resources/locales/pl/languages.yml +13 -6
  292. data/resources/locales/pl/lists.yml +2 -2
  293. data/resources/locales/pl/numbers.yml +18 -5
  294. data/resources/locales/pl/units.yml +51 -92
  295. data/resources/locales/pt/calendars.yml +121 -9
  296. data/resources/locales/pt/currencies.yml +904 -0
  297. data/resources/locales/pt/languages.yml +5 -3
  298. data/resources/locales/pt/numbers.yml +17 -4
  299. data/resources/locales/pt/units.yml +0 -28
  300. data/resources/locales/ro/calendars.yml +278 -0
  301. data/resources/locales/ro/currencies.yml +946 -0
  302. data/resources/locales/ro/languages.yml +576 -0
  303. data/resources/locales/ro/layout.yml +4 -0
  304. data/resources/locales/ro/lists.yml +7 -0
  305. data/resources/locales/ro/numbers.yml +58 -0
  306. data/resources/locales/ro/plurals.yml +3 -0
  307. data/resources/locales/ro/units.yml +136 -0
  308. data/resources/locales/ru/calendars.yml +72 -12
  309. data/resources/locales/ru/currencies.yml +1061 -0
  310. data/resources/locales/ru/languages.yml +51 -6
  311. data/resources/locales/ru/numbers.yml +21 -5
  312. data/resources/locales/ru/units.yml +0 -28
  313. data/resources/locales/sk/calendars.yml +275 -0
  314. data/resources/locales/sk/currencies.yml +713 -0
  315. data/resources/locales/sk/languages.yml +576 -0
  316. data/resources/locales/sk/layout.yml +4 -0
  317. data/resources/locales/sk/lists.yml +7 -0
  318. data/resources/locales/sk/numbers.yml +58 -0
  319. data/resources/locales/sk/plurals.yml +3 -0
  320. data/resources/locales/sk/units.yml +136 -0
  321. data/resources/locales/sq/calendars.yml +188 -0
  322. data/resources/locales/sq/currencies.yml +56 -0
  323. data/resources/locales/sq/languages.yml +17 -0
  324. data/resources/locales/sq/layout.yml +4 -0
  325. data/resources/locales/sq/lists.yml +7 -0
  326. data/resources/locales/sq/numbers.yml +43 -0
  327. data/resources/locales/sq/plurals.yml +3 -0
  328. data/resources/locales/sq/units.yml +73 -0
  329. data/resources/locales/sr/calendars.yml +285 -0
  330. data/resources/locales/sr/currencies.yml +1494 -0
  331. data/resources/locales/sr/languages.yml +513 -0
  332. data/resources/locales/sr/layout.yml +4 -0
  333. data/resources/locales/sr/lists.yml +7 -0
  334. data/resources/locales/sr/numbers.yml +59 -0
  335. data/resources/locales/sr/plurals.yml +5 -0
  336. data/resources/locales/sr/units.yml +164 -0
  337. data/resources/locales/sv/calendars.yml +59 -1
  338. data/resources/locales/sv/currencies.yml +919 -0
  339. data/resources/locales/sv/languages.yml +47 -2
  340. data/resources/locales/sv/numbers.yml +27 -12
  341. data/resources/locales/sv/units.yml +4 -32
  342. data/resources/locales/ta/calendars.yml +264 -0
  343. data/resources/locales/ta/currencies.yml +346 -0
  344. data/resources/locales/ta/languages.yml +512 -0
  345. data/resources/locales/ta/layout.yml +4 -0
  346. data/resources/locales/ta/lists.yml +7 -0
  347. data/resources/locales/ta/numbers.yml +57 -0
  348. data/resources/locales/ta/plurals.yml +3 -0
  349. data/resources/locales/ta/units.yml +108 -0
  350. data/resources/locales/th/calendars.yml +125 -27
  351. data/resources/locales/th/currencies.yml +602 -0
  352. data/resources/locales/th/languages.yml +70 -5
  353. data/resources/locales/th/numbers.yml +24 -11
  354. data/resources/locales/th/units.yml +0 -28
  355. data/resources/locales/tr/calendars.yml +62 -12
  356. data/resources/locales/tr/currencies.yml +571 -0
  357. data/resources/locales/tr/languages.yml +94 -29
  358. data/resources/locales/tr/numbers.yml +19 -6
  359. data/resources/locales/tr/units.yml +1 -29
  360. data/resources/locales/uk/calendars.yml +52 -0
  361. data/resources/locales/uk/currencies.yml +799 -0
  362. data/resources/locales/uk/languages.yml +57 -2
  363. data/resources/locales/uk/numbers.yml +18 -5
  364. data/resources/locales/uk/units.yml +0 -28
  365. data/resources/locales/ur/calendars.yml +96 -32
  366. data/resources/locales/ur/currencies.yml +360 -0
  367. data/resources/locales/ur/languages.yml +49 -32
  368. data/resources/locales/ur/numbers.yml +13 -13
  369. data/resources/locales/ur/units.yml +28 -56
  370. data/resources/locales/zh-Hant/calendars.yml +59 -1
  371. data/resources/locales/zh-Hant/currencies.yml +602 -0
  372. data/resources/locales/zh-Hant/languages.yml +74 -8
  373. data/resources/locales/zh-Hant/numbers.yml +17 -4
  374. data/resources/locales/zh-Hant/units.yml +0 -28
  375. data/resources/locales/zh/calendars.yml +95 -35
  376. data/resources/locales/zh/currencies.yml +602 -0
  377. data/resources/locales/zh/languages.yml +116 -46
  378. data/resources/locales/zh/numbers.yml +20 -7
  379. data/resources/locales/zh/units.yml +6 -34
  380. data/resources/shared/currency_digits_and_rounding.yml +187 -0
  381. data/spec/bidi/bidi_spec.rb +1 -1
  382. data/spec/collation/tailoring_spec.rb +29 -25
  383. data/spec/formatters/calendars/datetime_formatter_spec.rb +50 -2
  384. data/spec/formatters/calendars/timespan_formatter_spec.rb +52 -8
  385. data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +81 -0
  386. data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +37 -0
  387. data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +37 -0
  388. data/spec/formatters/numbers/currency_formatter_spec.rb +10 -1
  389. data/spec/localized/localized_date_spec.rb +11 -11
  390. data/spec/localized/localized_datetime_spec.rb +27 -3
  391. data/spec/localized/localized_number_spec.rb +34 -6
  392. data/spec/localized/localized_time_spec.rb +1 -1
  393. data/spec/readme_spec.rb +24 -3
  394. data/spec/shared/currencies_spec.rb +7 -9
  395. data/spec/spec_helper.rb +7 -0
  396. data/spec/tokenizers/base_spec.rb +71 -21
  397. data/spec/tokenizers/calendars/additional_date_format_selector_spec.rb +131 -0
  398. data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +54 -27
  399. data/spec/tokenizers/calendars/time_tokenizer_spec.rb +16 -16
  400. data/spec/tokenizers/numbers/number_tokenizer_spec.rb +9 -21
  401. data/spec/utils/yaml/yaml_spec.rb +21 -16
  402. data/spec/utils_spec.rb +6 -2
  403. metadata +218 -37
@@ -4,25 +4,38 @@
4
4
  :formats:
5
5
  :currency:
6
6
  :patterns:
7
- :default: ¤#,##0.00
7
+ :default: ¤#,##0.00;(¤#,##0.00)
8
8
  :unit:
9
- :other: ! '{0} {1}'
9
+ :other: ! '{0}{1}'
10
10
  :decimal:
11
11
  :patterns:
12
12
  :default: ! '#,##0.###'
13
+ :long:
14
+ 1000: 0
15
+ 10000: 0万
16
+ 100000: 00万
17
+ 1000000: 000万
18
+ 10000000: 0000万
19
+ 100000000: 0亿
20
+ 1000000000: 00亿
21
+ 10000000000: 000亿
22
+ 100000000000: 0000亿
23
+ 1000000000000: 0万亿
24
+ 10000000000000: 00万亿
25
+ 100000000000000: 000万亿
13
26
  :short:
14
27
  1000: 0
15
- 10000: 0.0
28
+ 10000: 0万
16
29
  100000: 00万
17
30
  1000000: 000万
18
31
  10000000: 0000万
19
- 100000000: 0.0亿
32
+ 100000000: 0亿
20
33
  1000000000: 00亿
21
34
  10000000000: 000亿
22
35
  100000000000: 0000亿
23
- 1000000000000: 0.0兆
24
- 10000000000000: 00
25
- 100000000000000: 000
36
+ 1000000000000: 0万亿
37
+ 10000000000000: 00万亿
38
+ 100000000000000: 000万亿
26
39
  :percent:
27
40
  :patterns:
28
41
  :default: ! '#,##0%'
@@ -3,18 +3,14 @@
3
3
  :units:
4
4
  :day:
5
5
  :default:
6
- :other: ! '{0}'
6
+ :other: ! '{0}'
7
7
  :short:
8
- :other: ! '{0}'
8
+ :other: ! '{0}'
9
9
  :day-future:
10
10
  :default:
11
- 0: 0天后
12
- 1: 1天后
13
11
  :other: ! '{0}天后'
14
12
  :day-past:
15
13
  :default:
16
- 0: 0天前
17
- 1: 1天前
18
14
  :other: ! '{0}天前'
19
15
  :hour:
20
16
  :default:
@@ -23,58 +19,42 @@
23
19
  :other: ! '{0}小时'
24
20
  :hour-future:
25
21
  :default:
26
- 0: 0小时后
27
- 1: 1小时后
28
22
  :other: ! '{0}小时后'
29
23
  :hour-past:
30
24
  :default:
31
- 0: 0小时前
32
- 1: 1小时前
33
25
  :other: ! '{0}小时前'
34
26
  :minute:
35
27
  :default:
36
- :other: ! '{0}'
28
+ :other: ! '{0}分钟'
37
29
  :short:
38
30
  :other: ! '{0}分'
39
31
  :minute-future:
40
32
  :default:
41
- 0: 0分钟后
42
- 1: 1分钟后
43
33
  :other: ! '{0}分钟后'
44
34
  :minute-past:
45
35
  :default:
46
- 0: 0分钟前
47
- 1: 1分钟前
48
36
  :other: ! '{0}分钟前'
49
37
  :month:
50
38
  :default:
51
- :other: ! '{0}'
39
+ :other: ! '{0}个月'
52
40
  :short:
53
- :other: ! '{0}'
41
+ :other: ! '{0}个月'
54
42
  :month-future:
55
43
  :default:
56
- 0: 0个月后
57
- 1: 1个月后
58
44
  :other: ! '{0}个月后'
59
45
  :month-past:
60
46
  :default:
61
- 0: 0个月前
62
- 1: 1个月前
63
47
  :other: ! '{0}个月前'
64
48
  :second:
65
49
  :default:
66
- :other: ! '{0}'
50
+ :other: ! '{0}秒钟'
67
51
  :short:
68
52
  :other: ! '{0}秒'
69
53
  :second-future:
70
54
  :default:
71
- 0: 0秒钟后
72
- 1: 1秒钟后
73
55
  :other: ! '{0}秒钟后'
74
56
  :second-past:
75
57
  :default:
76
- 0: 0秒钟前
77
- 1: 1秒钟前
78
58
  :other: ! '{0}秒钟前'
79
59
  :week:
80
60
  :default:
@@ -83,13 +63,9 @@
83
63
  :other: ! '{0}周'
84
64
  :week-future:
85
65
  :default:
86
- 0: 0周后
87
- 1: 1周后
88
66
  :other: ! '{0}周后'
89
67
  :week-past:
90
68
  :default:
91
- 0: 0周前
92
- 1: 1周前
93
69
  :other: ! '{0}周前'
94
70
  :year:
95
71
  :default:
@@ -98,11 +74,7 @@
98
74
  :other: ! '{0}年'
99
75
  :year-future:
100
76
  :default:
101
- 0: 0年后
102
- 1: 1年后
103
77
  :other: ! '{0}年后'
104
78
  :year-past:
105
79
  :default:
106
- 0: 0年前
107
- 1: 1年前
108
80
  :other: ! '{0}年前'
@@ -0,0 +1,187 @@
1
+ ---
2
+ :ADP:
3
+ :digits: 0
4
+ :rounding: 0
5
+ :AFN:
6
+ :digits: 0
7
+ :rounding: 0
8
+ :ALL:
9
+ :digits: 0
10
+ :rounding: 0
11
+ :AMD:
12
+ :digits: 0
13
+ :rounding: 0
14
+ :BHD:
15
+ :digits: 3
16
+ :rounding: 0
17
+ :BIF:
18
+ :digits: 0
19
+ :rounding: 0
20
+ :BYR:
21
+ :digits: 0
22
+ :rounding: 0
23
+ :CHF:
24
+ :digits: 2
25
+ :rounding: 5
26
+ :CLF:
27
+ :digits: 0
28
+ :rounding: 0
29
+ :CLP:
30
+ :digits: 0
31
+ :rounding: 0
32
+ :COP:
33
+ :digits: 0
34
+ :rounding: 0
35
+ :CRC:
36
+ :digits: 0
37
+ :rounding: 0
38
+ :DEFAULT:
39
+ :digits: 2
40
+ :rounding: 0
41
+ :DJF:
42
+ :digits: 0
43
+ :rounding: 0
44
+ :ESP:
45
+ :digits: 0
46
+ :rounding: 0
47
+ :GNF:
48
+ :digits: 0
49
+ :rounding: 0
50
+ :GYD:
51
+ :digits: 0
52
+ :rounding: 0
53
+ :HUF:
54
+ :digits: 0
55
+ :rounding: 0
56
+ :IDR:
57
+ :digits: 0
58
+ :rounding: 0
59
+ :IQD:
60
+ :digits: 0
61
+ :rounding: 0
62
+ :IRR:
63
+ :digits: 0
64
+ :rounding: 0
65
+ :ISK:
66
+ :digits: 0
67
+ :rounding: 0
68
+ :ITL:
69
+ :digits: 0
70
+ :rounding: 0
71
+ :JOD:
72
+ :digits: 3
73
+ :rounding: 0
74
+ :JPY:
75
+ :digits: 0
76
+ :rounding: 0
77
+ :KMF:
78
+ :digits: 0
79
+ :rounding: 0
80
+ :KPW:
81
+ :digits: 0
82
+ :rounding: 0
83
+ :KRW:
84
+ :digits: 0
85
+ :rounding: 0
86
+ :KWD:
87
+ :digits: 3
88
+ :rounding: 0
89
+ :LAK:
90
+ :digits: 0
91
+ :rounding: 0
92
+ :LBP:
93
+ :digits: 0
94
+ :rounding: 0
95
+ :LUF:
96
+ :digits: 0
97
+ :rounding: 0
98
+ :LYD:
99
+ :digits: 3
100
+ :rounding: 0
101
+ :MGA:
102
+ :digits: 0
103
+ :rounding: 0
104
+ :MGF:
105
+ :digits: 0
106
+ :rounding: 0
107
+ :MMK:
108
+ :digits: 0
109
+ :rounding: 0
110
+ :MNT:
111
+ :digits: 0
112
+ :rounding: 0
113
+ :MRO:
114
+ :digits: 0
115
+ :rounding: 0
116
+ :MUR:
117
+ :digits: 0
118
+ :rounding: 0
119
+ :OMR:
120
+ :digits: 3
121
+ :rounding: 0
122
+ :PKR:
123
+ :digits: 0
124
+ :rounding: 0
125
+ :PYG:
126
+ :digits: 0
127
+ :rounding: 0
128
+ :RSD:
129
+ :digits: 0
130
+ :rounding: 0
131
+ :RWF:
132
+ :digits: 0
133
+ :rounding: 0
134
+ :SLL:
135
+ :digits: 0
136
+ :rounding: 0
137
+ :SOS:
138
+ :digits: 0
139
+ :rounding: 0
140
+ :STD:
141
+ :digits: 0
142
+ :rounding: 0
143
+ :SYP:
144
+ :digits: 0
145
+ :rounding: 0
146
+ :TMM:
147
+ :digits: 0
148
+ :rounding: 0
149
+ :TND:
150
+ :digits: 3
151
+ :rounding: 0
152
+ :TRL:
153
+ :digits: 0
154
+ :rounding: 0
155
+ :TZS:
156
+ :digits: 0
157
+ :rounding: 0
158
+ :UGX:
159
+ :digits: 0
160
+ :rounding: 0
161
+ :UZS:
162
+ :digits: 0
163
+ :rounding: 0
164
+ :VND:
165
+ :digits: 0
166
+ :rounding: 0
167
+ :VUV:
168
+ :digits: 0
169
+ :rounding: 0
170
+ :XAF:
171
+ :digits: 0
172
+ :rounding: 0
173
+ :XOF:
174
+ :digits: 0
175
+ :rounding: 0
176
+ :XPF:
177
+ :digits: 0
178
+ :rounding: 0
179
+ :YER:
180
+ :digits: 0
181
+ :rounding: 0
182
+ :ZMK:
183
+ :digits: 0
184
+ :rounding: 0
185
+ :ZWD:
186
+ :digits: 0
187
+ :rounding: 0
@@ -20,7 +20,7 @@ def expand_bitset_str(bitset)
20
20
  end
21
21
 
22
22
  describe Bidi do
23
- it "should pass the derived tests in classpath_bidi_test.txt" do
23
+ it "should pass the derived tests in classpath_bidi_test.txt", :slow => true do
24
24
  expected_level_data = []
25
25
  expected_reorder_data = []
26
26
  num_failed = 0
@@ -14,40 +14,44 @@ describe 'Unicode collation tailoring' do
14
14
  #
15
15
  it 'passes tailoring test for each supported locale', :slow => true do
16
16
  TwitterCldr.supported_locales.each do |locale|
17
- collator = Collator.new(locale)
17
+ tailor_file = File.join(File.dirname(__FILE__), 'tailoring_tests', "#{locale}.txt")
18
18
 
19
- print "#{locale}\t-\t"
19
+ if File.exist?(tailor_file)
20
+ collator = Collator.new(locale)
20
21
 
21
- lines = File.open(File.join(File.dirname(__FILE__), 'tailoring_tests', "#{locale}.txt")) do |file|
22
- file.lines.map(&:strip)
23
- end
22
+ print "#{locale}\t-\t"
24
23
 
25
- active_tests = lines.count(&method(:tailoring_test?))
26
- pending_tests = lines.count(&method(:pending_tailoring_test?))
27
- print "tests: %-4d active, %5.1f%% %5s pending\t-\t" % [active_tests, (100.0 * pending_tests / (pending_tests + active_tests)), "(#{pending_tests})"]
24
+ lines = File.open(File.join(File.dirname(__FILE__), 'tailoring_tests', "#{locale}.txt")) do |file|
25
+ file.lines.map(&:strip)
26
+ end
28
27
 
29
- last_number = last = nil
28
+ active_tests = lines.count(&method(:tailoring_test?))
29
+ pending_tests = lines.count(&method(:pending_tailoring_test?))
30
+ print "tests: %-4d active, %5.1f%% %5s pending\t-\t" % [active_tests, (100.0 * pending_tests / (pending_tests + active_tests)), "(#{pending_tests})"]
30
31
 
31
- failures = lines.each_with_index.inject([]) do |memo, (current, number)|
32
- if tailoring_test?(current)
33
- memo << [last_number + 1, last, current] if tailoring_test?(last) && collator.compare(last, current) == 1
32
+ last_number = last = nil
34
33
 
35
- last = current
36
- last_number = number
37
- elsif pending_tailoring_test?(current)
38
- last_number = last = nil
39
- end
34
+ failures = lines.each_with_index.inject([]) do |memo, (current, number)|
35
+ if tailoring_test?(current)
36
+ memo << [last_number + 1, last, current] if tailoring_test?(last) && collator.compare(last, current) == 1
40
37
 
41
- memo
42
- end
38
+ last = current
39
+ last_number = number
40
+ elsif pending_tailoring_test?(current)
41
+ last_number = last = nil
42
+ end
43
43
 
44
- if failures.empty?
45
- puts "OK"
46
- else
47
- failures_info = "#{failures.size} failures: #{failures.inspect}"
44
+ memo
45
+ end
46
+
47
+ if failures.empty?
48
+ puts "OK"
49
+ else
50
+ failures_info = "#{failures.size} failures: #{failures.inspect}"
48
51
 
49
- puts failures_info
50
- failures.should(be_empty, "#{locale} - #{failures_info}")
52
+ puts failures_info
53
+ failures.should(be_empty, "#{locale} - #{failures_info}")
54
+ end
51
55
  end
52
56
  end
53
57
  end
@@ -194,8 +194,8 @@ describe DateTimeFormatter do
194
194
  end
195
195
 
196
196
  it "test: pattern MMM" do
197
- @formatter.send(:month, Date.new(2010, 1, 1), 'MMM', 3).should == 'Jan'
198
- @formatter.send(:month, Date.new(2010, 10, 1), 'MMM', 3).should == 'Okt'
197
+ @formatter.send(:month, Date.new(2010, 1, 1), 'MMM', 3).should == 'Jan.'
198
+ @formatter.send(:month, Date.new(2010, 10, 1), 'MMM', 3).should == 'Okt.'
199
199
  end
200
200
 
201
201
  it "test: pattern MMMM" do
@@ -416,5 +416,53 @@ describe DateTimeFormatter do
416
416
  @formatter.send(:era, Date.new(2012, 1, 1), 'GGGG', 4).should == "Anno Domini"
417
417
  @formatter.send(:era, Date.new(-1, 1, 1), 'GGGG', 4).should == "Before Christ"
418
418
  end
419
+
420
+ it "should fall back if the calendar doesn't contain the appropriate era data" do
421
+ stub(@formatter.tokenizer).calendar do
422
+ {
423
+ :eras => {
424
+ :abbr => {
425
+ 0 => "abbr0",
426
+ 1 => "abbr1"
427
+ },
428
+ :name => {
429
+ 0 => "name0"
430
+ }
431
+ }
432
+ }
433
+ end
434
+
435
+ date = Date.new(2012, 1, 1)
436
+ mock.proxy(@formatter).era(date, "GGGG", 4) # first attempts to find full name era
437
+ mock.proxy(@formatter).era(date, "GGG", 3) # falls back to abbreviated era
438
+ @formatter.send(:era, date, 'GGGG', 4).should == "abbr1"
439
+ end
440
+ end
441
+
442
+ describe "#month_stand_alone" do
443
+ it "pattern L" do
444
+ @formatter.send(:month_stand_alone, Date.new(2010, 1, 1), 'L', 1).should == "1"
445
+ @formatter.send(:month_stand_alone, Date.new(2010, 10, 1), 'L', 1).should == "10"
446
+ end
447
+
448
+ it "pattern LL" do
449
+ @formatter.send(:month_stand_alone, Date.new(2010, 1, 1), 'LL', 2).should == "01"
450
+ @formatter.send(:month_stand_alone, Date.new(2010, 10, 1), 'LL', 2).should == "10"
451
+ end
452
+
453
+ it "pattern LLL" do
454
+ @formatter.send(:month_stand_alone, Date.new(2010, 1, 1), 'LLL', 3).should == "Jan"
455
+ @formatter.send(:month_stand_alone, Date.new(2010, 10, 1), 'LLL', 3).should == "Okt"
456
+ end
457
+
458
+ it "pattern LLLL" do
459
+ @formatter.send(:month_stand_alone, Date.new(2010, 1, 1), 'LLLL', 4).should == "Januar"
460
+ @formatter.send(:month_stand_alone, Date.new(2010, 10, 1), 'LLLL', 4).should == "Oktober"
461
+ end
462
+
463
+ it "pattern LLLLL" do
464
+ @formatter.send(:month_stand_alone, Date.new(2010, 1, 1), 'LLLLL', 5).should == "J"
465
+ @formatter.send(:month_stand_alone, Date.new(2010, 10, 1), 'LLLLL', 5).should == "O"
466
+ end
419
467
  end
420
468
  end