twitter_cldr 1.9.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|