twitter_cldr 1.6.2 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -1
- data/History.txt +8 -0
- data/README.md +64 -14
- data/Rakefile +57 -7
- data/js/lib/compiler.rb +3 -1
- data/js/lib/mustache/bundle.coffee +5 -5
- data/js/lib/mustache/numbers/numbers.coffee +179 -0
- data/js/lib/mustache/shared/currencies.coffee +27 -0
- data/js/lib/renderers/numbers/numbers_renderer.rb +31 -0
- data/js/lib/renderers/plurals/rules/plural_rules_compiler.rb +5 -1
- data/js/lib/renderers/shared/currencies_renderer.rb +23 -0
- data/js/lib/twitter_cldr_js.rb +2 -0
- data/js/spec/js/calendars/timespan_spec.js +2 -2
- data/js/spec/js/numbers/currency_spec.js +34 -0
- data/js/spec/js/numbers/decimal_spec.js +24 -0
- data/js/spec/js/numbers/helpers/fraction_spec.js +23 -0
- data/js/spec/js/numbers/helpers/integer_spec.js +100 -0
- data/js/spec/js/numbers/number_spec.js +70 -0
- data/js/spec/js/numbers/percent_spec.js +22 -0
- data/js/spec/rb/renderers/plurals/plural_rules_compiler_spec.rb +4 -0
- data/lib/twitter_cldr/collation/collator.rb +14 -20
- data/lib/twitter_cldr/collation/trie_builder.rb +3 -3
- data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +0 -6
- data/lib/twitter_cldr/formatters/numbers/helpers/base.rb +1 -1
- data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +6 -2
- data/lib/twitter_cldr/normalization/base.rb +7 -1
- data/lib/twitter_cldr/normalization/nfd.rb +2 -6
- data/lib/twitter_cldr/normalization/nfkc.rb +4 -10
- data/lib/twitter_cldr/normalization/nfkd.rb +12 -37
- data/lib/twitter_cldr/resources.rb +10 -3
- data/lib/twitter_cldr/resources/canonical_compositions_updater.rb +51 -0
- data/lib/twitter_cldr/resources/composition_exclusions_importer.rb +62 -0
- data/lib/twitter_cldr/resources/custom_locales_resources_importer.rb +80 -0
- data/lib/twitter_cldr/resources/download.rb +41 -0
- data/lib/twitter_cldr/resources/loader.rb +1 -1
- data/lib/twitter_cldr/resources/locales_resources_importer.rb +105 -0
- data/lib/twitter_cldr/resources/phone_codes_importer.rb +48 -0
- data/lib/twitter_cldr/resources/postal_codes_importer.rb +44 -0
- data/lib/twitter_cldr/resources/tailoring_importer.rb +18 -16
- data/lib/twitter_cldr/resources/unicode_data_importer.rb +90 -0
- data/lib/twitter_cldr/shared.rb +3 -1
- data/lib/twitter_cldr/shared/code_point.rb +47 -36
- data/lib/twitter_cldr/shared/currencies.rb +12 -15
- data/lib/twitter_cldr/shared/phone_codes.rb +30 -0
- data/lib/twitter_cldr/shared/postal_codes.rb +35 -0
- data/lib/twitter_cldr/tokenizers/calendars/timespan_tokenizer.rb +11 -3
- data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +8 -1
- data/lib/twitter_cldr/utils/code_points.rb +2 -2
- data/lib/twitter_cldr/version.rb +1 -1
- data/resources/collation/tailoring/af.yml +3 -3
- data/resources/collation/tailoring/ar.yml +3 -3
- data/resources/collation/tailoring/ca.yml +3 -3
- data/resources/collation/tailoring/cs.yml +3 -3
- data/resources/collation/tailoring/da.yml +4 -4
- data/resources/collation/tailoring/de.yml +3 -3
- data/resources/collation/tailoring/el.yml +3 -3
- data/resources/collation/tailoring/en.yml +3 -3
- data/resources/collation/tailoring/es.yml +3 -3
- data/resources/collation/tailoring/eu.yml +3 -3
- data/resources/collation/tailoring/fa.yml +3 -3
- data/resources/collation/tailoring/fi.yml +3 -3
- data/resources/collation/tailoring/fil.yml +3 -3
- data/resources/collation/tailoring/fr.yml +3 -3
- data/resources/collation/tailoring/he.yml +3 -3
- data/resources/collation/tailoring/hi.yml +3 -3
- data/resources/collation/tailoring/hu.yml +3 -3
- data/resources/collation/tailoring/id.yml +3 -3
- data/resources/collation/tailoring/it.yml +3 -3
- data/resources/collation/tailoring/ja.yml +3 -3
- data/resources/collation/tailoring/ko.yml +3 -3
- data/resources/collation/tailoring/ms.yml +3 -3
- data/resources/collation/tailoring/nb.yml +3 -3
- data/resources/collation/tailoring/nl.yml +3 -3
- data/resources/collation/tailoring/pl.yml +3 -3
- data/resources/collation/tailoring/pt.yml +3 -3
- data/resources/collation/tailoring/ru.yml +3 -3
- data/resources/collation/tailoring/sv.yml +3 -3
- data/resources/collation/tailoring/th.yml +3 -3
- data/resources/collation/tailoring/tr.yml +3 -3
- data/resources/collation/tailoring/uk.yml +3 -3
- data/resources/collation/tailoring/ur.yml +3 -3
- data/resources/collation/tailoring/zh-Hant.yml +3 -3
- data/resources/collation/tailoring/zh.yml +3 -3
- data/resources/custom/locales/af/units.yml +19 -19
- data/resources/custom/locales/ar/units.yml +35 -35
- data/resources/custom/locales/ca/units.yml +19 -19
- data/resources/custom/locales/cs/units.yml +23 -23
- data/resources/custom/locales/da/units.yml +19 -19
- data/resources/custom/locales/de/units.yml +19 -19
- data/resources/custom/locales/el/units.yml +19 -19
- data/resources/custom/locales/en/units.yml +10 -10
- data/resources/custom/locales/es/units.yml +19 -19
- data/resources/custom/locales/eu/units.yml +19 -19
- data/resources/custom/locales/fa/units.yml +15 -15
- data/resources/custom/locales/fi/units.yml +19 -19
- data/resources/custom/locales/fil/units.yml +19 -19
- data/resources/custom/locales/fr/units.yml +19 -19
- data/resources/custom/locales/he/units.yml +19 -19
- data/resources/custom/locales/hi/units.yml +19 -19
- data/resources/custom/locales/hu/units.yml +15 -15
- data/resources/custom/locales/id/units.yml +15 -15
- data/resources/custom/locales/it/units.yml +19 -19
- data/resources/custom/locales/ja/units.yml +15 -15
- data/resources/custom/locales/ko/units.yml +15 -15
- data/resources/custom/locales/ms/units.yml +15 -15
- data/resources/custom/locales/nb/units.yml +19 -19
- data/resources/custom/locales/nl/units.yml +19 -19
- data/resources/custom/locales/pl/units.yml +27 -23
- data/resources/custom/locales/pt/units.yml +19 -19
- data/resources/custom/locales/ru/units.yml +27 -27
- data/resources/custom/locales/sv/units.yml +19 -19
- data/resources/custom/locales/th/units.yml +15 -15
- data/resources/custom/locales/tr/units.yml +15 -15
- data/resources/custom/locales/uk/units.yml +27 -27
- data/resources/custom/locales/ur/units.yml +19 -19
- data/resources/custom/locales/zh-Hant/units.yml +15 -15
- data/resources/custom/locales/zh/units.yml +15 -15
- data/resources/locales/af/calendars.yml +114 -113
- data/resources/locales/af/languages.yml +174 -173
- data/resources/locales/af/numbers.yml +43 -42
- data/resources/locales/af/plurals.yml +3 -2
- data/resources/locales/af/units.yml +136 -135
- data/resources/locales/ar/calendars.yml +121 -120
- data/resources/locales/ar/languages.yml +501 -500
- data/resources/locales/ar/numbers.yml +36 -35
- data/resources/locales/ar/plurals.yml +9 -1
- data/resources/locales/ar/units.yml +220 -219
- data/resources/locales/ca/calendars.yml +157 -156
- data/resources/locales/ca/languages.yml +511 -510
- data/resources/locales/ca/numbers.yml +44 -43
- data/resources/locales/ca/plurals.yml +3 -2
- data/resources/locales/ca/units.yml +136 -135
- data/resources/locales/cs/calendars.yml +153 -152
- data/resources/locales/cs/languages.yml +472 -471
- data/resources/locales/cs/numbers.yml +45 -44
- data/resources/locales/cs/plurals.yml +3 -2
- data/resources/locales/cs/units.yml +164 -163
- data/resources/locales/da/calendars.yml +117 -116
- data/resources/locales/da/languages.yml +515 -514
- data/resources/locales/da/numbers.yml +44 -43
- data/resources/locales/da/plurals.yml +3 -1
- data/resources/locales/da/units.yml +122 -121
- data/resources/locales/de/calendars.yml +136 -135
- data/resources/locales/de/languages.yml +514 -513
- data/resources/locales/de/numbers.yml +44 -43
- data/resources/locales/de/plurals.yml +3 -1
- data/resources/locales/de/units.yml +136 -135
- data/resources/locales/el/calendars.yml +138 -137
- data/resources/locales/el/languages.yml +520 -519
- data/resources/locales/el/numbers.yml +43 -42
- data/resources/locales/el/plurals.yml +3 -2
- data/resources/locales/el/units.yml +143 -142
- data/resources/locales/en/calendars.yml +117 -116
- data/resources/locales/en/languages.yml +559 -558
- data/resources/locales/en/numbers.yml +32 -31
- data/resources/locales/en/plurals.yml +3 -1
- data/resources/locales/en/units.yml +108 -107
- data/resources/locales/es/calendars.yml +118 -117
- data/resources/locales/es/languages.yml +511 -510
- data/resources/locales/es/numbers.yml +42 -41
- data/resources/locales/es/plurals.yml +3 -1
- data/resources/locales/es/units.yml +136 -135
- data/resources/locales/eu/calendars.yml +124 -123
- data/resources/locales/eu/languages.yml +162 -161
- data/resources/locales/eu/numbers.yml +44 -43
- data/resources/locales/eu/plurals.yml +3 -2
- data/resources/locales/eu/units.yml +129 -128
- data/resources/locales/fa/calendars.yml +137 -136
- data/resources/locales/fa/languages.yml +489 -488
- data/resources/locales/fa/numbers.yml +31 -30
- data/resources/locales/fa/plurals.yml +3 -1
- data/resources/locales/fa/units.yml +122 -121
- data/resources/locales/fi/calendars.yml +153 -152
- data/resources/locales/fi/languages.yml +520 -519
- data/resources/locales/fi/numbers.yml +44 -43
- data/resources/locales/fi/plurals.yml +3 -1
- data/resources/locales/fi/units.yml +136 -135
- data/resources/locales/fil/calendars.yml +123 -122
- data/resources/locales/fil/languages.yml +169 -168
- data/resources/locales/fil/numbers.yml +32 -31
- data/resources/locales/fil/plurals.yml +3 -1
- data/resources/locales/fil/units.yml +122 -121
- data/resources/locales/fr/calendars.yml +144 -143
- data/resources/locales/fr/languages.yml +512 -511
- data/resources/locales/fr/numbers.yml +44 -43
- data/resources/locales/fr/plurals.yml +3 -1
- data/resources/locales/fr/units.yml +136 -135
- data/resources/locales/he/calendars.yml +120 -119
- data/resources/locales/he/languages.yml +282 -281
- data/resources/locales/he/numbers.yml +32 -31
- data/resources/locales/he/plurals.yml +3 -1
- data/resources/locales/he/units.yml +122 -121
- data/resources/locales/hi/calendars.yml +112 -111
- data/resources/locales/hi/languages.yml +511 -510
- data/resources/locales/hi/numbers.yml +32 -31
- data/resources/locales/hi/plurals.yml +3 -1
- data/resources/locales/hi/units.yml +122 -121
- data/resources/locales/hu/calendars.yml +142 -141
- data/resources/locales/hu/languages.yml +520 -519
- data/resources/locales/hu/numbers.yml +43 -42
- data/resources/locales/hu/plurals.yml +3 -1
- data/resources/locales/hu/units.yml +108 -107
- data/resources/locales/id/calendars.yml +117 -116
- data/resources/locales/id/languages.yml +514 -513
- data/resources/locales/id/numbers.yml +43 -42
- data/resources/locales/id/plurals.yml +3 -1
- data/resources/locales/id/units.yml +108 -107
- data/resources/locales/it/calendars.yml +123 -122
- data/resources/locales/it/languages.yml +504 -503
- data/resources/locales/it/numbers.yml +44 -43
- data/resources/locales/it/plurals.yml +3 -1
- data/resources/locales/it/units.yml +122 -121
- data/resources/locales/ja/calendars.yml +109 -108
- data/resources/locales/ja/languages.yml +516 -515
- data/resources/locales/ja/numbers.yml +35 -34
- data/resources/locales/ja/plurals.yml +3 -1
- data/resources/locales/ja/units.yml +108 -107
- data/resources/locales/ko/calendars.yml +112 -111
- data/resources/locales/ko/languages.yml +509 -508
- data/resources/locales/ko/numbers.yml +32 -31
- data/resources/locales/ko/plurals.yml +3 -1
- data/resources/locales/ko/units.yml +108 -107
- data/resources/locales/ms/calendars.yml +134 -133
- data/resources/locales/ms/languages.yml +158 -157
- data/resources/locales/ms/numbers.yml +31 -30
- data/resources/locales/ms/plurals.yml +3 -1
- data/resources/locales/ms/units.yml +136 -135
- data/resources/locales/nb/calendars.yml +143 -142
- data/resources/locales/nb/languages.yml +530 -529
- data/resources/locales/nb/numbers.yml +44 -43
- data/resources/locales/nb/plurals.yml +3 -2
- data/resources/locales/nb/units.yml +130 -129
- data/resources/locales/nl/calendars.yml +124 -123
- data/resources/locales/nl/languages.yml +516 -515
- data/resources/locales/nl/numbers.yml +44 -43
- data/resources/locales/nl/plurals.yml +3 -1
- data/resources/locales/nl/units.yml +122 -121
- data/resources/locales/pl/calendars.yml +148 -147
- data/resources/locales/pl/languages.yml +505 -504
- data/resources/locales/pl/numbers.yml +46 -45
- data/resources/locales/pl/plurals.yml +5 -1
- data/resources/locales/pl/units.yml +205 -204
- data/resources/locales/pt/calendars.yml +131 -130
- data/resources/locales/pt/languages.yml +517 -516
- data/resources/locales/pt/numbers.yml +44 -43
- data/resources/locales/pt/plurals.yml +3 -1
- data/resources/locales/pt/units.yml +136 -135
- data/resources/locales/ru/calendars.yml +143 -142
- data/resources/locales/ru/languages.yml +511 -510
- data/resources/locales/ru/numbers.yml +43 -42
- data/resources/locales/ru/plurals.yml +5 -1
- data/resources/locales/ru/units.yml +192 -191
- data/resources/locales/sv/calendars.yml +151 -150
- data/resources/locales/sv/languages.yml +531 -530
- data/resources/locales/sv/numbers.yml +44 -43
- data/resources/locales/sv/plurals.yml +3 -1
- data/resources/locales/sv/units.yml +136 -135
- data/resources/locales/th/calendars.yml +125 -124
- data/resources/locales/th/languages.yml +510 -509
- data/resources/locales/th/numbers.yml +41 -40
- data/resources/locales/th/plurals.yml +3 -1
- data/resources/locales/th/units.yml +108 -107
- data/resources/locales/tr/calendars.yml +139 -138
- data/resources/locales/tr/languages.yml +511 -510
- data/resources/locales/tr/numbers.yml +43 -42
- data/resources/locales/tr/plurals.yml +3 -1
- data/resources/locales/tr/units.yml +108 -107
- data/resources/locales/uk/calendars.yml +131 -130
- data/resources/locales/uk/languages.yml +520 -519
- data/resources/locales/uk/numbers.yml +46 -45
- data/resources/locales/uk/plurals.yml +5 -2
- data/resources/locales/uk/units.yml +192 -191
- data/resources/locales/ur/calendars.yml +111 -110
- data/resources/locales/ur/languages.yml +164 -163
- data/resources/locales/ur/numbers.yml +32 -31
- data/resources/locales/ur/plurals.yml +3 -1
- data/resources/locales/ur/units.yml +136 -135
- data/resources/locales/zh-Hant/calendars.yml +116 -115
- data/resources/locales/zh-Hant/languages.yml +510 -509
- data/resources/locales/zh-Hant/numbers.yml +35 -34
- data/resources/locales/zh-Hant/plurals.yml +3 -2
- data/resources/locales/zh-Hant/units.yml +108 -107
- data/resources/locales/zh/calendars.yml +138 -137
- data/resources/locales/zh/languages.yml +506 -505
- data/resources/locales/zh/numbers.yml +35 -34
- data/resources/locales/zh/plurals.yml +3 -1
- data/resources/locales/zh/units.yml +80 -79
- data/resources/shared/currencies.yml +448 -451
- data/resources/shared/phone_codes.yml +241 -0
- data/resources/shared/postal_codes.yml +160 -0
- data/resources/unicode_data/blocks.yml +221 -221
- data/resources/unicode_data/blocks/aegean_numbers.yml +913 -0
- data/resources/unicode_data/blocks/alchemical_symbols.yml +1857 -0
- data/resources/unicode_data/blocks/alphabetic_presentation_forms.yml +929 -0
- data/resources/unicode_data/blocks/ancient_greek_musical_notation.yml +1121 -0
- data/resources/unicode_data/blocks/ancient_greek_numbers.yml +1201 -0
- data/resources/unicode_data/blocks/ancient_symbols.yml +193 -0
- data/resources/unicode_data/blocks/arabic.yml +4049 -0
- data/resources/unicode_data/blocks/arabic_extended_a.yml +625 -0
- data/resources/unicode_data/blocks/arabic_mathematical_alphabetic_symbols.yml +2289 -0
- data/resources/unicode_data/{arabic_presentation_forms_a.yml → blocks/arabic_presentation_forms_a.yml} +7369 -7368
- data/resources/unicode_data/{arabic_presentation_forms_b.yml → blocks/arabic_presentation_forms_b.yml} +1414 -1414
- data/resources/unicode_data/blocks/arabic_supplement.yml +769 -0
- data/resources/unicode_data/blocks/armenian.yml +1393 -0
- data/resources/unicode_data/blocks/arrows.yml +1793 -0
- data/resources/unicode_data/blocks/avestan.yml +977 -0
- data/resources/unicode_data/blocks/balinese.yml +1937 -0
- data/resources/unicode_data/blocks/bamum.yml +1409 -0
- data/resources/unicode_data/blocks/bamum_supplement.yml +9105 -0
- data/resources/unicode_data/blocks/basic_latin.yml +2049 -0
- data/resources/unicode_data/blocks/batak.yml +897 -0
- data/resources/unicode_data/blocks/bengali.yml +1473 -0
- data/resources/unicode_data/blocks/block_elements.yml +513 -0
- data/resources/unicode_data/blocks/bopomofo.yml +657 -0
- data/resources/unicode_data/blocks/bopomofo_extended.yml +433 -0
- data/resources/unicode_data/{box_drawing.yml → blocks/box_drawing.yml} +1537 -1537
- data/resources/unicode_data/blocks/brahmi.yml +1729 -0
- data/resources/unicode_data/blocks/braille_patterns.yml +4097 -0
- data/resources/unicode_data/blocks/buginese.yml +481 -0
- data/resources/unicode_data/blocks/buhid.yml +321 -0
- data/resources/unicode_data/blocks/byzantine_musical_symbols.yml +3937 -0
- data/resources/unicode_data/blocks/carian.yml +785 -0
- data/resources/unicode_data/blocks/chakma.yml +1073 -0
- data/resources/unicode_data/blocks/cham.yml +1329 -0
- data/resources/unicode_data/blocks/cherokee.yml +1361 -0
- data/resources/unicode_data/{cjk_compatibility.yml → blocks/cjk_compatibility.yml} +2706 -2706
- data/resources/unicode_data/{cjk_compatibility_forms.yml → blocks/cjk_compatibility_forms.yml} +363 -363
- data/resources/unicode_data/blocks/cjk_compatibility_ideographs.yml +7553 -0
- data/resources/unicode_data/blocks/cjk_compatibility_ideographs_supplement.yml +8673 -0
- data/resources/unicode_data/blocks/cjk_radicals_supplement.yml +1841 -0
- data/resources/unicode_data/blocks/cjk_strokes.yml +577 -0
- data/resources/unicode_data/blocks/cjk_symbols_and_punctuation.yml +1025 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs.yml +33 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_a.yml +33 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_b.yml +33 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_c.yml +33 -0
- data/resources/unicode_data/blocks/cjk_unified_ideographs_extension_d.yml +33 -0
- data/resources/unicode_data/blocks/combining_diacritical_marks.yml +1793 -0
- data/resources/unicode_data/{combining_diacritical_marks_for_symbols.yml → blocks/combining_diacritical_marks_for_symbols.yml} +409 -409
- data/resources/unicode_data/blocks/combining_diacritical_marks_supplement.yml +689 -0
- data/resources/unicode_data/blocks/combining_half_marks.yml +113 -0
- data/resources/unicode_data/blocks/common_indic_number_forms.yml +161 -0
- data/resources/unicode_data/blocks/control_pictures.yml +625 -0
- data/resources/unicode_data/blocks/coptic.yml +1969 -0
- data/resources/unicode_data/blocks/counting_rod_numerals.yml +289 -0
- data/resources/unicode_data/blocks/cuneiform.yml +14065 -0
- data/resources/unicode_data/blocks/cuneiform_numbers_and_punctuation.yml +1649 -0
- data/resources/unicode_data/blocks/currency_symbols.yml +417 -0
- data/resources/unicode_data/blocks/cypriot_syllabary.yml +881 -0
- data/resources/unicode_data/{cyrillic.yml → blocks/cyrillic.yml} +2765 -2765
- data/resources/unicode_data/blocks/cyrillic_extended_a.yml +513 -0
- data/resources/unicode_data/blocks/cyrillic_extended_b.yml +1425 -0
- data/resources/unicode_data/blocks/cyrillic_supplement.yml +641 -0
- data/resources/unicode_data/blocks/deseret.yml +1281 -0
- data/resources/unicode_data/blocks/devanagari.yml +2033 -0
- data/resources/unicode_data/blocks/devanagari_extended.yml +449 -0
- data/resources/unicode_data/blocks/dingbats.yml +3057 -0
- data/resources/unicode_data/blocks/domino_tiles.yml +1601 -0
- data/resources/unicode_data/blocks/egyptian_hieroglyphs.yml +17137 -0
- data/resources/unicode_data/blocks/emoticons.yml +1217 -0
- data/resources/unicode_data/blocks/enclosed_alphanumeric_supplement.yml +2737 -0
- data/resources/unicode_data/blocks/enclosed_alphanumerics.yml +2561 -0
- data/resources/unicode_data/{enclosed_cjk_letters_and_months.yml → blocks/enclosed_cjk_letters_and_months.yml} +3067 -3067
- data/resources/unicode_data/{enclosed_ideographic_supplement.yml → blocks/enclosed_ideographic_supplement.yml} +685 -685
- data/resources/unicode_data/blocks/ethiopic.yml +5729 -0
- data/resources/unicode_data/blocks/ethiopic_extended.yml +1265 -0
- data/resources/unicode_data/blocks/ethiopic_extended_a.yml +513 -0
- data/resources/unicode_data/blocks/ethiopic_supplement.yml +417 -0
- data/resources/unicode_data/blocks/general_punctuation.yml +1713 -0
- data/resources/unicode_data/blocks/geometric_shapes.yml +1537 -0
- data/resources/unicode_data/blocks/georgian.yml +1409 -0
- data/resources/unicode_data/blocks/georgian_supplement.yml +641 -0
- data/resources/unicode_data/blocks/glagolitic.yml +1505 -0
- data/resources/unicode_data/blocks/gothic.yml +433 -0
- data/resources/unicode_data/{greek_and_coptic.yml → blocks/greek_and_coptic.yml} +1360 -1360
- data/resources/unicode_data/{greek_extended.yml → blocks/greek_extended.yml} +2330 -2330
- data/resources/unicode_data/blocks/gujarati.yml +1345 -0
- data/resources/unicode_data/blocks/gurmukhi.yml +1265 -0
- data/resources/unicode_data/{halfwidth_and_fullwidth_forms.yml → blocks/halfwidth_and_fullwidth_forms.yml} +2517 -2517
- data/resources/unicode_data/{hangul_compatibility_jamo.yml → blocks/hangul_compatibility_jamo.yml} +993 -993
- data/resources/unicode_data/blocks/hangul_jamo.yml +4097 -0
- data/resources/unicode_data/blocks/hangul_jamo_extended_a.yml +465 -0
- data/resources/unicode_data/blocks/hangul_jamo_extended_b.yml +1153 -0
- data/resources/unicode_data/blocks/hangul_syllables.yml +33 -0
- data/resources/unicode_data/blocks/hanunoo.yml +369 -0
- data/resources/unicode_data/blocks/hebrew.yml +1393 -0
- data/resources/unicode_data/blocks/high_private_use_surrogates.yml +33 -0
- data/resources/unicode_data/blocks/high_surrogates.yml +33 -0
- data/resources/unicode_data/blocks/hiragana.yml +1489 -0
- data/resources/unicode_data/blocks/ideographic_description_characters.yml +193 -0
- data/resources/unicode_data/blocks/imperial_aramaic.yml +497 -0
- data/resources/unicode_data/blocks/inscriptional_pahlavi.yml +433 -0
- data/resources/unicode_data/blocks/inscriptional_parthian.yml +481 -0
- data/resources/unicode_data/{ipa_extensions.yml → blocks/ipa_extensions.yml} +1050 -1050
- data/resources/unicode_data/blocks/javanese.yml +1457 -0
- data/resources/unicode_data/blocks/kaithi.yml +1057 -0
- data/resources/unicode_data/blocks/kana_supplement.yml +33 -0
- data/resources/unicode_data/{kanbun.yml → blocks/kanbun.yml} +167 -167
- data/resources/unicode_data/blocks/kangxi_radicals.yml +3425 -0
- data/resources/unicode_data/blocks/kannada.yml +1377 -0
- data/resources/unicode_data/blocks/katakana.yml +1537 -0
- data/resources/unicode_data/blocks/katakana_phonetic_extensions.yml +257 -0
- data/resources/unicode_data/blocks/kayah_li.yml +769 -0
- data/resources/unicode_data/blocks/kharoshthi.yml +1041 -0
- data/resources/unicode_data/blocks/khmer.yml +1825 -0
- data/resources/unicode_data/blocks/khmer_symbols.yml +513 -0
- data/resources/unicode_data/blocks/lao.yml +1073 -0
- data/resources/unicode_data/{latin_1_supplement.yml → blocks/latin_1_supplement.yml} +1319 -1319
- data/resources/unicode_data/{latin_extended_a.yml → blocks/latin_extended_a.yml} +1210 -1210
- data/resources/unicode_data/{latin_extended_additional.yml → blocks/latin_extended_additional.yml} +2460 -2460
- data/resources/unicode_data/{latin_extended_b.yml → blocks/latin_extended_b.yml} +2096 -2096
- data/resources/unicode_data/blocks/latin_extended_c.yml +513 -0
- data/resources/unicode_data/blocks/latin_extended_d.yml +2145 -0
- data/resources/unicode_data/blocks/lepcha.yml +1185 -0
- data/resources/unicode_data/blocks/letterlike_symbols.yml +1281 -0
- data/resources/unicode_data/blocks/limbu.yml +1057 -0
- data/resources/unicode_data/blocks/linear_b_ideograms.yml +1969 -0
- data/resources/unicode_data/blocks/linear_b_syllabary.yml +1409 -0
- data/resources/unicode_data/blocks/lisu.yml +769 -0
- data/resources/unicode_data/blocks/low_surrogates.yml +33 -0
- data/resources/unicode_data/blocks/lycian.yml +465 -0
- data/resources/unicode_data/blocks/lydian.yml +433 -0
- data/resources/unicode_data/blocks/mahjong_tiles.yml +705 -0
- data/resources/unicode_data/blocks/malayalam.yml +1569 -0
- data/resources/unicode_data/blocks/mandaic.yml +465 -0
- data/resources/unicode_data/{mathematical_alphanumeric_symbols.yml → blocks/mathematical_alphanumeric_symbols.yml} +11953 -11953
- data/resources/unicode_data/blocks/mathematical_operators.yml +4097 -0
- data/resources/unicode_data/blocks/meetei_mayek.yml +897 -0
- data/resources/unicode_data/blocks/meetei_mayek_extensions.yml +369 -0
- data/resources/unicode_data/blocks/meroitic_cursive.yml +417 -0
- data/resources/unicode_data/blocks/meroitic_hieroglyphs.yml +513 -0
- data/resources/unicode_data/blocks/miao.yml +2129 -0
- data/resources/unicode_data/blocks/miscellaneous_mathematical_symbols_a.yml +769 -0
- data/resources/unicode_data/blocks/miscellaneous_mathematical_symbols_b.yml +2049 -0
- data/resources/unicode_data/blocks/miscellaneous_symbols.yml +4097 -0
- data/resources/unicode_data/blocks/miscellaneous_symbols_and_arrows.yml +1393 -0
- data/resources/unicode_data/blocks/miscellaneous_symbols_and_pictographs.yml +8529 -0
- data/resources/unicode_data/blocks/miscellaneous_technical.yml +3905 -0
- data/resources/unicode_data/blocks/modifier_tone_letters.yml +513 -0
- data/resources/unicode_data/blocks/mongolian.yml +2497 -0
- data/resources/unicode_data/blocks/musical_symbols.yml +3521 -0
- data/resources/unicode_data/blocks/myanmar.yml +2561 -0
- data/resources/unicode_data/blocks/myanmar_extended_a.yml +449 -0
- data/resources/unicode_data/blocks/new_tai_lue.yml +1329 -0
- data/resources/unicode_data/blocks/nko.yml +945 -0
- data/resources/unicode_data/blocks/number_forms.yml +929 -0
- data/resources/unicode_data/blocks/ogham.yml +465 -0
- data/resources/unicode_data/blocks/ol_chiki.yml +769 -0
- data/resources/unicode_data/blocks/old_italic.yml +561 -0
- data/resources/unicode_data/blocks/old_persian.yml +801 -0
- data/resources/unicode_data/blocks/old_south_arabian.yml +513 -0
- data/resources/unicode_data/blocks/old_turkic.yml +1169 -0
- data/resources/unicode_data/blocks/optical_character_recognition.yml +177 -0
- data/resources/unicode_data/blocks/oriya.yml +1441 -0
- data/resources/unicode_data/blocks/osmanya.yml +641 -0
- data/resources/unicode_data/blocks/phags_pa.yml +897 -0
- data/resources/unicode_data/blocks/phaistos_disc.yml +737 -0
- data/resources/unicode_data/blocks/phoenician.yml +465 -0
- data/resources/unicode_data/blocks/phonetic_extensions.yml +2049 -0
- data/resources/unicode_data/blocks/phonetic_extensions_supplement.yml +1025 -0
- data/resources/unicode_data/blocks/playing_cards.yml +945 -0
- data/resources/unicode_data/blocks/private_use_area.yml +33 -0
- data/resources/unicode_data/blocks/rejang.yml +593 -0
- data/resources/unicode_data/blocks/rumi_numeral_symbols.yml +497 -0
- data/resources/unicode_data/blocks/runic.yml +1297 -0
- data/resources/unicode_data/blocks/samaritan.yml +977 -0
- data/resources/unicode_data/blocks/saurashtra.yml +1297 -0
- data/resources/unicode_data/blocks/sharada.yml +1329 -0
- data/resources/unicode_data/blocks/shavian.yml +769 -0
- data/resources/unicode_data/blocks/sinhala.yml +1281 -0
- data/resources/unicode_data/blocks/small_form_variants.yml +417 -0
- data/resources/unicode_data/blocks/sora_sompeng.yml +561 -0
- data/resources/unicode_data/blocks/spacing_modifier_letters.yml +1281 -0
- data/resources/unicode_data/blocks/specials.yml +81 -0
- data/resources/unicode_data/blocks/sundanese.yml +1025 -0
- data/resources/unicode_data/blocks/sundanese_supplement.yml +129 -0
- data/resources/unicode_data/blocks/superscripts_and_subscripts.yml +673 -0
- data/resources/unicode_data/blocks/supplemental_arrows_a.yml +257 -0
- data/resources/unicode_data/blocks/supplemental_arrows_b.yml +2049 -0
- data/resources/unicode_data/blocks/supplemental_mathematical_operators.yml +4097 -0
- data/resources/unicode_data/blocks/supplemental_punctuation.yml +961 -0
- data/resources/unicode_data/blocks/supplementary_private_use_area_a.yml +33 -0
- data/resources/unicode_data/blocks/supplementary_private_use_area_b.yml +33 -0
- data/resources/unicode_data/blocks/syloti_nagri.yml +705 -0
- data/resources/unicode_data/blocks/syriac.yml +1233 -0
- data/resources/unicode_data/blocks/tagalog.yml +321 -0
- data/resources/unicode_data/blocks/tagbanwa.yml +289 -0
- data/resources/unicode_data/blocks/tags.yml +1553 -0
- data/resources/unicode_data/blocks/tai_le.yml +561 -0
- data/resources/unicode_data/blocks/tai_tham.yml +2033 -0
- data/resources/unicode_data/blocks/tai_viet.yml +1153 -0
- data/resources/unicode_data/blocks/tai_xuan_jing_symbols.yml +1393 -0
- data/resources/unicode_data/blocks/takri.yml +1057 -0
- data/resources/unicode_data/blocks/tamil.yml +1153 -0
- data/resources/unicode_data/blocks/telugu.yml +1489 -0
- data/resources/unicode_data/blocks/thaana.yml +801 -0
- data/resources/unicode_data/blocks/thai.yml +1393 -0
- data/resources/unicode_data/blocks/tibetan.yml +3377 -0
- data/resources/unicode_data/blocks/tifinagh.yml +945 -0
- data/resources/unicode_data/blocks/transport_and_map_symbols.yml +1121 -0
- data/resources/unicode_data/blocks/ugaritic.yml +497 -0
- data/resources/unicode_data/blocks/unified_canadian_aboriginal_syllabics.yml +10241 -0
- data/resources/unicode_data/blocks/unified_canadian_aboriginal_syllabics_extended.yml +1121 -0
- data/resources/unicode_data/blocks/vai.yml +4801 -0
- data/resources/unicode_data/blocks/variation_selectors.yml +257 -0
- data/resources/unicode_data/blocks/variation_selectors_supplement.yml +3841 -0
- data/resources/unicode_data/blocks/vedic_extensions.yml +625 -0
- data/resources/unicode_data/{vertical_forms.yml → blocks/vertical_forms.yml} +121 -121
- data/resources/unicode_data/blocks/yi_radicals.yml +881 -0
- data/resources/unicode_data/blocks/yi_syllables.yml +18641 -0
- data/resources/unicode_data/blocks/yijing_hexagram_symbols.yml +1025 -0
- data/resources/unicode_data/canonical_compositions.yml +4925 -0
- data/resources/unicode_data/composition_exclusions.yml +78 -74
- data/resources/unicode_data/hangul_blocks.yml +9 -9
- data/spec/collation/collation_spec.rb +6 -6
- data/spec/collation/collator_spec.rb +18 -19
- data/spec/collation/trie_builder_spec.rb +6 -9
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/string_spec.rb +1 -1
- data/spec/formatters/numbers/currency_formatter_spec.rb +5 -0
- data/spec/formatters/numbers/decimal_formatter_spec.rb +4 -0
- data/spec/formatters/numbers/number_formatter_spec.rb +4 -4
- data/spec/formatters/numbers/percent_formatter_spec.rb +8 -0
- data/spec/normalization/base_spec.rb +2 -2
- data/spec/normalization/normalization_spec.rb +7 -3
- data/spec/readme_spec.rb +9 -9
- data/spec/resources/loader_spec.rb +4 -4
- data/spec/shared/code_point_spec.rb +102 -62
- data/spec/shared/currencies_spec.rb +17 -19
- data/spec/shared/phone_codes_spec.rb +49 -0
- data/spec/shared/postal_codes_spec.rb +68 -0
- data/spec/utils/code_points_spec.rb +6 -6
- metadata +264 -224
- data/resources/unicode_data/aegean_numbers.yml +0 -913
- data/resources/unicode_data/alchemical_symbols.yml +0 -1857
- data/resources/unicode_data/alphabetic_presentation_forms.yml +0 -929
- data/resources/unicode_data/ancient_greek_musical_notation.yml +0 -1121
- data/resources/unicode_data/ancient_greek_numbers.yml +0 -1201
- data/resources/unicode_data/ancient_symbols.yml +0 -193
- data/resources/unicode_data/arabic.yml +0 -4049
- data/resources/unicode_data/arabic_extended_a.yml +0 -625
- data/resources/unicode_data/arabic_mathematical_alphabetic_symbols.yml +0 -2289
- data/resources/unicode_data/arabic_supplement.yml +0 -769
- data/resources/unicode_data/armenian.yml +0 -1393
- data/resources/unicode_data/arrows.yml +0 -1793
- data/resources/unicode_data/avestan.yml +0 -977
- data/resources/unicode_data/balinese.yml +0 -1937
- data/resources/unicode_data/bamum.yml +0 -1409
- data/resources/unicode_data/bamum_supplement.yml +0 -9105
- data/resources/unicode_data/basic_latin.yml +0 -2049
- data/resources/unicode_data/batak.yml +0 -897
- data/resources/unicode_data/bengali.yml +0 -1473
- data/resources/unicode_data/block_elements.yml +0 -513
- data/resources/unicode_data/bopomofo.yml +0 -657
- data/resources/unicode_data/bopomofo_extended.yml +0 -433
- data/resources/unicode_data/brahmi.yml +0 -1729
- data/resources/unicode_data/braille_patterns.yml +0 -4097
- data/resources/unicode_data/buginese.yml +0 -481
- data/resources/unicode_data/buhid.yml +0 -321
- data/resources/unicode_data/byzantine_musical_symbols.yml +0 -3937
- data/resources/unicode_data/carian.yml +0 -785
- data/resources/unicode_data/chakma.yml +0 -1073
- data/resources/unicode_data/cham.yml +0 -1329
- data/resources/unicode_data/cherokee.yml +0 -1361
- data/resources/unicode_data/cjk_compatibility_ideographs.yml +0 -7553
- data/resources/unicode_data/cjk_compatibility_ideographs_supplement.yml +0 -8673
- data/resources/unicode_data/cjk_radicals_supplement.yml +0 -1841
- data/resources/unicode_data/cjk_strokes.yml +0 -577
- data/resources/unicode_data/cjk_symbols_and_punctuation.yml +0 -1025
- data/resources/unicode_data/cjk_unified_ideographs.yml +0 -33
- data/resources/unicode_data/cjk_unified_ideographs_extension_a.yml +0 -33
- data/resources/unicode_data/cjk_unified_ideographs_extension_b.yml +0 -33
- data/resources/unicode_data/cjk_unified_ideographs_extension_c.yml +0 -33
- data/resources/unicode_data/cjk_unified_ideographs_extension_d.yml +0 -33
- data/resources/unicode_data/combining_diacritical_marks.yml +0 -1793
- data/resources/unicode_data/combining_diacritical_marks_supplement.yml +0 -689
- data/resources/unicode_data/combining_half_marks.yml +0 -113
- data/resources/unicode_data/common_indic_number_forms.yml +0 -161
- data/resources/unicode_data/control_pictures.yml +0 -625
- data/resources/unicode_data/coptic.yml +0 -1969
- data/resources/unicode_data/counting_rod_numerals.yml +0 -289
- data/resources/unicode_data/cuneiform.yml +0 -14065
- data/resources/unicode_data/cuneiform_numbers_and_punctuation.yml +0 -1649
- data/resources/unicode_data/currency_symbols.yml +0 -417
- data/resources/unicode_data/cypriot_syllabary.yml +0 -881
- data/resources/unicode_data/cyrillic_extended_a.yml +0 -513
- data/resources/unicode_data/cyrillic_extended_b.yml +0 -1425
- data/resources/unicode_data/cyrillic_supplement.yml +0 -641
- data/resources/unicode_data/decomposition_map.yml +0 -4565
- data/resources/unicode_data/deseret.yml +0 -1281
- data/resources/unicode_data/devanagari.yml +0 -2033
- data/resources/unicode_data/devanagari_extended.yml +0 -449
- data/resources/unicode_data/dingbats.yml +0 -3057
- data/resources/unicode_data/domino_tiles.yml +0 -1601
- data/resources/unicode_data/egyptian_hieroglyphs.yml +0 -17137
- data/resources/unicode_data/emoticons.yml +0 -1217
- data/resources/unicode_data/enclosed_alphanumeric_supplement.yml +0 -2737
- data/resources/unicode_data/enclosed_alphanumerics.yml +0 -2561
- data/resources/unicode_data/ethiopic.yml +0 -5729
- data/resources/unicode_data/ethiopic_extended.yml +0 -1265
- data/resources/unicode_data/ethiopic_extended_a.yml +0 -513
- data/resources/unicode_data/ethiopic_supplement.yml +0 -417
- data/resources/unicode_data/general_punctuation.yml +0 -1713
- data/resources/unicode_data/geometric_shapes.yml +0 -1537
- data/resources/unicode_data/georgian.yml +0 -1409
- data/resources/unicode_data/georgian_supplement.yml +0 -641
- data/resources/unicode_data/glagolitic.yml +0 -1505
- data/resources/unicode_data/gothic.yml +0 -433
- data/resources/unicode_data/gujarati.yml +0 -1345
- data/resources/unicode_data/gurmukhi.yml +0 -1265
- data/resources/unicode_data/hangul_jamo.yml +0 -4097
- data/resources/unicode_data/hangul_jamo_extended_a.yml +0 -465
- data/resources/unicode_data/hangul_jamo_extended_b.yml +0 -1153
- data/resources/unicode_data/hangul_syllables.yml +0 -33
- data/resources/unicode_data/hanunoo.yml +0 -369
- data/resources/unicode_data/hebrew.yml +0 -1393
- data/resources/unicode_data/high_private_use_surrogates.yml +0 -33
- data/resources/unicode_data/high_surrogates.yml +0 -33
- data/resources/unicode_data/hiragana.yml +0 -1489
- data/resources/unicode_data/ideographic_description_characters.yml +0 -193
- data/resources/unicode_data/imperial_aramaic.yml +0 -497
- data/resources/unicode_data/inscriptional_pahlavi.yml +0 -433
- data/resources/unicode_data/inscriptional_parthian.yml +0 -481
- data/resources/unicode_data/javanese.yml +0 -1457
- data/resources/unicode_data/kaithi.yml +0 -1057
- data/resources/unicode_data/kana_supplement.yml +0 -33
- data/resources/unicode_data/kangxi_radicals.yml +0 -3425
- data/resources/unicode_data/kannada.yml +0 -1377
- data/resources/unicode_data/katakana.yml +0 -1537
- data/resources/unicode_data/katakana_phonetic_extensions.yml +0 -257
- data/resources/unicode_data/kayah_li.yml +0 -769
- data/resources/unicode_data/kharoshthi.yml +0 -1041
- data/resources/unicode_data/khmer.yml +0 -1825
- data/resources/unicode_data/khmer_symbols.yml +0 -513
- data/resources/unicode_data/lao.yml +0 -1073
- data/resources/unicode_data/latin_extended_c.yml +0 -513
- data/resources/unicode_data/latin_extended_d.yml +0 -2145
- data/resources/unicode_data/lepcha.yml +0 -1185
- data/resources/unicode_data/letterlike_symbols.yml +0 -1281
- data/resources/unicode_data/limbu.yml +0 -1057
- data/resources/unicode_data/linear_b_ideograms.yml +0 -1969
- data/resources/unicode_data/linear_b_syllabary.yml +0 -1409
- data/resources/unicode_data/lisu.yml +0 -769
- data/resources/unicode_data/low_surrogates.yml +0 -33
- data/resources/unicode_data/lycian.yml +0 -465
- data/resources/unicode_data/lydian.yml +0 -433
- data/resources/unicode_data/mahjong_tiles.yml +0 -705
- data/resources/unicode_data/malayalam.yml +0 -1569
- data/resources/unicode_data/mandaic.yml +0 -465
- data/resources/unicode_data/mathematical_operators.yml +0 -4097
- data/resources/unicode_data/meetei_mayek.yml +0 -897
- data/resources/unicode_data/meetei_mayek_extensions.yml +0 -369
- data/resources/unicode_data/meroitic_cursive.yml +0 -417
- data/resources/unicode_data/meroitic_hieroglyphs.yml +0 -513
- data/resources/unicode_data/miao.yml +0 -2129
- data/resources/unicode_data/miscellaneous_mathematical_symbols_a.yml +0 -769
- data/resources/unicode_data/miscellaneous_mathematical_symbols_b.yml +0 -2049
- data/resources/unicode_data/miscellaneous_symbols.yml +0 -4097
- data/resources/unicode_data/miscellaneous_symbols_and_arrows.yml +0 -1393
- data/resources/unicode_data/miscellaneous_symbols_and_pictographs.yml +0 -8529
- data/resources/unicode_data/miscellaneous_technical.yml +0 -3905
- data/resources/unicode_data/modifier_tone_letters.yml +0 -513
- data/resources/unicode_data/mongolian.yml +0 -2497
- data/resources/unicode_data/musical_symbols.yml +0 -3521
- data/resources/unicode_data/myanmar.yml +0 -2561
- data/resources/unicode_data/myanmar_extended_a.yml +0 -449
- data/resources/unicode_data/new_tai_lue.yml +0 -1329
- data/resources/unicode_data/nko.yml +0 -945
- data/resources/unicode_data/number_forms.yml +0 -929
- data/resources/unicode_data/ogham.yml +0 -465
- data/resources/unicode_data/ol_chiki.yml +0 -769
- data/resources/unicode_data/old_italic.yml +0 -561
- data/resources/unicode_data/old_persian.yml +0 -801
- data/resources/unicode_data/old_south_arabian.yml +0 -513
- data/resources/unicode_data/old_turkic.yml +0 -1169
- data/resources/unicode_data/optical_character_recognition.yml +0 -177
- data/resources/unicode_data/oriya.yml +0 -1441
- data/resources/unicode_data/osmanya.yml +0 -641
- data/resources/unicode_data/phags_pa.yml +0 -897
- data/resources/unicode_data/phaistos_disc.yml +0 -737
- data/resources/unicode_data/phoenician.yml +0 -465
- data/resources/unicode_data/phonetic_extensions.yml +0 -2049
- data/resources/unicode_data/phonetic_extensions_supplement.yml +0 -1025
- data/resources/unicode_data/playing_cards.yml +0 -945
- data/resources/unicode_data/private_use_area.yml +0 -33
- data/resources/unicode_data/rejang.yml +0 -593
- data/resources/unicode_data/rumi_numeral_symbols.yml +0 -497
- data/resources/unicode_data/runic.yml +0 -1297
- data/resources/unicode_data/samaritan.yml +0 -977
- data/resources/unicode_data/saurashtra.yml +0 -1297
- data/resources/unicode_data/sharada.yml +0 -1329
- data/resources/unicode_data/shavian.yml +0 -769
- data/resources/unicode_data/sinhala.yml +0 -1281
- data/resources/unicode_data/small_form_variants.yml +0 -417
- data/resources/unicode_data/sora_sompeng.yml +0 -561
- data/resources/unicode_data/spacing_modifier_letters.yml +0 -1281
- data/resources/unicode_data/specials.yml +0 -81
- data/resources/unicode_data/sundanese.yml +0 -1025
- data/resources/unicode_data/sundanese_supplement.yml +0 -129
- data/resources/unicode_data/superscripts_and_subscripts.yml +0 -673
- data/resources/unicode_data/supplemental_arrows_a.yml +0 -257
- data/resources/unicode_data/supplemental_arrows_b.yml +0 -2049
- data/resources/unicode_data/supplemental_mathematical_operators.yml +0 -4097
- data/resources/unicode_data/supplemental_punctuation.yml +0 -961
- data/resources/unicode_data/supplementary_private_use_area_a.yml +0 -33
- data/resources/unicode_data/supplementary_private_use_area_b.yml +0 -33
- data/resources/unicode_data/syloti_nagri.yml +0 -705
- data/resources/unicode_data/syriac.yml +0 -1233
- data/resources/unicode_data/tagalog.yml +0 -321
- data/resources/unicode_data/tagbanwa.yml +0 -289
- data/resources/unicode_data/tags.yml +0 -1553
- data/resources/unicode_data/tai_le.yml +0 -561
- data/resources/unicode_data/tai_tham.yml +0 -2033
- data/resources/unicode_data/tai_viet.yml +0 -1153
- data/resources/unicode_data/tai_xuan_jing_symbols.yml +0 -1393
- data/resources/unicode_data/takri.yml +0 -1057
- data/resources/unicode_data/tamil.yml +0 -1153
- data/resources/unicode_data/telugu.yml +0 -1489
- data/resources/unicode_data/thaana.yml +0 -801
- data/resources/unicode_data/thai.yml +0 -1393
- data/resources/unicode_data/tibetan.yml +0 -3377
- data/resources/unicode_data/tifinagh.yml +0 -945
- data/resources/unicode_data/transport_and_map_symbols.yml +0 -1121
- data/resources/unicode_data/ugaritic.yml +0 -497
- data/resources/unicode_data/unified_canadian_aboriginal_syllabics.yml +0 -10241
- data/resources/unicode_data/unified_canadian_aboriginal_syllabics_extended.yml +0 -1121
- data/resources/unicode_data/vai.yml +0 -4801
- data/resources/unicode_data/variation_selectors.yml +0 -257
- data/resources/unicode_data/variation_selectors_supplement.yml +0 -3841
- data/resources/unicode_data/vedic_extensions.yml +0 -625
- data/resources/unicode_data/yi_radicals.yml +0 -881
- data/resources/unicode_data/yi_syllables.yml +0 -18641
- data/resources/unicode_data/yijing_hexagram_symbols.yml +0 -1025
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source :rubygems
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
@@ -11,6 +11,8 @@ group :development do
|
|
11
11
|
gem 'nokogiri'
|
12
12
|
gem 'ruby_parser', '~> 2.3.1'
|
13
13
|
|
14
|
+
gem 'ruby-cldr', :github => 'KL-7/ruby-cldr', :branch => 'for-twitter-cldr'
|
15
|
+
|
14
16
|
platform :ruby do
|
15
17
|
gem 'therubyracer', '~> 0.9.10'
|
16
18
|
gem 'uglifier', '~> 1.2.4'
|
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 1.7.0
|
2
|
+
|
3
|
+
* Wrote rake tasks to update CLDR and ICU resources.
|
4
|
+
* All resource files now written with symbolized keys so the gem doesn't have to recursively symbolize them on load.
|
5
|
+
* Unicode code points now represented internally with integers instead of strings for better performance.
|
6
|
+
* Added number formatting in JavaScript.
|
7
|
+
* Added telephone code lookup functionality (per country) and postal code validation.
|
8
|
+
|
1
9
|
=== 1.6.2
|
2
10
|
|
3
11
|
* Collation tries now loaded from marshal dumps, collation running time improved by ~80%.
|
data/README.md
CHANGED
@@ -271,6 +271,61 @@ TwitterCldr::Shared::Languages.translate_language("chino tradicional", :es, :en)
|
|
271
271
|
TwitterCldr::Shared::Languages.translate_language("Traditional Chinese", :en, :es) # "chino tradicional"
|
272
272
|
```
|
273
273
|
|
274
|
+
### Postal Codes
|
275
|
+
|
276
|
+
The CLDR contains postal code validation regexes for a number of countries.
|
277
|
+
|
278
|
+
```ruby
|
279
|
+
# United States
|
280
|
+
TwitterCldr::Shared::PostalCodes.valid?(:us, "94103") # true
|
281
|
+
TwitterCldr::Shared::PostalCodes.valid?(:us, "9410") # false
|
282
|
+
|
283
|
+
# England (Great Britain)
|
284
|
+
TwitterCldr::Shared::PostalCodes.valid?(:gb, "BS98 1TL") # true
|
285
|
+
|
286
|
+
# Sweden
|
287
|
+
TwitterCldr::Shared::PostalCodes.valid?(:se, "280 12") # true
|
288
|
+
|
289
|
+
# Canada
|
290
|
+
TwitterCldr::Shared::PostalCodes.valid?(:ca, "V3H 1Z7") # true
|
291
|
+
```
|
292
|
+
|
293
|
+
Get a list of supported territories by using the `#territories` method:
|
294
|
+
|
295
|
+
```ruby
|
296
|
+
TwitterCldr::Shared::PostalCodes.territories # [:ve, :iq, :cx, :cv, ...]
|
297
|
+
```
|
298
|
+
|
299
|
+
Just want the regex? No problem:
|
300
|
+
|
301
|
+
```ruby
|
302
|
+
TwitterCldr::Shared::PostalCodes.regex_for_territory(:us) # /\d{5}([ \-]\d{4})?/
|
303
|
+
```
|
304
|
+
|
305
|
+
### Phone Codes
|
306
|
+
|
307
|
+
Look up phone codes by territory:
|
308
|
+
|
309
|
+
```ruby
|
310
|
+
# United States
|
311
|
+
TwitterCldr::Shared::PhoneCodes.code_for_territory(:us) # "1"
|
312
|
+
|
313
|
+
# Perú
|
314
|
+
TwitterCldr::Shared::PhoneCodes.code_for_territory(:pe) # "51"
|
315
|
+
|
316
|
+
# Egypt
|
317
|
+
TwitterCldr::Shared::PhoneCodes.code_for_territory(:eg) # "20"
|
318
|
+
|
319
|
+
# Denmark
|
320
|
+
TwitterCldr::Shared::PhoneCodes.code_for_territory(:dk) # "45"
|
321
|
+
```
|
322
|
+
|
323
|
+
Get a list of supported territories by using the `#territories` method:
|
324
|
+
|
325
|
+
```ruby
|
326
|
+
TwitterCldr::Shared::PhoneCodes.territories # [:zw, :an, :tr, :by, :mh, ...]
|
327
|
+
```
|
328
|
+
|
274
329
|
### Unicode Data
|
275
330
|
|
276
331
|
TwitterCLDR provides ways to retrieve individual code points as well as normalize and decompose Unicode text.
|
@@ -278,7 +333,7 @@ TwitterCLDR provides ways to retrieve individual code points as well as normaliz
|
|
278
333
|
Retrieve data for code points:
|
279
334
|
|
280
335
|
```ruby
|
281
|
-
code_point = TwitterCldr::Shared::CodePoint.
|
336
|
+
code_point = TwitterCldr::Shared::CodePoint.find(0x1F3E9)
|
282
337
|
code_point.name # "LOVE HOTEL"
|
283
338
|
code_point.bidi_mirrored # "N"
|
284
339
|
code_point.category # "So"
|
@@ -288,13 +343,13 @@ code_point.combining_class # "0"
|
|
288
343
|
Convert characters to code points:
|
289
344
|
|
290
345
|
```ruby
|
291
|
-
TwitterCldr::Utils::CodePoints.from_string("¿") # [
|
346
|
+
TwitterCldr::Utils::CodePoints.from_string("¿") # [0xBF]
|
292
347
|
```
|
293
348
|
|
294
349
|
Convert code points to characters:
|
295
350
|
|
296
351
|
```ruby
|
297
|
-
TwitterCldr::Utils::CodePoints.to_string([
|
352
|
+
TwitterCldr::Utils::CodePoints.to_string([0xBF]) # "¿"
|
298
353
|
```
|
299
354
|
|
300
355
|
Normalize/decompose a Unicode string (NFD, NFKD, NFC, and NFKC implementations available). Note that the normalized string will almost always look the same as the original string because most character display systems automatically combine decomposed characters.
|
@@ -306,29 +361,29 @@ TwitterCldr::Normalization::NFD.normalize("français") # "français"
|
|
306
361
|
Normalization is easier to see in hex:
|
307
362
|
|
308
363
|
```ruby
|
309
|
-
# [
|
364
|
+
# [101, 115, 112, 97, 241, 111, 108]
|
310
365
|
TwitterCldr::Utils::CodePoints.from_string("español")
|
311
366
|
|
312
|
-
# [
|
367
|
+
# [101, 115, 112, 97, 110, 771, 111, 108]
|
313
368
|
TwitterCldr::Utils::CodePoints.from_string(TwitterCldr::Normalization::NFD.normalize("español"))
|
314
369
|
```
|
315
370
|
|
316
|
-
Notice in the example above that the letter "ñ" was transformed from `
|
371
|
+
Notice in the example above that the letter "ñ" was transformed from `241` to `110 771`, which represent the "n" and the "˜" respectively.
|
317
372
|
|
318
373
|
A few convenience methods also exist for `String` that make it easy to normalize and get code points for strings:
|
319
374
|
|
320
375
|
```ruby
|
321
|
-
# [
|
376
|
+
# [101, 115, 112, 97, 241, 111, 108]
|
322
377
|
"español".localize.code_points
|
323
378
|
|
324
|
-
# [
|
379
|
+
# [101, 115, 112, 97, 110, 771, 111, 108]
|
325
380
|
"español".localize.normalize.code_points
|
326
381
|
```
|
327
382
|
|
328
383
|
Specify a specific normalization algorithm via the `:using` option. NFD, NFKD, NFC, and NFKC algorithms are all supported (default is NFD):
|
329
384
|
|
330
385
|
```ruby
|
331
|
-
# [
|
386
|
+
# [101, 115, 112, 97, 110, 771, 111, 108]
|
332
387
|
"español".localize.normalize(:using => :NFKD).code_points
|
333
388
|
```
|
334
389
|
|
@@ -362,11 +417,6 @@ collator.get_collation_elements("Älg") # [[39, 5, 143], [0, 157, 5], [61, 5,
|
|
362
417
|
collator.get_sort_key("Älg") # [39, 61, 51, 1, 134, 157, 6, 1, 143, 7]
|
363
418
|
```
|
364
419
|
|
365
|
-
**Note**: The collation algorithm in TwitterCLDR isn't quite complete. Here's what we still have to do:
|
366
|
-
|
367
|
-
1. Backwards accent sorting for French.
|
368
|
-
2. Uppercase-first sorting for languages like Danish.
|
369
|
-
|
370
420
|
**Note**: The TwitterCLDR collator does not currently pass all the collation tests provided by Unicode, but for some strange reasons. See the [summary](https://gist.github.com/f4ee3bd280a2257c5641) of these discrepancies if you're curious.
|
371
421
|
|
372
422
|
## About Twitter-specific Locales
|
data/Rakefile
CHANGED
@@ -42,21 +42,71 @@ end
|
|
42
42
|
|
43
43
|
namespace :resources do
|
44
44
|
namespace :update do
|
45
|
+
|
46
|
+
desc 'Import locales resources'
|
47
|
+
task :locales_resources, :cldr_path do |_, args|
|
48
|
+
TwitterCldr::Resources::LocalesResourcesImporter.new(
|
49
|
+
args[:cldr_path] || '../cldr',
|
50
|
+
'./resources/locales'
|
51
|
+
).import
|
52
|
+
end
|
53
|
+
|
54
|
+
desc 'Import custom locales resources'
|
55
|
+
task :custom_locales_resources do
|
56
|
+
TwitterCldr::Resources::CustomLocalesResourcesImporter.new('./resources/custom/locales').import
|
57
|
+
end
|
58
|
+
|
45
59
|
desc 'Import tailoring resources from CLDR data (should be executed using JRuby 1.7 in 1.9 mode)'
|
46
|
-
task :tailoring do
|
47
|
-
|
48
|
-
|
60
|
+
task :tailoring, :cldr_path, :icu4j_jar_path do |_, args|
|
61
|
+
TwitterCldr::Resources::TailoringImporter.new(
|
62
|
+
args[:cldr_path] || '../cldr',
|
49
63
|
'./resources/collation/tailoring',
|
50
|
-
|
51
|
-
)
|
64
|
+
args[:icu4j_jar_path] ||'../icu4j-49_1.jar'
|
65
|
+
).import(TwitterCldr.supported_locales)
|
66
|
+
end
|
67
|
+
|
68
|
+
desc 'Import Unicode data resources'
|
69
|
+
task :unicode_data, :unicode_data_path do |_, args|
|
70
|
+
TwitterCldr::Resources::UnicodeDataImporter.new(
|
71
|
+
args[:unicode_data_path] || '../unicode-data',
|
72
|
+
'./resources/unicode_data'
|
73
|
+
).import
|
74
|
+
end
|
52
75
|
|
53
|
-
|
76
|
+
desc 'Import composition exclusions resource'
|
77
|
+
task :composition_exclusions, :derived_normalization_props_path do |_, args|
|
78
|
+
TwitterCldr::Resources::CompositionExclusionsImporter.new(
|
79
|
+
args[:derived_normalization_props_path] || '../unicode-data/DerivedNormalizationProps.txt',
|
80
|
+
'./resources/unicode_data'
|
81
|
+
).import
|
54
82
|
end
|
55
83
|
|
56
|
-
desc '
|
84
|
+
desc 'Import postal codes resource'
|
85
|
+
task :postal_codes, :cldr_path do |_, args|
|
86
|
+
TwitterCldr::Resources::PostalCodesImporter.new(
|
87
|
+
args[:cldr_path] || '../cldr',
|
88
|
+
'./resources/shared'
|
89
|
+
).import
|
90
|
+
end
|
91
|
+
|
92
|
+
desc 'Import phone codes resource'
|
93
|
+
task :phone_codes, :cldr_path do |_, args|
|
94
|
+
TwitterCldr::Resources::PhoneCodesImporter.new(
|
95
|
+
args[:cldr_path] || '../cldr',
|
96
|
+
'./resources/shared'
|
97
|
+
).import
|
98
|
+
end
|
99
|
+
|
100
|
+
desc 'Update default and tailoring tries dumps'
|
57
101
|
task :tries do
|
58
102
|
TwitterCldr::Resources::TriesDumper.update_dumps
|
59
103
|
end
|
104
|
+
|
105
|
+
desc 'Update canonical compositions resource'
|
106
|
+
task :canonical_compositions do
|
107
|
+
TwitterCldr::Resources::CanonicalCompositionsUpdater.new('./resources/unicode_data').update
|
108
|
+
end
|
109
|
+
|
60
110
|
end
|
61
111
|
end
|
62
112
|
|
data/js/lib/compiler.rb
CHANGED
@@ -32,7 +32,9 @@ module TwitterCldr
|
|
32
32
|
@renderers ||= {
|
33
33
|
:plural_rules => TwitterCldr::Js::Renderers::PluralRules::PluralRulesRenderer,
|
34
34
|
:timespan => TwitterCldr::Js::Renderers::Calendars::TimespanRenderer,
|
35
|
-
:datetime => TwitterCldr::Js::Renderers::Calendars::DateTimeRenderer
|
35
|
+
:datetime => TwitterCldr::Js::Renderers::Calendars::DateTimeRenderer,
|
36
|
+
:numbers => TwitterCldr::Js::Renderers::Numbers::NumbersRenderer,
|
37
|
+
:currencies => TwitterCldr::Js::Renderers::Shared::CurrenciesRenderer
|
36
38
|
}
|
37
39
|
end
|
38
40
|
end
|
@@ -3,11 +3,11 @@
|
|
3
3
|
// http://www.apache.org/licenses/LICENSE-2.0
|
4
4
|
|
5
5
|
// TwitterCLDR (JavaScript) v{{version}}
|
6
|
-
// Authors:
|
7
|
-
|
8
|
-
|
9
|
-
// Homepage:
|
10
|
-
// Description:
|
6
|
+
// Authors: Cameron Dutro [@camertron]
|
7
|
+
Kirill Lashuk [@KL_7]
|
8
|
+
portions by Sven Fuchs [@svenfuchs]
|
9
|
+
// Homepage: https://twitter.com
|
10
|
+
// Description: Provides date, time, number, and list formatting functionality for various Twitter-supported locales in Javascript.
|
11
11
|
###
|
12
12
|
|
13
13
|
TwitterCldr = {}
|
@@ -0,0 +1,179 @@
|
|
1
|
+
# Copyright 2012 Twitter, Inc
|
2
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
3
|
+
|
4
|
+
TwitterCldr.NumberFormatter = class NumberFormatter
|
5
|
+
constructor: ->
|
6
|
+
@all_tokens = `{{{tokens}}}`
|
7
|
+
@tokens = []
|
8
|
+
@symbols = `{{{symbols}}}`
|
9
|
+
|
10
|
+
@default_symbols =
|
11
|
+
'group': ','
|
12
|
+
'decimal': '.'
|
13
|
+
'plus_sign': '+'
|
14
|
+
'minus_sign': '-'
|
15
|
+
|
16
|
+
format: (number, options = {}) ->
|
17
|
+
opts = this.default_format_options_for(number)
|
18
|
+
|
19
|
+
for key, val of options
|
20
|
+
opts[key] = if options[key]? then options[key] else opts[key]
|
21
|
+
|
22
|
+
[prefix, suffix, integer_format, fraction_format] = this.partition_tokens(this.get_tokens(number, opts))
|
23
|
+
[int, fraction] = this.parse_number(number, opts)
|
24
|
+
result = integer_format.apply(parseFloat(int), opts)
|
25
|
+
result += fraction_format.apply(fraction, opts) if fraction
|
26
|
+
sign = if number < 0 && prefix != "-" then @symbols.minus_sign || @default_symbols.minus_sign else ""
|
27
|
+
"#{sign}#{prefix}#{result}#{suffix}"
|
28
|
+
|
29
|
+
partition_tokens: (tokens) ->
|
30
|
+
[tokens[0] || "",
|
31
|
+
tokens[2] || "",
|
32
|
+
new IntegerHelper(tokens[1], @symbols),
|
33
|
+
new FractionHelper(tokens[1], @symbols)]
|
34
|
+
|
35
|
+
parse_number: (number, options = {}) ->
|
36
|
+
if options.precision?
|
37
|
+
precision = options.precision
|
38
|
+
else
|
39
|
+
precision = this.precision_from(number)
|
40
|
+
|
41
|
+
number = this.round_to(number, precision)
|
42
|
+
Math.abs(number).toFixed(precision).split(".")
|
43
|
+
|
44
|
+
precision_from: (num) ->
|
45
|
+
parts = num.toString().split(".")
|
46
|
+
if parts.length == 2 then parts[1].length else 0
|
47
|
+
|
48
|
+
round_to: (number, precision) ->
|
49
|
+
factor = Math.pow(10, precision)
|
50
|
+
Math.round(number * factor) / factor
|
51
|
+
|
52
|
+
get_tokens: ->
|
53
|
+
throw "get_tokens() not implemented - use a derived class like PercentFormatter."
|
54
|
+
|
55
|
+
TwitterCldr.PercentFormatter = class PercentFormatter extends NumberFormatter
|
56
|
+
constructor: (options = {}) ->
|
57
|
+
@default_percent_sign = "%"
|
58
|
+
super
|
59
|
+
|
60
|
+
format: (number, options = {}) ->
|
61
|
+
super(number, options).replace('¤', @symbols.percent_sign || @default_percent_sign)
|
62
|
+
|
63
|
+
default_format_options_for: (number) ->
|
64
|
+
precision: 0
|
65
|
+
|
66
|
+
get_tokens: (number, options) ->
|
67
|
+
if number < 0 then @all_tokens.percent.negative else @all_tokens.percent.positive
|
68
|
+
|
69
|
+
TwitterCldr.DecimalFormatter = class DecimalFormatter extends NumberFormatter
|
70
|
+
format: (number, options = {}) ->
|
71
|
+
try
|
72
|
+
super(number, options)
|
73
|
+
catch error
|
74
|
+
number
|
75
|
+
|
76
|
+
default_format_options_for: (number) ->
|
77
|
+
precision: this.precision_from(number)
|
78
|
+
|
79
|
+
get_tokens: (number, options = {}) ->
|
80
|
+
if number < 0 then @all_tokens.decimal.negative else @all_tokens.decimal.positive
|
81
|
+
|
82
|
+
TwitterCldr.CurrencyFormatter = class CurrencyFormatter extends NumberFormatter
|
83
|
+
constructor: (options = {}) ->
|
84
|
+
@default_currency_symbol = "$"
|
85
|
+
@default_precision = 2
|
86
|
+
super
|
87
|
+
|
88
|
+
format: (number, options = {}) ->
|
89
|
+
if options.currency
|
90
|
+
if TwitterCldr.Currencies?
|
91
|
+
currency = TwitterCldr.Currencies.for_code(options.currency)
|
92
|
+
currency ||= TwitterCldr.Currencies.for_country(options.currency)
|
93
|
+
currency ||= symbol: options.currency
|
94
|
+
else
|
95
|
+
currency = symbol: options.currency
|
96
|
+
else
|
97
|
+
currency = symbol: @default_currency_symbol
|
98
|
+
|
99
|
+
super(number, options).replace('¤', currency.symbol)
|
100
|
+
|
101
|
+
default_format_options_for: (number) ->
|
102
|
+
precision = this.precision_from(number)
|
103
|
+
if precision == 0 then precision = @default_precision
|
104
|
+
precision: precision
|
105
|
+
|
106
|
+
get_tokens: (number, options = {}) ->
|
107
|
+
if number < 0 then @all_tokens.currency.negative else @all_tokens.currency.positive
|
108
|
+
|
109
|
+
TwitterCldr.NumberFormatter.BaseHelper = class BaseHelper
|
110
|
+
interpolate: (string, value, orientation = "right") ->
|
111
|
+
value = value.toString()
|
112
|
+
length = value.length
|
113
|
+
start = if orientation == "left" then 0 else -length
|
114
|
+
string = (("#" for i in [0...length]).join("") + string).slice(-length) if string.length < length
|
115
|
+
|
116
|
+
if start < 0
|
117
|
+
string = string[0...(start + string.length)] + value
|
118
|
+
else
|
119
|
+
string = string[0...start] + value + string[(length)..-1]
|
120
|
+
|
121
|
+
string.replace(/#/g, "")
|
122
|
+
|
123
|
+
TwitterCldr.NumberFormatter.IntegerHelper = class IntegerHelper extends BaseHelper
|
124
|
+
constructor: (token, symbols = {}) ->
|
125
|
+
format = token.split('.')[0]
|
126
|
+
@format = this.prepare_format(format, symbols)
|
127
|
+
@groups = this.parse_groups(format)
|
128
|
+
@separator = symbols.group || ','
|
129
|
+
|
130
|
+
apply: (number, options = {}) ->
|
131
|
+
this.format_groups(this.interpolate(@format, parseInt(number)))
|
132
|
+
|
133
|
+
format_groups: (string) ->
|
134
|
+
return string if @groups.length == 0
|
135
|
+
tokens = []
|
136
|
+
|
137
|
+
cur_token = this.chop_group(string, @groups[0])
|
138
|
+
tokens.push(cur_token)
|
139
|
+
string = string[0...(string.length - cur_token.length)] if cur_token
|
140
|
+
|
141
|
+
while string.length > @groups[@groups.length - 1]
|
142
|
+
cur_token = this.chop_group(string, @groups[@groups.length - 1])
|
143
|
+
tokens.push(cur_token)
|
144
|
+
string = string[0...(string.length - cur_token.length)] if cur_token
|
145
|
+
|
146
|
+
tokens.push(string)
|
147
|
+
(token for token in tokens when token != null).reverse().join(@separator)
|
148
|
+
|
149
|
+
parse_groups: (format) ->
|
150
|
+
return [] unless index = format.lastIndexOf(',')
|
151
|
+
rest = format[0...index]
|
152
|
+
widths = [format.length - index - 1]
|
153
|
+
widths.push(rest.length - rest.lastIndexOf(',') - 1) if rest.lastIndexOf(',') > -1
|
154
|
+
widths = (width for width in widths when width != null) # compact
|
155
|
+
widths.reverse() # uniq
|
156
|
+
(widths[index] for index in [0...widths.length] when widths.indexOf(widths[index], index + 1) == -1).reverse()
|
157
|
+
|
158
|
+
chop_group: (string, size) ->
|
159
|
+
if string.length > size then string[-size..-1] else null
|
160
|
+
|
161
|
+
prepare_format: (format, symbols) ->
|
162
|
+
format.replace(",", "").replace("+", symbols.plus_sign).replace("-", symbols.minus_sign)
|
163
|
+
|
164
|
+
TwitterCldr.NumberFormatter.FractionHelper = class FractionHelper extends BaseHelper
|
165
|
+
constructor: (token, symbols = {}) ->
|
166
|
+
@format = if token then token.split('.').pop() else ""
|
167
|
+
@decimal = symbols.decimal || "."
|
168
|
+
@precision = @format.length
|
169
|
+
|
170
|
+
apply: (fraction, options = {}) ->
|
171
|
+
precision = if options.precision? then options.precision else @precision
|
172
|
+
if precision > 0
|
173
|
+
@decimal + this.interpolate(this.format_for(options), fraction, "left")
|
174
|
+
else
|
175
|
+
""
|
176
|
+
|
177
|
+
format_for: (options) ->
|
178
|
+
precision = if options.precision? then options.precision else @precision
|
179
|
+
if precision then ("0" for i in [0...precision]).join("") else @format
|