twitter_cldr 1.9.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +7 -0
- data/History.txt +11 -0
- data/README.md +93 -13
- data/Rakefile +27 -6
- data/lib/twitter_cldr/formatters.rb +15 -12
- data/lib/twitter_cldr/formatters/base.rb +1 -1
- data/lib/twitter_cldr/formatters/calendars/datetime_formatter.rb +18 -3
- data/lib/twitter_cldr/formatters/calendars/timespan_formatter.rb +24 -26
- data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +47 -0
- data/lib/twitter_cldr/formatters/numbers/abbreviated/long_decimal_formatter.rb +18 -0
- data/lib/twitter_cldr/formatters/numbers/abbreviated/short_decimal_formatter.rb +18 -0
- data/lib/twitter_cldr/formatters/numbers/currency_formatter.rb +22 -17
- data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +0 -9
- data/lib/twitter_cldr/formatters/numbers/helpers/base.rb +1 -1
- data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +25 -10
- data/lib/twitter_cldr/formatters/numbers/percent_formatter.rb +9 -6
- data/lib/twitter_cldr/localized/localized_datetime.rb +6 -2
- data/lib/twitter_cldr/localized/localized_number.rb +9 -3
- data/lib/twitter_cldr/localized/localized_timespan.rb +1 -1
- data/lib/twitter_cldr/resources.rb +13 -12
- data/lib/twitter_cldr/resources/custom_locales_resources_importer.rb +1 -1
- data/lib/twitter_cldr/resources/download.rb +1 -1
- data/lib/twitter_cldr/resources/locales_resources_importer.rb +10 -6
- data/lib/twitter_cldr/shared/bidi.rb +27 -27
- data/lib/twitter_cldr/shared/currencies.rb +20 -13
- data/lib/twitter_cldr/tokenizers.rb +10 -9
- data/lib/twitter_cldr/tokenizers/base.rb +33 -21
- data/lib/twitter_cldr/tokenizers/calendars/additional_date_format_selector.rb +86 -0
- data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +20 -11
- data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +50 -13
- data/lib/twitter_cldr/tokenizers/calendars/time_tokenizer.rb +19 -10
- data/lib/twitter_cldr/tokenizers/calendars/timespan_tokenizer.rb +32 -32
- data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +45 -22
- data/lib/twitter_cldr/utils.rb +16 -1
- data/lib/twitter_cldr/version.rb +1 -1
- data/resources/collation/tailoring/af.yml +1 -0
- data/resources/collation/tailoring/ar.yml +3 -2
- data/resources/collation/tailoring/be.yml +7 -0
- data/resources/collation/tailoring/bg.yml +5 -0
- data/resources/collation/tailoring/bn.yml +9 -0
- data/resources/collation/tailoring/ca.yml +3 -2
- data/resources/collation/tailoring/cs.yml +3 -2
- data/resources/collation/tailoring/cy.yml +51 -0
- data/resources/collation/tailoring/da.yml +3 -2
- data/resources/collation/tailoring/de.yml +1 -0
- data/resources/collation/tailoring/el.yml +1 -0
- data/resources/collation/tailoring/en.yml +1 -0
- data/resources/collation/tailoring/es.yml +3 -2
- data/resources/collation/tailoring/eu.yml +1 -0
- data/resources/collation/tailoring/fa.yml +3 -2
- data/resources/collation/tailoring/fi.yml +3 -2
- data/resources/collation/tailoring/fil.yml +3 -2
- data/resources/collation/tailoring/fr.yml +1 -0
- data/resources/collation/tailoring/ga.yml +5 -0
- data/resources/collation/tailoring/gl.yml +5 -0
- data/resources/collation/tailoring/he.yml +1 -0
- data/resources/collation/tailoring/hi.yml +3 -2
- data/resources/collation/tailoring/hu.yml +3 -2
- data/resources/collation/tailoring/id.yml +1 -0
- data/resources/collation/tailoring/it.yml +1 -0
- data/resources/collation/tailoring/ja.yml +107 -54
- data/resources/collation/tailoring/ko.yml +3 -2
- data/resources/collation/tailoring/lv.yml +35 -0
- data/resources/collation/tailoring/ms.yml +1 -0
- data/resources/collation/tailoring/nb.yml +3 -2
- data/resources/collation/tailoring/nl.yml +1 -0
- data/resources/collation/tailoring/pl.yml +3 -2
- data/resources/collation/tailoring/pt.yml +1 -0
- data/resources/collation/tailoring/ro.yml +31 -0
- data/resources/collation/tailoring/ru.yml +1 -0
- data/resources/collation/tailoring/sk.yml +35 -0
- data/resources/collation/tailoring/sq.yml +65 -0
- data/resources/collation/tailoring/sr.yml +5 -0
- data/resources/collation/tailoring/sv.yml +3 -2
- data/resources/collation/tailoring/ta.yml +57 -0
- data/resources/collation/tailoring/th.yml +3 -2
- data/resources/collation/tailoring/tr.yml +3 -2
- data/resources/collation/tailoring/uk.yml +3 -2
- data/resources/collation/tailoring/ur.yml +3 -2
- data/resources/collation/tailoring/zh-Hant.yml +3 -2
- data/resources/collation/tailoring/zh.yml +3 -2
- data/resources/collation/tries/be.dump +0 -0
- data/resources/collation/tries/bg.dump +0 -0
- data/resources/collation/tries/bn.dump +0 -0
- data/resources/collation/tries/cy.dump +0 -0
- data/resources/collation/tries/ga.dump +0 -0
- data/resources/collation/tries/gl.dump +0 -0
- data/resources/collation/tries/lv.dump +0 -0
- data/resources/collation/tries/ro.dump +0 -0
- data/resources/collation/tries/sk.dump +0 -0
- data/resources/collation/tries/sq.dump +0 -0
- data/resources/collation/tries/sr.dump +0 -0
- data/resources/collation/tries/ta.dump +0 -0
- data/resources/custom/locales/ar/units.yml +6 -6
- data/resources/custom/locales/be/units.yml +27 -0
- data/resources/custom/locales/bg/units.yml +19 -0
- data/resources/custom/locales/bn/units.yml +7 -0
- data/resources/custom/locales/cs/units.yml +3 -3
- data/resources/custom/locales/cy/units.yml +35 -0
- data/resources/custom/locales/fil/units.yml +2 -2
- data/resources/custom/locales/ga/units.yml +24 -0
- data/resources/custom/locales/gl/units.yml +19 -0
- data/resources/custom/locales/hu/plurals.yml +3 -0
- data/resources/custom/locales/hu/units.yml +4 -0
- data/resources/custom/locales/lv/units.yml +23 -0
- data/resources/custom/locales/ms/units.yml +1 -1
- data/resources/custom/locales/ro/units.yml +23 -0
- data/resources/custom/locales/sk/units.yml +23 -0
- data/resources/custom/locales/sr/units.yml +27 -0
- data/resources/custom/locales/ta/units.yml +11 -0
- data/resources/custom/locales/th/calendars.yml +14 -0
- data/resources/locales/af/calendars.yml +56 -0
- data/resources/locales/af/currencies.yml +358 -0
- data/resources/locales/af/languages.yml +23 -3
- data/resources/locales/af/numbers.yml +22 -8
- data/resources/locales/af/units.yml +26 -54
- data/resources/locales/ar/calendars.yml +99 -6
- data/resources/locales/ar/currencies.yml +1491 -0
- data/resources/locales/ar/languages.yml +33 -6
- data/resources/locales/ar/numbers.yml +27 -14
- data/resources/locales/ar/units.yml +31 -31
- data/resources/locales/be/calendars.yml +229 -0
- data/resources/locales/be/currencies.yml +66 -0
- data/resources/locales/be/languages.yml +149 -0
- data/resources/locales/be/layout.yml +4 -0
- data/resources/locales/be/lists.yml +7 -0
- data/resources/locales/be/numbers.yml +43 -0
- data/resources/locales/be/plurals.yml +5 -0
- data/resources/locales/be/units.yml +87 -0
- data/resources/locales/bg/calendars.yml +220 -0
- data/resources/locales/bg/currencies.yml +773 -0
- data/resources/locales/bg/languages.yml +513 -0
- data/resources/locales/bg/layout.yml +4 -0
- data/resources/locales/bg/lists.yml +7 -0
- data/resources/locales/bg/numbers.yml +57 -0
- data/resources/locales/bg/plurals.yml +3 -0
- data/resources/locales/bg/units.yml +108 -0
- data/resources/locales/bn/calendars.yml +205 -0
- data/resources/locales/bn/currencies.yml +564 -0
- data/resources/locales/bn/languages.yml +513 -0
- data/resources/locales/bn/layout.yml +4 -0
- data/resources/locales/bn/lists.yml +7 -0
- data/resources/locales/bn/numbers.yml +57 -0
- data/resources/locales/bn/plurals.yml +3 -0
- data/resources/locales/bn/units.yml +108 -0
- data/resources/locales/ca/calendars.yml +70 -21
- data/resources/locales/ca/currencies.yml +904 -0
- data/resources/locales/ca/languages.yml +70 -5
- data/resources/locales/ca/numbers.yml +19 -6
- data/resources/locales/ca/units.yml +0 -28
- data/resources/locales/cs/calendars.yml +73 -27
- data/resources/locales/cs/currencies.yml +1063 -0
- data/resources/locales/cs/languages.yml +113 -31
- data/resources/locales/cs/numbers.yml +17 -4
- data/resources/locales/cs/units.yml +0 -28
- data/resources/locales/cy/calendars.yml +266 -0
- data/resources/locales/cy/currencies.yml +54 -0
- data/resources/locales/cy/languages.yml +92 -0
- data/resources/locales/cy/layout.yml +4 -0
- data/resources/locales/cy/lists.yml +7 -0
- data/resources/locales/cy/numbers.yml +49 -0
- data/resources/locales/cy/plurals.yml +4 -0
- data/resources/locales/cy/units.yml +73 -0
- data/resources/locales/da/calendars.yml +117 -16
- data/resources/locales/da/currencies.yml +814 -0
- data/resources/locales/da/languages.yml +66 -5
- data/resources/locales/da/numbers.yml +16 -3
- data/resources/locales/da/units.yml +21 -35
- data/resources/locales/de/calendars.yml +115 -17
- data/resources/locales/de/currencies.yml +843 -0
- data/resources/locales/de/languages.yml +5 -3
- data/resources/locales/de/numbers.yml +18 -5
- data/resources/locales/de/units.yml +0 -28
- data/resources/locales/el/calendars.yml +61 -8
- data/resources/locales/el/currencies.yml +866 -0
- data/resources/locales/el/languages.yml +61 -5
- data/resources/locales/el/numbers.yml +18 -5
- data/resources/locales/el/units.yml +7 -42
- data/resources/locales/en/calendars.yml +43 -4
- data/resources/locales/en/currencies.yml +912 -0
- data/resources/locales/en/languages.yml +26 -6
- data/resources/locales/en/numbers.yml +17 -4
- data/resources/locales/es/calendars.yml +60 -0
- data/resources/locales/es/currencies.yml +820 -0
- data/resources/locales/es/languages.yml +66 -1
- data/resources/locales/es/numbers.yml +20 -7
- data/resources/locales/es/units.yml +0 -28
- data/resources/locales/eu/calendars.yml +43 -2
- data/resources/locales/eu/currencies.yml +378 -0
- data/resources/locales/eu/languages.yml +29 -13
- data/resources/locales/eu/numbers.yml +17 -4
- data/resources/locales/eu/units.yml +22 -43
- data/resources/locales/fa/calendars.yml +57 -0
- data/resources/locales/fa/currencies.yml +449 -0
- data/resources/locales/fa/languages.yml +8 -3
- data/resources/locales/fa/numbers.yml +20 -7
- data/resources/locales/fa/units.yml +0 -42
- data/resources/locales/fi/calendars.yml +49 -1
- data/resources/locales/fi/currencies.yml +903 -0
- data/resources/locales/fi/languages.yml +58 -2
- data/resources/locales/fi/numbers.yml +25 -12
- data/resources/locales/fi/units.yml +0 -28
- data/resources/locales/fil/calendars.yml +51 -0
- data/resources/locales/fil/currencies.yml +357 -0
- data/resources/locales/fil/languages.yml +25 -8
- data/resources/locales/fil/numbers.yml +18 -5
- data/resources/locales/fil/units.yml +14 -28
- data/resources/locales/fr/calendars.yml +114 -12
- data/resources/locales/fr/currencies.yml +884 -0
- data/resources/locales/fr/languages.yml +43 -9
- data/resources/locales/fr/numbers.yml +22 -9
- data/resources/locales/fr/units.yml +2 -30
- data/resources/locales/ga/calendars.yml +187 -0
- data/resources/locales/ga/currencies.yml +513 -0
- data/resources/locales/ga/languages.yml +147 -0
- data/resources/locales/ga/layout.yml +4 -0
- data/resources/locales/ga/lists.yml +7 -0
- data/resources/locales/ga/numbers.yml +43 -0
- data/resources/locales/ga/plurals.yml +4 -0
- data/resources/locales/ga/units.yml +66 -0
- data/resources/locales/gl/calendars.yml +216 -0
- data/resources/locales/gl/currencies.yml +476 -0
- data/resources/locales/gl/languages.yml +213 -0
- data/resources/locales/gl/layout.yml +4 -0
- data/resources/locales/gl/lists.yml +7 -0
- data/resources/locales/gl/numbers.yml +57 -0
- data/resources/locales/gl/plurals.yml +3 -0
- data/resources/locales/gl/units.yml +108 -0
- data/resources/locales/he/calendars.yml +70 -18
- data/resources/locales/he/currencies.yml +497 -0
- data/resources/locales/he/languages.yml +301 -7
- data/resources/locales/he/lists.yml +2 -2
- data/resources/locales/he/numbers.yml +23 -8
- data/resources/locales/he/plurals.yml +3 -2
- data/resources/locales/he/units.yml +72 -30
- data/resources/locales/hi/calendars.yml +54 -1
- data/resources/locales/hi/currencies.yml +388 -0
- data/resources/locales/hi/languages.yml +2 -0
- data/resources/locales/hi/numbers.yml +21 -8
- data/resources/locales/hi/units.yml +15 -29
- data/resources/locales/hu/calendars.yml +52 -5
- data/resources/locales/hu/currencies.yml +640 -0
- data/resources/locales/hu/languages.yml +60 -4
- data/resources/locales/hu/numbers.yml +25 -12
- data/resources/locales/hu/units.yml +1 -29
- data/resources/locales/id/calendars.yml +125 -21
- data/resources/locales/id/currencies.yml +603 -0
- data/resources/locales/id/languages.yml +113 -51
- data/resources/locales/id/numbers.yml +16 -3
- data/resources/locales/id/units.yml +0 -28
- data/resources/locales/it/calendars.yml +59 -6
- data/resources/locales/it/currencies.yml +722 -0
- data/resources/locales/it/languages.yml +77 -5
- data/resources/locales/it/numbers.yml +22 -9
- data/resources/locales/it/units.yml +0 -14
- data/resources/locales/ja/calendars.yml +55 -5
- data/resources/locales/ja/currencies.yml +602 -0
- data/resources/locales/ja/languages.yml +103 -43
- data/resources/locales/ja/numbers.yml +18 -5
- data/resources/locales/ja/units.yml +6 -34
- data/resources/locales/ko/calendars.yml +50 -0
- data/resources/locales/ko/currencies.yml +596 -0
- data/resources/locales/ko/languages.yml +75 -8
- data/resources/locales/ko/numbers.yml +17 -4
- data/resources/locales/ko/units.yml +0 -28
- data/resources/locales/lv/calendars.yml +275 -0
- data/resources/locales/lv/currencies.yml +765 -0
- data/resources/locales/lv/languages.yml +576 -0
- data/resources/locales/lv/layout.yml +4 -0
- data/resources/locales/lv/lists.yml +7 -0
- data/resources/locales/lv/numbers.yml +58 -0
- data/resources/locales/lv/plurals.yml +4 -0
- data/resources/locales/lv/units.yml +136 -0
- data/resources/locales/ms/calendars.yml +86 -4
- data/resources/locales/ms/currencies.yml +341 -0
- data/resources/locales/ms/languages.yml +25 -3
- data/resources/locales/ms/numbers.yml +19 -6
- data/resources/locales/ms/units.yml +0 -56
- data/resources/locales/nb/calendars.yml +48 -1
- data/resources/locales/nb/currencies.yml +846 -0
- data/resources/locales/nb/languages.yml +44 -2
- data/resources/locales/nb/numbers.yml +16 -3
- data/resources/locales/nb/units.yml +6 -28
- data/resources/locales/nl/calendars.yml +110 -9
- data/resources/locales/nl/currencies.yml +640 -0
- data/resources/locales/nl/languages.yml +68 -8
- data/resources/locales/nl/numbers.yml +25 -12
- data/resources/locales/nl/units.yml +14 -28
- data/resources/locales/pl/calendars.yml +53 -6
- data/resources/locales/pl/currencies.yml +1100 -0
- data/resources/locales/pl/languages.yml +13 -6
- data/resources/locales/pl/lists.yml +2 -2
- data/resources/locales/pl/numbers.yml +18 -5
- data/resources/locales/pl/units.yml +51 -92
- data/resources/locales/pt/calendars.yml +121 -9
- data/resources/locales/pt/currencies.yml +904 -0
- data/resources/locales/pt/languages.yml +5 -3
- data/resources/locales/pt/numbers.yml +17 -4
- data/resources/locales/pt/units.yml +0 -28
- data/resources/locales/ro/calendars.yml +278 -0
- data/resources/locales/ro/currencies.yml +946 -0
- data/resources/locales/ro/languages.yml +576 -0
- data/resources/locales/ro/layout.yml +4 -0
- data/resources/locales/ro/lists.yml +7 -0
- data/resources/locales/ro/numbers.yml +58 -0
- data/resources/locales/ro/plurals.yml +3 -0
- data/resources/locales/ro/units.yml +136 -0
- data/resources/locales/ru/calendars.yml +72 -12
- data/resources/locales/ru/currencies.yml +1061 -0
- data/resources/locales/ru/languages.yml +51 -6
- data/resources/locales/ru/numbers.yml +21 -5
- data/resources/locales/ru/units.yml +0 -28
- data/resources/locales/sk/calendars.yml +275 -0
- data/resources/locales/sk/currencies.yml +713 -0
- data/resources/locales/sk/languages.yml +576 -0
- data/resources/locales/sk/layout.yml +4 -0
- data/resources/locales/sk/lists.yml +7 -0
- data/resources/locales/sk/numbers.yml +58 -0
- data/resources/locales/sk/plurals.yml +3 -0
- data/resources/locales/sk/units.yml +136 -0
- data/resources/locales/sq/calendars.yml +188 -0
- data/resources/locales/sq/currencies.yml +56 -0
- data/resources/locales/sq/languages.yml +17 -0
- data/resources/locales/sq/layout.yml +4 -0
- data/resources/locales/sq/lists.yml +7 -0
- data/resources/locales/sq/numbers.yml +43 -0
- data/resources/locales/sq/plurals.yml +3 -0
- data/resources/locales/sq/units.yml +73 -0
- data/resources/locales/sr/calendars.yml +285 -0
- data/resources/locales/sr/currencies.yml +1494 -0
- data/resources/locales/sr/languages.yml +513 -0
- data/resources/locales/sr/layout.yml +4 -0
- data/resources/locales/sr/lists.yml +7 -0
- data/resources/locales/sr/numbers.yml +59 -0
- data/resources/locales/sr/plurals.yml +5 -0
- data/resources/locales/sr/units.yml +164 -0
- data/resources/locales/sv/calendars.yml +59 -1
- data/resources/locales/sv/currencies.yml +919 -0
- data/resources/locales/sv/languages.yml +47 -2
- data/resources/locales/sv/numbers.yml +27 -12
- data/resources/locales/sv/units.yml +4 -32
- data/resources/locales/ta/calendars.yml +264 -0
- data/resources/locales/ta/currencies.yml +346 -0
- data/resources/locales/ta/languages.yml +512 -0
- data/resources/locales/ta/layout.yml +4 -0
- data/resources/locales/ta/lists.yml +7 -0
- data/resources/locales/ta/numbers.yml +57 -0
- data/resources/locales/ta/plurals.yml +3 -0
- data/resources/locales/ta/units.yml +108 -0
- data/resources/locales/th/calendars.yml +125 -27
- data/resources/locales/th/currencies.yml +602 -0
- data/resources/locales/th/languages.yml +70 -5
- data/resources/locales/th/numbers.yml +24 -11
- data/resources/locales/th/units.yml +0 -28
- data/resources/locales/tr/calendars.yml +62 -12
- data/resources/locales/tr/currencies.yml +571 -0
- data/resources/locales/tr/languages.yml +94 -29
- data/resources/locales/tr/numbers.yml +19 -6
- data/resources/locales/tr/units.yml +1 -29
- data/resources/locales/uk/calendars.yml +52 -0
- data/resources/locales/uk/currencies.yml +799 -0
- data/resources/locales/uk/languages.yml +57 -2
- data/resources/locales/uk/numbers.yml +18 -5
- data/resources/locales/uk/units.yml +0 -28
- data/resources/locales/ur/calendars.yml +96 -32
- data/resources/locales/ur/currencies.yml +360 -0
- data/resources/locales/ur/languages.yml +49 -32
- data/resources/locales/ur/numbers.yml +13 -13
- data/resources/locales/ur/units.yml +28 -56
- data/resources/locales/zh-Hant/calendars.yml +59 -1
- data/resources/locales/zh-Hant/currencies.yml +602 -0
- data/resources/locales/zh-Hant/languages.yml +74 -8
- data/resources/locales/zh-Hant/numbers.yml +17 -4
- data/resources/locales/zh-Hant/units.yml +0 -28
- data/resources/locales/zh/calendars.yml +95 -35
- data/resources/locales/zh/currencies.yml +602 -0
- data/resources/locales/zh/languages.yml +116 -46
- data/resources/locales/zh/numbers.yml +20 -7
- data/resources/locales/zh/units.yml +6 -34
- data/resources/shared/currency_digits_and_rounding.yml +187 -0
- data/spec/bidi/bidi_spec.rb +1 -1
- data/spec/collation/tailoring_spec.rb +29 -25
- data/spec/formatters/calendars/datetime_formatter_spec.rb +50 -2
- data/spec/formatters/calendars/timespan_formatter_spec.rb +52 -8
- data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +81 -0
- data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +37 -0
- data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +37 -0
- data/spec/formatters/numbers/currency_formatter_spec.rb +10 -1
- data/spec/localized/localized_date_spec.rb +11 -11
- data/spec/localized/localized_datetime_spec.rb +27 -3
- data/spec/localized/localized_number_spec.rb +34 -6
- data/spec/localized/localized_time_spec.rb +1 -1
- data/spec/readme_spec.rb +24 -3
- data/spec/shared/currencies_spec.rb +7 -9
- data/spec/spec_helper.rb +7 -0
- data/spec/tokenizers/base_spec.rb +71 -21
- data/spec/tokenizers/calendars/additional_date_format_selector_spec.rb +131 -0
- data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +54 -27
- data/spec/tokenizers/calendars/time_tokenizer_spec.rb +16 -16
- data/spec/tokenizers/numbers/number_tokenizer_spec.rb +9 -21
- data/spec/utils/yaml/yaml_spec.rb +21 -16
- data/spec/utils_spec.rb +6 -2
- metadata +218 -37
@@ -12,15 +12,59 @@ describe TimespanFormatter do
|
|
12
12
|
describe "#format" do
|
13
13
|
let(:formatter) { TimespanFormatter.new(:locale => :de) }
|
14
14
|
|
15
|
+
it "approximates timespans accurately if explicity asked to" do
|
16
|
+
options = { :direction => :none, :approximate => true }
|
17
|
+
formatter.format(44, options).should match_normalized("44 Sekunden")
|
18
|
+
formatter.format(45, options).should match_normalized("1 Minute")
|
19
|
+
|
20
|
+
formatter.format(2699, options).should match_normalized("45 Minuten")
|
21
|
+
formatter.format(2700, options).should match_normalized("1 Stunde")
|
22
|
+
|
23
|
+
formatter.format(64799, options).should match_normalized("18 Stunden")
|
24
|
+
formatter.format(64800, options).should match_normalized("1 Tag")
|
25
|
+
|
26
|
+
formatter.format(453599, options).should match_normalized("5 Tage")
|
27
|
+
formatter.format(453600, options).should match_normalized("1 Woche")
|
28
|
+
|
29
|
+
formatter.format(1972307, options).should match_normalized("3 Wochen")
|
30
|
+
formatter.format(1972308, options).should match_normalized("1 Monat")
|
31
|
+
|
32
|
+
formatter.format(23667694, options).should match_normalized("9 Monate")
|
33
|
+
formatter.format(23667695, options).should match_normalized("1 Jahr")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "doesn't approximate timespans by default" do
|
37
|
+
options = { :direction => :none }
|
38
|
+
formatter.format(44, options).should match_normalized("44 Sekunden")
|
39
|
+
formatter.format(45, options).should match_normalized("45 Sekunden")
|
40
|
+
|
41
|
+
formatter.format(2699, options).should match_normalized("45 Minuten")
|
42
|
+
formatter.format(2700, options).should match_normalized("45 Minuten")
|
43
|
+
|
44
|
+
formatter.format(64799, options).should match_normalized("18 Stunden")
|
45
|
+
formatter.format(64800, options).should match_normalized("18 Stunden")
|
46
|
+
|
47
|
+
formatter.format(453599, options).should match_normalized("5 Tage")
|
48
|
+
formatter.format(453600, options).should match_normalized("5 Tage")
|
49
|
+
|
50
|
+
formatter.format(1972307, options).should match_normalized("3 Wochen")
|
51
|
+
formatter.format(1972308, options).should match_normalized("3 Wochen")
|
52
|
+
|
53
|
+
formatter.format(23667694, options).should match_normalized("9 Monate")
|
54
|
+
formatter.format(23667695, options).should match_normalized("9 Monate")
|
55
|
+
|
56
|
+
formatter.format(31556926, options).should match_normalized("1 Jahr")
|
57
|
+
end
|
58
|
+
|
15
59
|
context "default type" do
|
16
60
|
describe "non-directional" do
|
17
61
|
it "works for a variety of units" do
|
18
62
|
formatter.format(3273932, :unit => :year, :direction => :none).should match_normalized('0 Jahre')
|
19
63
|
formatter.format(3273932, :unit => :month, :direction => :none).should match_normalized('1 Monat')
|
20
64
|
formatter.format(3273932, :unit => :week, :direction => :none).should match_normalized('5 Wochen')
|
21
|
-
formatter.format(3273932, :unit => :day, :direction => :none).should match_normalized('
|
65
|
+
formatter.format(3273932, :unit => :day, :direction => :none).should match_normalized('38 Tage')
|
22
66
|
formatter.format(3273932, :unit => :hour, :direction => :none).should match_normalized('909 Stunden')
|
23
|
-
formatter.format(3273932, :unit => :minute, :direction => :none).should match_normalized('
|
67
|
+
formatter.format(3273932, :unit => :minute, :direction => :none).should match_normalized('54566 Minuten')
|
24
68
|
formatter.format(3273932, :unit => :second, :direction => :none).should match_normalized('3273932 Sekunden')
|
25
69
|
end
|
26
70
|
end
|
@@ -30,9 +74,9 @@ describe TimespanFormatter do
|
|
30
74
|
formatter.format(-3273932, :unit => :year).should match_normalized('Vor 0 Jahren')
|
31
75
|
formatter.format(-3273932, :unit => :month).should match_normalized('Vor 1 Monat')
|
32
76
|
formatter.format(-3273932, :unit => :week).should match_normalized('Vor 5 Wochen')
|
33
|
-
formatter.format(-3273932, :unit => :day).should match_normalized('Vor
|
77
|
+
formatter.format(-3273932, :unit => :day).should match_normalized('Vor 38 Tagen')
|
34
78
|
formatter.format(-3273932, :unit => :hour).should match_normalized('Vor 909 Stunden')
|
35
|
-
formatter.format(-3273932, :unit => :minute).should match_normalized('Vor
|
79
|
+
formatter.format(-3273932, :unit => :minute).should match_normalized('Vor 54566 Minuten')
|
36
80
|
formatter.format(-3273932, :unit => :second).should match_normalized('Vor 3273932 Sekunden')
|
37
81
|
end
|
38
82
|
end
|
@@ -42,9 +86,9 @@ describe TimespanFormatter do
|
|
42
86
|
formatter.format(3273932, :unit => :year).should match_normalized('In 0 Jahren')
|
43
87
|
formatter.format(3273932, :unit => :month).should match_normalized('In 1 Monat')
|
44
88
|
formatter.format(3273932, :unit => :week).should match_normalized('In 5 Wochen')
|
45
|
-
formatter.format(3273932, :unit => :day).should match_normalized('In
|
89
|
+
formatter.format(3273932, :unit => :day).should match_normalized('In 38 Tagen')
|
46
90
|
formatter.format(3273932, :unit => :hour).should match_normalized('In 909 Stunden')
|
47
|
-
formatter.format(3273932, :unit => :minute).should match_normalized('In
|
91
|
+
formatter.format(3273932, :unit => :minute).should match_normalized('In 54566 Minuten')
|
48
92
|
formatter.format(3273932, :unit => :second).should match_normalized('In 3273932 Sekunden')
|
49
93
|
end
|
50
94
|
end
|
@@ -57,9 +101,9 @@ describe TimespanFormatter do
|
|
57
101
|
describe "non-directional" do
|
58
102
|
it "works for a variety of units" do
|
59
103
|
# year/month/week not supported
|
60
|
-
formatter.format(3273932, options.merge(:unit => :day, :direction => :none)).should match_normalized('
|
104
|
+
formatter.format(3273932, options.merge(:unit => :day, :direction => :none)).should match_normalized('38d')
|
61
105
|
formatter.format(3273932, options.merge(:unit => :hour, :direction => :none)).should match_normalized('909h')
|
62
|
-
formatter.format(3273932, options.merge(:unit => :minute, :direction => :none)).should match_normalized('
|
106
|
+
formatter.format(3273932, options.merge(:unit => :minute, :direction => :none)).should match_normalized('54566m')
|
63
107
|
formatter.format(3273932, options.merge(:unit => :second, :direction => :none)).should match_normalized('3273932s')
|
64
108
|
end
|
65
109
|
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
require 'spec_helper'
|
7
|
+
|
8
|
+
include TwitterCldr::Formatters
|
9
|
+
|
10
|
+
describe AbbreviatedNumberFormatter do
|
11
|
+
before(:each) do
|
12
|
+
@formatter = AbbreviatedNumberFormatter.new(:locale => :en)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#transform_number" do
|
16
|
+
it "chops off the number to the necessary number of sig figs" do
|
17
|
+
@formatter.send(:transform_number, 10 ** 3).should == 1
|
18
|
+
@formatter.send(:transform_number, 10 ** 4).should == 10
|
19
|
+
@formatter.send(:transform_number, 10 ** 5).should == 100
|
20
|
+
@formatter.send(:transform_number, 10 ** 6).should == 1
|
21
|
+
@formatter.send(:transform_number, 10 ** 7).should == 10
|
22
|
+
@formatter.send(:transform_number, 10 ** 8).should == 100
|
23
|
+
@formatter.send(:transform_number, 10 ** 9).should == 1
|
24
|
+
@formatter.send(:transform_number, 10 ** 10).should == 10
|
25
|
+
@formatter.send(:transform_number, 10 ** 11).should == 100
|
26
|
+
@formatter.send(:transform_number, 10 ** 12).should == 1
|
27
|
+
@formatter.send(:transform_number, 10 ** 13).should == 10
|
28
|
+
@formatter.send(:transform_number, 10 ** 14).should == 100
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns the original number if greater than 10^15" do
|
32
|
+
@formatter.send(:transform_number, 10 ** 15).should == 10 ** 15
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns the original number if less than 10^3" do
|
36
|
+
@formatter.send(:transform_number, 999).should == 999
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#get_key" do
|
41
|
+
it "builds a power-of-ten key based on the number of digits in the input" do
|
42
|
+
(3..15).each { |i| @formatter.send(:get_key, "1337#{"0" * (i - 3)}").should == 10 ** i }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#get_tokens" do
|
47
|
+
before(:each) do
|
48
|
+
stub(@formatter).get_type { :awesome_type }
|
49
|
+
end
|
50
|
+
|
51
|
+
it "gets tokens for a valid number (between 10^3 and 10^15)" do
|
52
|
+
mock(@formatter.tokenizer).tokens({
|
53
|
+
:sign => :positive,
|
54
|
+
:type => :awesome_type,
|
55
|
+
:format => 10 ** 4
|
56
|
+
}) { "I'm just right!" }
|
57
|
+
|
58
|
+
@formatter.get_tokens(12345).should == "I'm just right!"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns tokens for decimals if the number is too large" do
|
62
|
+
mock(@formatter.tokenizer).tokens({
|
63
|
+
:sign => :positive,
|
64
|
+
:type => :decimal,
|
65
|
+
:format => nil
|
66
|
+
}) { "I'm too big!" }
|
67
|
+
|
68
|
+
@formatter.get_tokens(1234567891011122).should == "I'm too big!"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns tokens for decimals if the number is too small" do
|
72
|
+
mock(@formatter.tokenizer).tokens({
|
73
|
+
:sign => :positive,
|
74
|
+
:type => :decimal,
|
75
|
+
:format => nil
|
76
|
+
}) { "I'm too small!" }
|
77
|
+
|
78
|
+
@formatter.get_tokens(123).should == "I'm too small!"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
require 'spec_helper'
|
7
|
+
|
8
|
+
include TwitterCldr::Formatters
|
9
|
+
|
10
|
+
describe LongDecimalFormatter do
|
11
|
+
before(:each) do
|
12
|
+
@formatter = LongDecimalFormatter.new(:locale => :en)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "formats valid numbers correctly (from 10^3 - 10^15)" do
|
16
|
+
@formatter.format(10 ** 3).should match_normalized("1 thousand")
|
17
|
+
@formatter.format(10 ** 4).should match_normalized("10 thousand")
|
18
|
+
@formatter.format(10 ** 5).should match_normalized("100 thousand")
|
19
|
+
@formatter.format(10 ** 6).should match_normalized("1 million")
|
20
|
+
@formatter.format(10 ** 7).should match_normalized("10 million")
|
21
|
+
@formatter.format(10 ** 8).should match_normalized("100 million")
|
22
|
+
@formatter.format(10 ** 9).should match_normalized("1 billion")
|
23
|
+
@formatter.format(10 ** 10).should match_normalized("10 billion")
|
24
|
+
@formatter.format(10 ** 11).should match_normalized("100 billion")
|
25
|
+
@formatter.format(10 ** 12).should match_normalized("1 trillion")
|
26
|
+
@formatter.format(10 ** 13).should match_normalized("10 trillion")
|
27
|
+
@formatter.format(10 ** 14).should match_normalized("100 trillion")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "formats the number as if it were a straight decimal if it exceeds 10^15" do
|
31
|
+
@formatter.format(10**15).should == "1,000,000,000,000,000"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "formats the number as if it were a straight decimal if it's less than 1000" do
|
35
|
+
@formatter.format(500).should == "500"
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# Copyright 2012 Twitter, Inc
|
4
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
require 'spec_helper'
|
7
|
+
|
8
|
+
include TwitterCldr::Formatters
|
9
|
+
|
10
|
+
describe ShortDecimalFormatter do
|
11
|
+
before(:each) do
|
12
|
+
@formatter = ShortDecimalFormatter.new(:locale => :en)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "formats valid numbers correctly (from 10^3 - 10^15)" do
|
16
|
+
@formatter.format(10 ** 3).should match_normalized("1K")
|
17
|
+
@formatter.format(10 ** 4).should match_normalized("10K")
|
18
|
+
@formatter.format(10 ** 5).should match_normalized("100K")
|
19
|
+
@formatter.format(10 ** 6).should match_normalized("1M")
|
20
|
+
@formatter.format(10 ** 7).should match_normalized("10M")
|
21
|
+
@formatter.format(10 ** 8).should match_normalized("100M")
|
22
|
+
@formatter.format(10 ** 9).should match_normalized("1B")
|
23
|
+
@formatter.format(10 ** 10).should match_normalized("10B")
|
24
|
+
@formatter.format(10 ** 11).should match_normalized("100B")
|
25
|
+
@formatter.format(10 ** 12).should match_normalized("1T")
|
26
|
+
@formatter.format(10 ** 13).should match_normalized("10T")
|
27
|
+
@formatter.format(10 ** 14).should match_normalized("100T")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "formats the number as if it were a straight decimal if it exceeds 10^15" do
|
31
|
+
@formatter.format(10**15).should == "1,000,000,000,000,000"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "formats the number as if it were a straight decimal if it's less than 1000" do
|
35
|
+
@formatter.format(500).should == "500"
|
36
|
+
end
|
37
|
+
end
|
@@ -28,11 +28,20 @@ describe CurrencyFormatter do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should use the currency symbol for the corresponding currency code" do
|
31
|
-
@formatter.format(12, :currency => "
|
31
|
+
@formatter.format(12, :currency => "THB").should == "฿12.00"
|
32
32
|
end
|
33
33
|
|
34
34
|
it "overrides the default precision" do
|
35
35
|
@formatter.format(12, :precision => 3).should == "$12.000"
|
36
36
|
end
|
37
|
+
|
38
|
+
it "should use the currency precision" do
|
39
|
+
@formatter.format(12, :currency => "TND").should == "TND12.000"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should use the currency rounding" do
|
43
|
+
@formatter.format(12.03, :currency => "CHF").should == "CHF12.05"
|
44
|
+
@formatter.format(12.02, :currency => "CHF").should == "CHF12.00"
|
45
|
+
end
|
37
46
|
end
|
38
47
|
end
|
@@ -25,7 +25,7 @@ describe LocalizedDate do
|
|
25
25
|
loc_date = date.localize(:en)
|
26
26
|
loc_date.ago(:base_time => base_time).to_s.should match_normalized("1 month ago")
|
27
27
|
loc_date.ago(:base_time => Time.gm(2010,12,6,12,12,30)).to_s.should match_normalized("5 months ago")
|
28
|
-
loc_date.ago(:base_time => Time.gm(2010,7,7,12,12,30)).to_s.should match_normalized("
|
28
|
+
loc_date.ago(:base_time => Time.gm(2010,7,7,12,12,30)).to_s.should match_normalized("2 days ago")
|
29
29
|
loc_date.ago(:base_time => Time.gm(2010,7,6,12,12,30)).to_s.should match_normalized("12 hours ago")
|
30
30
|
loc_date.ago(:base_time => Time.gm(2010,7,6,0,39,0)).to_s.should match_normalized("39 minutes ago")
|
31
31
|
end
|
@@ -33,24 +33,24 @@ describe LocalizedDate do
|
|
33
33
|
it "should ago-ify with strings regardless of variable's placement or existence" do
|
34
34
|
loc_date = date.localize(:ar)
|
35
35
|
loc_date.ago(:base_time => base_time).to_s(:unit => :hour).should match_normalized("قبل 756 ساعة")
|
36
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("قبل
|
37
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :month).should match_normalized("قبل
|
38
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :year).should match_normalized("قبل 0
|
36
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("قبل 32 يومًا")
|
37
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :month).should match_normalized("قبل 1 من الشهور")
|
38
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :year).should match_normalized("قبل 0 من السنوات")
|
39
39
|
|
40
40
|
loc_date = date.localize(:fa)
|
41
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("
|
41
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("32 روز پیش")
|
42
42
|
|
43
43
|
loc_date = date.localize(:en)
|
44
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("
|
44
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("32 days ago")
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should ago-ify a date with a number of different units" do
|
48
48
|
date = Date.new(2010,6,6)
|
49
49
|
loc_date = date.localize(:de)
|
50
50
|
loc_date.ago(:base_time => base_time).to_s(:unit => :second).should match_normalized("Vor 5314350 Sekunden")
|
51
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :minute).should match_normalized("Vor
|
51
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :minute).should match_normalized("Vor 88573 Minuten")
|
52
52
|
loc_date.ago(:base_time => base_time).to_s(:unit => :hour).should match_normalized("Vor 1476 Stunden")
|
53
|
-
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("Vor
|
53
|
+
loc_date.ago(:base_time => base_time).to_s(:unit => :day).should match_normalized("Vor 62 Tagen")
|
54
54
|
loc_date.ago(:base_time => base_time).to_s(:unit => :month).should match_normalized("Vor 2 Monaten")
|
55
55
|
loc_date.ago(:base_time => base_time).to_s(:unit => :year).should match_normalized("Vor 0 Jahren")
|
56
56
|
end
|
@@ -69,8 +69,8 @@ describe LocalizedDate do
|
|
69
69
|
date = Date.new(2010,10,10)
|
70
70
|
loc_date = date.localize(:de)
|
71
71
|
loc_date.until(:base_time => base_time).to_s(:unit => :second).should match_normalized("In 5572050 Sekunden")
|
72
|
-
loc_date.until(:base_time => base_time).to_s(:unit => :minute).should match_normalized("In
|
73
|
-
loc_date.until(:base_time => base_time).to_s(:unit => :hour).should match_normalized("In
|
72
|
+
loc_date.until(:base_time => base_time).to_s(:unit => :minute).should match_normalized("In 92868 Minuten")
|
73
|
+
loc_date.until(:base_time => base_time).to_s(:unit => :hour).should match_normalized("In 1548 Stunden")
|
74
74
|
loc_date.until(:base_time => base_time).to_s(:unit => :day).should match_normalized("In 64 Tagen")
|
75
75
|
loc_date.until(:base_time => base_time).to_s(:unit => :month).should match_normalized("In 2 Monaten")
|
76
76
|
loc_date.until(:base_time => base_time).to_s(:unit => :year).should match_normalized("In 0 Jahren")
|
@@ -125,7 +125,7 @@ describe LocalizedDate do
|
|
125
125
|
describe 'formatters' do
|
126
126
|
it "don't raise errors for any locale" do
|
127
127
|
TwitterCldr.supported_locales.each do |locale|
|
128
|
-
TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES.each do |type|
|
128
|
+
(TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES - [:additional]).each do |type|
|
129
129
|
lambda { Date.today.localize(locale).send(:"to_#{type}_s") }.should_not raise_error
|
130
130
|
end
|
131
131
|
end
|
@@ -32,7 +32,7 @@ describe LocalizedDateTime do
|
|
32
32
|
it "should stringify with buddhist calendar" do
|
33
33
|
# Ensure that buddhist calendar data is present in th locale.
|
34
34
|
TwitterCldr.get_locale_resource(:th, :calendars)[:th][:calendars][:buddhist].should_not(
|
35
|
-
|
35
|
+
be_nil, 'buddhist calendar is missing for :th locale (check resources/locales/th/calendars.yml)'
|
36
36
|
)
|
37
37
|
|
38
38
|
#date_time.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
|
@@ -71,11 +71,35 @@ describe LocalizedDateTime do
|
|
71
71
|
describe 'formatters' do
|
72
72
|
it "don't raise errors for any locale" do
|
73
73
|
TwitterCldr.supported_locales.each do |locale|
|
74
|
-
TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES.each do |type|
|
75
|
-
lambda {
|
74
|
+
(TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES - [:additional]).each do |type|
|
75
|
+
lambda { date_time.localize(locale).send(:"to_#{type}_s") }.should_not raise_error
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
it "don't raise errors for additional date formats" do
|
81
|
+
TwitterCldr.supported_locales.each do |locale|
|
82
|
+
fmt = TwitterCldr::Formatters::DateTimeFormatter.new(:locale => locale)
|
83
|
+
fmt.additional_format_selector.patterns.each do |pattern|
|
84
|
+
lambda { fmt.format(date_time, :type => :additional, :format => pattern.to_s) }.should_not raise_error
|
85
|
+
lambda { date_time.localize(locale).to_s(:format => pattern.to_s) }.should_not raise_error
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "#to_s" do
|
92
|
+
it "uses the default format if no :format is given" do
|
93
|
+
loc_date = date_time.localize
|
94
|
+
mock.proxy(loc_date).to_default_s
|
95
|
+
loc_date.to_s.should == "Sep 20, 1987, 10:05:00 p.m."
|
96
|
+
end
|
97
|
+
|
98
|
+
it "uses the given format instead of the default when specified" do
|
99
|
+
loc_date = date_time.localize
|
100
|
+
mock.proxy(loc_date).to_default_s.never
|
101
|
+
date_time.localize.to_s(:format => "MMMd").should == "Sep 20"
|
102
|
+
end
|
79
103
|
end
|
80
104
|
|
81
105
|
end
|
@@ -71,12 +71,12 @@ describe LocalizedNumber do
|
|
71
71
|
let(:number) { LocalizedNumber.new(10, :en) }
|
72
72
|
|
73
73
|
it 'should default precision to zero' do
|
74
|
-
mock.proxy(number.formatter).format(number.base_obj, {})
|
74
|
+
mock.proxy(number.formatter).format(number.base_obj, { :type => :decimal })
|
75
75
|
number.to_s.should == "10"
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'should not overwrite precision when explicitly passed' do
|
79
|
-
mock.proxy(number.formatter).format(number.base_obj, :precision => 2)
|
79
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 2, :type => :decimal)
|
80
80
|
number.to_s(:precision => 2).should == "10.00"
|
81
81
|
end
|
82
82
|
end
|
@@ -85,12 +85,12 @@ describe LocalizedNumber do
|
|
85
85
|
let(:number) { LocalizedNumber.new(10, :en, :type => :currency) }
|
86
86
|
|
87
87
|
it "should default to a precision of 2" do
|
88
|
-
mock.proxy(number.formatter).format(number.base_obj, :precision => 2)
|
88
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 2, :type => :currency)
|
89
89
|
number.to_s(:precision => 2).should == "$10.00"
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'should not overwrite precision when explicitly passed' do
|
93
|
-
mock.proxy(number.formatter).format(number.base_obj, :precision => 1)
|
93
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 1, :type => :currency)
|
94
94
|
number.to_s(:precision => 1).should == "$10.0"
|
95
95
|
end
|
96
96
|
end
|
@@ -99,15 +99,43 @@ describe LocalizedNumber do
|
|
99
99
|
let(:number) { LocalizedNumber.new(10, :en, :type => :percent) }
|
100
100
|
|
101
101
|
it "should default to a precision of 0" do
|
102
|
-
mock.proxy(number.formatter).format(number.base_obj, {})
|
102
|
+
mock.proxy(number.formatter).format(number.base_obj, { :type => :percent })
|
103
103
|
number.to_s.should == "10%"
|
104
104
|
end
|
105
105
|
|
106
106
|
it 'should not overwrite precision when explicitly passed' do
|
107
|
-
mock.proxy(number.formatter).format(number.base_obj, :precision => 1)
|
107
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 1, :type => :percent)
|
108
108
|
number.to_s(:precision => 1).should == "10.0%"
|
109
109
|
end
|
110
110
|
end
|
111
|
+
|
112
|
+
context 'short decimals' do
|
113
|
+
let(:number) { LocalizedNumber.new(1000, :en, :type => :short_decimal) }
|
114
|
+
|
115
|
+
it "should default to a precision of 0" do
|
116
|
+
mock.proxy(number.formatter).format(number.base_obj, { :type => :short_decimal })
|
117
|
+
number.to_s.should == "1K"
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should not overwrite precision when explicitly passed' do
|
121
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 1, :type => :short_decimal)
|
122
|
+
number.to_s(:precision => 1).should == "1.0K"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'long decimals' do
|
127
|
+
let(:number) { LocalizedNumber.new(1000, :en, :type => :long_decimal) }
|
128
|
+
|
129
|
+
it "should default to a precision of 0" do
|
130
|
+
mock.proxy(number.formatter).format(number.base_obj, { :type => :long_decimal })
|
131
|
+
number.to_s.should == "1 thousand"
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should not overwrite precision when explicitly passed' do
|
135
|
+
mock.proxy(number.formatter).format(number.base_obj, :precision => 1, :type => :long_decimal)
|
136
|
+
number.to_s(:precision => 1).should == "1.0 thousand"
|
137
|
+
end
|
138
|
+
end
|
111
139
|
end
|
112
140
|
|
113
141
|
describe '#plural_rule' do
|