twitter_cldr 3.0.0.beta1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +16 -2
- data/History.txt +9 -1
- data/README.md +297 -113
- data/Rakefile +97 -17
- data/lib/twitter_cldr/collation/collator.rb +12 -3
- data/lib/twitter_cldr/collation/trie_builder.rb +1 -1
- data/lib/twitter_cldr/{tokenizers/calendars → data_readers}/additional_date_format_selector.rb +6 -4
- data/lib/twitter_cldr/data_readers/calendar_data_reader.rb +91 -0
- data/lib/twitter_cldr/data_readers/data_reader.rb +32 -0
- data/lib/twitter_cldr/data_readers/date_data_reader.rb +26 -0
- data/lib/twitter_cldr/data_readers/date_time_data_reader.rb +41 -0
- data/lib/twitter_cldr/data_readers/number_data_reader.rb +142 -0
- data/lib/twitter_cldr/data_readers/time_data_reader.rb +26 -0
- data/lib/twitter_cldr/data_readers/timespan_data_reader.rb +122 -0
- data/lib/twitter_cldr/data_readers.rb +17 -0
- data/lib/twitter_cldr/formatters/calendars/{datetime_formatter.rb → date_time_formatter.rb} +27 -42
- data/lib/twitter_cldr/formatters/calendars/timespan_formatter.rb +3 -64
- data/lib/twitter_cldr/formatters/formatter.rb +39 -0
- data/lib/twitter_cldr/formatters/list_formatter.rb +22 -12
- data/lib/twitter_cldr/formatters/numbers/abbreviated/abbreviated_number_formatter.rb +5 -26
- data/lib/twitter_cldr/formatters/numbers/currency_formatter.rb +2 -11
- data/lib/twitter_cldr/formatters/numbers/decimal_formatter.rb +4 -2
- data/lib/twitter_cldr/formatters/numbers/number_formatter.rb +45 -27
- data/lib/twitter_cldr/formatters/numbers/percent_formatter.rb +3 -13
- data/lib/twitter_cldr/formatters/numbers/rbnf/formatters.rb +224 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/post_processors/chinese.rb +122 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/rule.rb +93 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/rule_group.rb +20 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/rule_parser.rb +86 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/rule_set.rb +259 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf/substitution.rb +30 -0
- data/lib/twitter_cldr/formatters/numbers/rbnf.rb +127 -0
- data/lib/twitter_cldr/formatters/plurals/plural_formatter.rb +18 -6
- data/lib/twitter_cldr/formatters.rb +4 -5
- data/lib/twitter_cldr/localized/localized_array.rb +1 -1
- data/lib/twitter_cldr/localized/localized_date.rb +6 -3
- data/lib/twitter_cldr/localized/localized_datetime.rb +38 -15
- data/lib/twitter_cldr/localized/localized_number.rb +40 -24
- data/lib/twitter_cldr/localized/localized_object.rb +4 -4
- data/lib/twitter_cldr/localized/localized_string.rb +40 -7
- data/lib/twitter_cldr/localized/localized_time.rb +9 -2
- data/lib/twitter_cldr/localized/localized_timespan.rb +50 -5
- data/lib/twitter_cldr/normalization.rb +8 -19
- data/lib/twitter_cldr/parsers/parser.rb +50 -0
- data/lib/twitter_cldr/parsers/segmentation_parser.rb +137 -0
- data/lib/twitter_cldr/parsers/symbol_table.rb +30 -0
- data/lib/twitter_cldr/parsers/unicode_regex/character_class.rb +91 -0
- data/lib/twitter_cldr/parsers/unicode_regex/character_range.rb +39 -0
- data/lib/twitter_cldr/parsers/unicode_regex/character_set.rb +65 -0
- data/lib/twitter_cldr/parsers/unicode_regex/component.rb +50 -0
- data/lib/twitter_cldr/parsers/unicode_regex/literal.rb +83 -0
- data/lib/twitter_cldr/parsers/unicode_regex/unicode_string.rb +41 -0
- data/lib/twitter_cldr/parsers/unicode_regex_parser.rb +262 -0
- data/lib/twitter_cldr/parsers.rb +5 -1
- data/lib/twitter_cldr/resources/casefolder.rb.erb +64 -0
- data/lib/twitter_cldr/resources/casefolder_class_generator.rb +75 -0
- data/lib/twitter_cldr/resources/download.rb +10 -4
- data/lib/twitter_cldr/resources/icu_based_importer.rb +18 -0
- data/lib/twitter_cldr/resources/locales_resources_importer.rb +24 -13
- data/lib/twitter_cldr/resources/normalization_quick_check_importer.rb +1 -14
- data/lib/twitter_cldr/resources/rbnf_test_importer.rb +107 -0
- data/lib/twitter_cldr/resources/readme_renderer.rb +115 -0
- data/lib/twitter_cldr/resources/tailoring_importer.rb +2 -8
- data/lib/twitter_cldr/resources/uli/segment_exceptions_importer.rb +62 -0
- data/lib/twitter_cldr/resources/uli.rb +12 -0
- data/lib/twitter_cldr/resources/unicode_data_importer.rb +84 -14
- data/lib/twitter_cldr/resources/unicode_importer.rb +37 -0
- data/lib/twitter_cldr/resources/unicode_properties_importer.rb +79 -0
- data/lib/twitter_cldr/resources.rb +8 -1
- data/lib/twitter_cldr/shared/break_iterator.rb +213 -0
- data/lib/twitter_cldr/shared/calendar.rb +38 -14
- data/lib/twitter_cldr/shared/casefolder.rb +210 -0
- data/lib/twitter_cldr/shared/code_point.rb +103 -16
- data/lib/twitter_cldr/shared/numbering_system.rb +58 -0
- data/lib/twitter_cldr/shared/territories.rb +43 -1
- data/lib/twitter_cldr/shared/unicode_regex.rb +81 -0
- data/lib/twitter_cldr/shared.rb +13 -9
- data/lib/twitter_cldr/tokenizers/calendars/date_time_tokenizer.rb +77 -0
- data/lib/twitter_cldr/tokenizers/calendars/date_tokenizer.rb +14 -29
- data/lib/twitter_cldr/tokenizers/calendars/time_tokenizer.rb +13 -28
- data/lib/twitter_cldr/tokenizers/calendars/timespan_tokenizer.rb +11 -87
- data/lib/twitter_cldr/tokenizers/numbers/number_tokenizer.rb +16 -71
- data/lib/twitter_cldr/tokenizers/numbers/rbnf_tokenizer.rb +53 -0
- data/lib/twitter_cldr/tokenizers/pattern_tokenizer.rb +42 -0
- data/lib/twitter_cldr/tokenizers/segmentation/segmentation_tokenizer.rb +39 -0
- data/lib/twitter_cldr/tokenizers/tokenizer.rb +116 -0
- data/lib/twitter_cldr/tokenizers/unicode_regex/unicode_regex_tokenizer.rb +52 -0
- data/lib/twitter_cldr/tokenizers.rb +8 -4
- data/lib/twitter_cldr/utils/code_points.rb +1 -1
- data/lib/twitter_cldr/utils/range_set.rb +242 -0
- data/lib/twitter_cldr/utils/yaml.rb +17 -12
- data/lib/twitter_cldr/utils.rb +1 -1
- data/lib/twitter_cldr/version.rb +1 -1
- data/lib/twitter_cldr.rb +2 -1
- data/resources/custom/locales/sv/units.yml +8 -0
- data/resources/locales/af/calendars.yml +278 -224
- data/resources/locales/af/currencies.yml +954 -916
- data/resources/locales/af/languages.yml +583 -580
- data/resources/locales/af/layout.yml +5 -5
- data/resources/locales/af/lists.yml +23 -7
- data/resources/locales/af/numbers.yml +59 -54
- data/resources/locales/af/plurals.yml +2 -2
- data/resources/locales/af/rbnf.yml +261 -0
- data/resources/locales/af/territories.yml +264 -263
- data/resources/locales/ar/calendars.yml +287 -259
- data/resources/locales/ar/currencies.yml +1730 -1692
- data/resources/locales/ar/languages.yml +583 -580
- data/resources/locales/ar/layout.yml +5 -5
- data/resources/locales/ar/lists.yml +23 -7
- data/resources/locales/ar/numbers.yml +66 -61
- data/resources/locales/ar/plurals.yml +5 -8
- data/resources/locales/ar/rbnf.yml +519 -0
- data/resources/locales/ar/territories.yml +264 -263
- data/resources/locales/be/calendars.yml +238 -237
- data/resources/locales/be/currencies.yml +954 -917
- data/resources/locales/be/languages.yml +583 -580
- data/resources/locales/be/layout.yml +5 -5
- data/resources/locales/be/lists.yml +23 -7
- data/resources/locales/be/numbers.yml +62 -57
- data/resources/locales/be/plurals.yml +7 -4
- data/resources/locales/be/rbnf.yml +1288 -0
- data/resources/locales/be/territories.yml +264 -263
- data/resources/locales/bg/calendars.yml +278 -218
- data/resources/locales/bg/currencies.yml +955 -917
- data/resources/locales/bg/languages.yml +583 -580
- data/resources/locales/bg/layout.yml +5 -5
- data/resources/locales/bg/lists.yml +23 -7
- data/resources/locales/bg/numbers.yml +62 -57
- data/resources/locales/bg/plurals.yml +2 -2
- data/resources/locales/bg/rbnf.yml +280 -0
- data/resources/locales/bg/territories.yml +264 -263
- data/resources/locales/bn/calendars.yml +287 -225
- data/resources/locales/bn/currencies.yml +953 -916
- data/resources/locales/bn/languages.yml +583 -580
- data/resources/locales/bn/layout.yml +5 -5
- data/resources/locales/bn/lists.yml +23 -7
- data/resources/locales/bn/numbers.yml +62 -57
- data/resources/locales/bn/plurals.yml +2 -2
- data/resources/locales/bn/rbnf.yml +4 -0
- data/resources/locales/bn/territories.yml +264 -263
- data/resources/locales/ca/calendars.yml +278 -278
- data/resources/locales/ca/currencies.yml +953 -916
- data/resources/locales/ca/languages.yml +583 -580
- data/resources/locales/ca/layout.yml +5 -5
- data/resources/locales/ca/lists.yml +23 -7
- data/resources/locales/ca/numbers.yml +62 -57
- data/resources/locales/ca/plurals.yml +3 -2
- data/resources/locales/ca/rbnf.yml +756 -0
- data/resources/locales/ca/territories.yml +264 -263
- data/resources/locales/cs/calendars.yml +269 -262
- data/resources/locales/cs/currencies.yml +1483 -1172
- data/resources/locales/cs/languages.yml +583 -580
- data/resources/locales/cs/layout.yml +5 -5
- data/resources/locales/cs/lists.yml +23 -7
- data/resources/locales/cs/numbers.yml +64 -58
- data/resources/locales/cs/plurals.yml +6 -2
- data/resources/locales/cs/rbnf.yml +367 -0
- data/resources/locales/cs/territories.yml +264 -263
- data/resources/locales/cy/calendars.yml +275 -274
- data/resources/locales/cy/currencies.yml +1585 -1548
- data/resources/locales/cy/languages.yml +583 -580
- data/resources/locales/cy/layout.yml +5 -5
- data/resources/locales/cy/lists.yml +23 -7
- data/resources/locales/cy/numbers.yml +66 -61
- data/resources/locales/cy/plurals.yml +4 -3
- data/resources/locales/cy/rbnf.yml +298 -0
- data/resources/locales/cy/territories.yml +264 -263
- data/resources/locales/da/calendars.yml +281 -280
- data/resources/locales/da/currencies.yml +954 -916
- data/resources/locales/da/languages.yml +583 -580
- data/resources/locales/da/layout.yml +5 -5
- data/resources/locales/da/lists.yml +23 -7
- data/resources/locales/da/numbers.yml +62 -57
- data/resources/locales/da/plurals.yml +3 -2
- data/resources/locales/da/rbnf.yml +194 -0
- data/resources/locales/da/territories.yml +264 -263
- data/resources/locales/de/calendars.yml +294 -293
- data/resources/locales/de/currencies.yml +954 -916
- data/resources/locales/de/languages.yml +583 -580
- data/resources/locales/de/layout.yml +5 -5
- data/resources/locales/de/lists.yml +23 -7
- data/resources/locales/de/numbers.yml +62 -57
- data/resources/locales/de/plurals.yml +3 -2
- data/resources/locales/de/rbnf.yml +346 -0
- data/resources/locales/de/territories.yml +264 -263
- data/resources/locales/el/calendars.yml +279 -282
- data/resources/locales/el/currencies.yml +954 -916
- data/resources/locales/el/languages.yml +583 -580
- data/resources/locales/el/layout.yml +5 -5
- data/resources/locales/el/lists.yml +23 -7
- data/resources/locales/el/numbers.yml +62 -57
- data/resources/locales/el/plurals.yml +2 -2
- data/resources/locales/el/rbnf.yml +880 -0
- data/resources/locales/el/territories.yml +264 -263
- data/resources/locales/en/calendars.yml +192 -191
- data/resources/locales/en/currencies.yml +953 -915
- data/resources/locales/en/languages.yml +583 -580
- data/resources/locales/en/layout.yml +5 -5
- data/resources/locales/en/lists.yml +23 -7
- data/resources/locales/en/numbers.yml +62 -57
- data/resources/locales/en/plurals.yml +3 -2
- data/resources/locales/en/rbnf.yml +542 -0
- data/resources/locales/en/territories.yml +264 -263
- data/resources/locales/en-GB/calendars.yml +195 -194
- data/resources/locales/en-GB/currencies.yml +953 -915
- data/resources/locales/en-GB/languages.yml +583 -580
- data/resources/locales/en-GB/layout.yml +5 -5
- data/resources/locales/en-GB/lists.yml +23 -7
- data/resources/locales/en-GB/numbers.yml +62 -57
- data/resources/locales/en-GB/plurals.yml +2 -1
- data/resources/locales/en-GB/rbnf.yml +4 -0
- data/resources/locales/en-GB/territories.yml +264 -263
- data/resources/locales/es/calendars.yml +288 -238
- data/resources/locales/es/currencies.yml +953 -922
- data/resources/locales/es/languages.yml +583 -580
- data/resources/locales/es/layout.yml +5 -5
- data/resources/locales/es/lists.yml +23 -7
- data/resources/locales/es/numbers.yml +62 -57
- data/resources/locales/es/plurals.yml +2 -2
- data/resources/locales/es/rbnf.yml +913 -0
- data/resources/locales/es/territories.yml +264 -263
- data/resources/locales/eu/calendars.yml +277 -218
- data/resources/locales/eu/currencies.yml +953 -916
- data/resources/locales/eu/languages.yml +583 -580
- data/resources/locales/eu/layout.yml +5 -5
- data/resources/locales/eu/lists.yml +23 -7
- data/resources/locales/eu/numbers.yml +56 -51
- data/resources/locales/eu/plurals.yml +2 -2
- data/resources/locales/eu/rbnf.yml +4 -0
- data/resources/locales/eu/territories.yml +264 -263
- data/resources/locales/fa/calendars.yml +294 -293
- data/resources/locales/fa/currencies.yml +955 -916
- data/resources/locales/fa/languages.yml +583 -580
- data/resources/locales/fa/layout.yml +5 -5
- data/resources/locales/fa/lists.yml +23 -7
- data/resources/locales/fa/numbers.yml +62 -57
- data/resources/locales/fa/plurals.yml +2 -2
- data/resources/locales/fa/rbnf.yml +157 -0
- data/resources/locales/fa/territories.yml +264 -263
- data/resources/locales/fi/calendars.yml +284 -283
- data/resources/locales/fi/currencies.yml +953 -915
- data/resources/locales/fi/languages.yml +583 -580
- data/resources/locales/fi/layout.yml +5 -5
- data/resources/locales/fi/lists.yml +23 -7
- data/resources/locales/fi/numbers.yml +62 -57
- data/resources/locales/fi/plurals.yml +3 -2
- data/resources/locales/fi/rbnf.yml +206 -0
- data/resources/locales/fi/territories.yml +264 -263
- data/resources/locales/fil/calendars.yml +281 -230
- data/resources/locales/fil/currencies.yml +953 -916
- data/resources/locales/fil/languages.yml +583 -580
- data/resources/locales/fil/layout.yml +5 -5
- data/resources/locales/fil/lists.yml +23 -7
- data/resources/locales/fil/numbers.yml +62 -57
- data/resources/locales/fil/plurals.yml +3 -2
- data/resources/locales/fil/rbnf.yml +158 -0
- data/resources/locales/fil/territories.yml +264 -263
- data/resources/locales/fr/calendars.yml +297 -296
- data/resources/locales/fr/currencies.yml +968 -949
- data/resources/locales/fr/languages.yml +583 -580
- data/resources/locales/fr/layout.yml +5 -5
- data/resources/locales/fr/lists.yml +23 -7
- data/resources/locales/fr/numbers.yml +62 -57
- data/resources/locales/fr/plurals.yml +2 -2
- data/resources/locales/fr/rbnf.yml +621 -0
- data/resources/locales/fr/territories.yml +264 -263
- data/resources/locales/ga/calendars.yml +192 -191
- data/resources/locales/ga/currencies.yml +954 -916
- data/resources/locales/ga/languages.yml +583 -580
- data/resources/locales/ga/layout.yml +5 -5
- data/resources/locales/ga/lists.yml +23 -7
- data/resources/locales/ga/numbers.yml +62 -57
- data/resources/locales/ga/plurals.yml +4 -3
- data/resources/locales/ga/rbnf.yml +615 -0
- data/resources/locales/ga/territories.yml +264 -263
- data/resources/locales/gl/calendars.yml +283 -217
- data/resources/locales/gl/currencies.yml +953 -916
- data/resources/locales/gl/languages.yml +583 -580
- data/resources/locales/gl/layout.yml +5 -5
- data/resources/locales/gl/lists.yml +23 -7
- data/resources/locales/gl/numbers.yml +62 -57
- data/resources/locales/gl/plurals.yml +3 -2
- data/resources/locales/gl/rbnf.yml +4 -0
- data/resources/locales/gl/territories.yml +264 -263
- data/resources/locales/he/calendars.yml +248 -220
- data/resources/locales/he/currencies.yml +992 -932
- data/resources/locales/he/languages.yml +583 -580
- data/resources/locales/he/layout.yml +5 -5
- data/resources/locales/he/lists.yml +23 -7
- data/resources/locales/he/numbers.yml +64 -59
- data/resources/locales/he/plurals.yml +6 -3
- data/resources/locales/he/rbnf.yml +1029 -0
- data/resources/locales/he/territories.yml +264 -263
- data/resources/locales/hi/calendars.yml +284 -216
- data/resources/locales/hi/currencies.yml +953 -915
- data/resources/locales/hi/languages.yml +583 -580
- data/resources/locales/hi/layout.yml +5 -5
- data/resources/locales/hi/lists.yml +23 -7
- data/resources/locales/hi/numbers.yml +60 -55
- data/resources/locales/hi/plurals.yml +2 -2
- data/resources/locales/hi/rbnf.yml +430 -0
- data/resources/locales/hi/territories.yml +264 -263
- data/resources/locales/hr/calendars.yml +308 -307
- data/resources/locales/hr/currencies.yml +1248 -1504
- data/resources/locales/hr/languages.yml +583 -580
- data/resources/locales/hr/layout.yml +5 -5
- data/resources/locales/hr/lists.yml +23 -7
- data/resources/locales/hr/numbers.yml +63 -59
- data/resources/locales/hr/plurals.yml +12 -4
- data/resources/locales/hr/rbnf.yml +599 -0
- data/resources/locales/hr/territories.yml +264 -263
- data/resources/locales/hu/calendars.yml +285 -284
- data/resources/locales/hu/currencies.yml +954 -916
- data/resources/locales/hu/languages.yml +583 -580
- data/resources/locales/hu/layout.yml +5 -5
- data/resources/locales/hu/lists.yml +23 -7
- data/resources/locales/hu/numbers.yml +62 -57
- data/resources/locales/hu/plurals.yml +2 -2
- data/resources/locales/hu/rbnf.yml +363 -0
- data/resources/locales/hu/territories.yml +264 -263
- data/resources/locales/id/calendars.yml +276 -275
- data/resources/locales/id/currencies.yml +954 -916
- data/resources/locales/id/languages.yml +583 -580
- data/resources/locales/id/layout.yml +5 -5
- data/resources/locales/id/lists.yml +23 -7
- data/resources/locales/id/numbers.yml +61 -56
- data/resources/locales/id/plurals.yml +2 -2
- data/resources/locales/id/rbnf.yml +121 -0
- data/resources/locales/id/territories.yml +264 -263
- data/resources/locales/is/calendars.yml +281 -242
- data/resources/locales/is/currencies.yml +954 -916
- data/resources/locales/is/languages.yml +583 -580
- data/resources/locales/is/layout.yml +5 -5
- data/resources/locales/is/lists.yml +23 -7
- data/resources/locales/is/numbers.yml +62 -57
- data/resources/locales/is/plurals.yml +5 -2
- data/resources/locales/is/rbnf.yml +326 -0
- data/resources/locales/is/territories.yml +264 -263
- data/resources/locales/it/calendars.yml +275 -260
- data/resources/locales/it/currencies.yml +953 -920
- data/resources/locales/it/languages.yml +583 -580
- data/resources/locales/it/layout.yml +5 -5
- data/resources/locales/it/lists.yml +23 -7
- data/resources/locales/it/numbers.yml +59 -54
- data/resources/locales/it/plurals.yml +3 -2
- data/resources/locales/it/rbnf.yml +1189 -0
- data/resources/locales/it/territories.yml +264 -263
- data/resources/locales/ja/calendars.yml +269 -207
- data/resources/locales/ja/currencies.yml +953 -915
- data/resources/locales/ja/languages.yml +583 -580
- data/resources/locales/ja/layout.yml +5 -5
- data/resources/locales/ja/lists.yml +23 -7
- data/resources/locales/ja/numbers.yml +62 -57
- data/resources/locales/ja/plurals.yml +2 -2
- data/resources/locales/ja/rbnf.yml +209 -0
- data/resources/locales/ja/territories.yml +264 -263
- data/resources/locales/ko/calendars.yml +246 -213
- data/resources/locales/ko/currencies.yml +953 -915
- data/resources/locales/ko/languages.yml +583 -580
- data/resources/locales/ko/layout.yml +5 -5
- data/resources/locales/ko/lists.yml +23 -7
- data/resources/locales/ko/numbers.yml +60 -55
- data/resources/locales/ko/plurals.yml +2 -2
- data/resources/locales/ko/rbnf.yml +722 -0
- data/resources/locales/ko/territories.yml +264 -263
- data/resources/locales/lv/calendars.yml +286 -285
- data/resources/locales/lv/currencies.yml +1122 -1084
- data/resources/locales/lv/languages.yml +583 -580
- data/resources/locales/lv/layout.yml +5 -5
- data/resources/locales/lv/lists.yml +23 -7
- data/resources/locales/lv/numbers.yml +63 -58
- data/resources/locales/lv/plurals.yml +11 -3
- data/resources/locales/lv/rbnf.yml +238 -0
- data/resources/locales/lv/territories.yml +264 -263
- data/resources/locales/ms/calendars.yml +280 -279
- data/resources/locales/ms/currencies.yml +954 -916
- data/resources/locales/ms/languages.yml +583 -580
- data/resources/locales/ms/layout.yml +5 -5
- data/resources/locales/ms/lists.yml +23 -7
- data/resources/locales/ms/numbers.yml +62 -57
- data/resources/locales/ms/plurals.yml +2 -2
- data/resources/locales/ms/rbnf.yml +130 -0
- data/resources/locales/ms/territories.yml +264 -263
- data/resources/locales/nb/calendars.yml +284 -283
- data/resources/locales/nb/currencies.yml +958 -916
- data/resources/locales/nb/languages.yml +583 -580
- data/resources/locales/nb/layout.yml +5 -5
- data/resources/locales/nb/lists.yml +23 -7
- data/resources/locales/nb/numbers.yml +62 -57
- data/resources/locales/nb/plurals.yml +2 -2
- data/resources/locales/nb/rbnf.yml +191 -0
- data/resources/locales/nb/territories.yml +264 -263
- data/resources/locales/nl/calendars.yml +285 -284
- data/resources/locales/nl/currencies.yml +953 -917
- data/resources/locales/nl/languages.yml +583 -580
- data/resources/locales/nl/layout.yml +5 -5
- data/resources/locales/nl/lists.yml +23 -7
- data/resources/locales/nl/numbers.yml +62 -57
- data/resources/locales/nl/plurals.yml +3 -2
- data/resources/locales/nl/rbnf.yml +320 -0
- data/resources/locales/nl/territories.yml +264 -263
- data/resources/locales/pl/calendars.yml +288 -287
- data/resources/locales/pl/currencies.yml +1326 -1284
- data/resources/locales/pl/languages.yml +583 -580
- data/resources/locales/pl/layout.yml +5 -5
- data/resources/locales/pl/lists.yml +23 -7
- data/resources/locales/pl/numbers.yml +64 -59
- data/resources/locales/pl/plurals.yml +11 -4
- data/resources/locales/pl/rbnf.yml +410 -0
- data/resources/locales/pl/territories.yml +264 -263
- data/resources/locales/pt/calendars.yml +290 -289
- data/resources/locales/pt/currencies.yml +954 -916
- data/resources/locales/pt/languages.yml +583 -580
- data/resources/locales/pt/layout.yml +5 -5
- data/resources/locales/pt/lists.yml +23 -7
- data/resources/locales/pt/numbers.yml +62 -57
- data/resources/locales/pt/plurals.yml +4 -2
- data/resources/locales/pt/rbnf.yml +586 -0
- data/resources/locales/pt/territories.yml +264 -263
- data/resources/locales/ro/calendars.yml +284 -283
- data/resources/locales/ro/currencies.yml +1170 -1132
- data/resources/locales/ro/languages.yml +583 -580
- data/resources/locales/ro/layout.yml +5 -5
- data/resources/locales/ro/lists.yml +23 -7
- data/resources/locales/ro/numbers.yml +63 -58
- data/resources/locales/ro/plurals.yml +5 -2
- data/resources/locales/ro/rbnf.yml +250 -0
- data/resources/locales/ro/territories.yml +264 -263
- data/resources/locales/ru/calendars.yml +282 -281
- data/resources/locales/ru/currencies.yml +1118 -1247
- data/resources/locales/ru/languages.yml +583 -580
- data/resources/locales/ru/layout.yml +5 -5
- data/resources/locales/ru/lists.yml +23 -7
- data/resources/locales/ru/numbers.yml +63 -59
- data/resources/locales/ru/plurals.yml +8 -4
- data/resources/locales/ru/rbnf.yml +385 -0
- data/resources/locales/ru/territories.yml +264 -263
- data/resources/locales/sk/calendars.yml +254 -251
- data/resources/locales/sk/currencies.yml +1174 -1008
- data/resources/locales/sk/languages.yml +583 -580
- data/resources/locales/sk/layout.yml +5 -5
- data/resources/locales/sk/lists.yml +23 -7
- data/resources/locales/sk/numbers.yml +64 -58
- data/resources/locales/sk/plurals.yml +6 -2
- data/resources/locales/sk/rbnf.yml +304 -0
- data/resources/locales/sk/territories.yml +264 -263
- data/resources/locales/sq/calendars.yml +283 -206
- data/resources/locales/sq/currencies.yml +954 -916
- data/resources/locales/sq/languages.yml +583 -580
- data/resources/locales/sq/layout.yml +5 -5
- data/resources/locales/sq/lists.yml +23 -7
- data/resources/locales/sq/numbers.yml +62 -57
- data/resources/locales/sq/plurals.yml +2 -2
- data/resources/locales/sq/rbnf.yml +181 -0
- data/resources/locales/sq/territories.yml +264 -263
- data/resources/locales/sr/calendars.yml +290 -289
- data/resources/locales/sr/currencies.yml +1251 -1508
- data/resources/locales/sr/languages.yml +583 -580
- data/resources/locales/sr/layout.yml +5 -5
- data/resources/locales/sr/lists.yml +23 -7
- data/resources/locales/sr/numbers.yml +62 -58
- data/resources/locales/sr/plurals.yml +12 -4
- data/resources/locales/sr/rbnf.yml +429 -0
- data/resources/locales/sr/territories.yml +264 -263
- data/resources/locales/sv/calendars.yml +290 -289
- data/resources/locales/sv/currencies.yml +960 -930
- data/resources/locales/sv/languages.yml +583 -580
- data/resources/locales/sv/layout.yml +5 -5
- data/resources/locales/sv/lists.yml +23 -7
- data/resources/locales/sv/numbers.yml +63 -58
- data/resources/locales/sv/plurals.yml +3 -2
- data/resources/locales/sv/rbnf.yml +692 -0
- data/resources/locales/sv/territories.yml +264 -263
- data/resources/locales/ta/calendars.yml +281 -266
- data/resources/locales/ta/currencies.yml +953 -915
- data/resources/locales/ta/languages.yml +583 -580
- data/resources/locales/ta/layout.yml +5 -5
- data/resources/locales/ta/lists.yml +23 -7
- data/resources/locales/ta/numbers.yml +62 -57
- data/resources/locales/ta/plurals.yml +2 -2
- data/resources/locales/ta/rbnf.yml +241 -0
- data/resources/locales/ta/territories.yml +264 -263
- data/resources/locales/th/calendars.yml +278 -289
- data/resources/locales/th/currencies.yml +953 -915
- data/resources/locales/th/languages.yml +583 -580
- data/resources/locales/th/layout.yml +5 -5
- data/resources/locales/th/lists.yml +23 -7
- data/resources/locales/th/numbers.yml +62 -57
- data/resources/locales/th/plurals.yml +2 -2
- data/resources/locales/th/rbnf.yml +119 -0
- data/resources/locales/th/territories.yml +264 -263
- data/resources/locales/tr/calendars.yml +287 -286
- data/resources/locales/tr/currencies.yml +953 -916
- data/resources/locales/tr/languages.yml +583 -580
- data/resources/locales/tr/layout.yml +5 -5
- data/resources/locales/tr/lists.yml +23 -7
- data/resources/locales/tr/numbers.yml +61 -56
- data/resources/locales/tr/plurals.yml +2 -2
- data/resources/locales/tr/rbnf.yml +277 -0
- data/resources/locales/tr/territories.yml +264 -263
- data/resources/locales/uk/calendars.yml +286 -252
- data/resources/locales/uk/currencies.yml +1311 -1070
- data/resources/locales/uk/languages.yml +583 -580
- data/resources/locales/uk/layout.yml +5 -5
- data/resources/locales/uk/lists.yml +23 -7
- data/resources/locales/uk/numbers.yml +64 -59
- data/resources/locales/uk/plurals.yml +10 -4
- data/resources/locales/uk/rbnf.yml +430 -0
- data/resources/locales/uk/territories.yml +264 -263
- data/resources/locales/ur/calendars.yml +267 -228
- data/resources/locales/ur/currencies.yml +954 -916
- data/resources/locales/ur/languages.yml +583 -580
- data/resources/locales/ur/layout.yml +5 -5
- data/resources/locales/ur/lists.yml +23 -7
- data/resources/locales/ur/numbers.yml +62 -57
- data/resources/locales/ur/plurals.yml +3 -2
- data/resources/locales/ur/rbnf.yml +4 -0
- data/resources/locales/ur/territories.yml +264 -263
- data/resources/locales/vi/calendars.yml +256 -236
- data/resources/locales/vi/currencies.yml +953 -915
- data/resources/locales/vi/languages.yml +583 -580
- data/resources/locales/vi/layout.yml +5 -5
- data/resources/locales/vi/lists.yml +23 -7
- data/resources/locales/vi/numbers.yml +62 -57
- data/resources/locales/vi/plurals.yml +2 -2
- data/resources/locales/vi/rbnf.yml +164 -0
- data/resources/locales/vi/territories.yml +264 -263
- data/resources/locales/zh/calendars.yml +266 -265
- data/resources/locales/zh/currencies.yml +953 -915
- data/resources/locales/zh/languages.yml +583 -580
- data/resources/locales/zh/layout.yml +5 -5
- data/resources/locales/zh/lists.yml +23 -7
- data/resources/locales/zh/numbers.yml +62 -57
- data/resources/locales/zh/plurals.yml +2 -2
- data/resources/locales/zh/rbnf.yml +689 -0
- data/resources/locales/zh/territories.yml +264 -263
- data/resources/locales/zh-Hant/calendars.yml +266 -265
- data/resources/locales/zh-Hant/currencies.yml +955 -915
- data/resources/locales/zh-Hant/languages.yml +583 -580
- data/resources/locales/zh-Hant/layout.yml +5 -5
- data/resources/locales/zh-Hant/lists.yml +23 -7
- data/resources/locales/zh-Hant/numbers.yml +62 -57
- data/resources/locales/zh-Hant/plurals.yml +2 -2
- data/resources/locales/zh-Hant/rbnf.yml +647 -0
- data/resources/locales/zh-Hant/territories.yml +264 -263
- data/resources/shared/currency_digits_and_rounding.yml +67 -64
- data/resources/shared/numbering_systems.yml +176 -0
- data/resources/shared/rbnf_root.yml +1573 -0
- data/resources/shared/segments/segments_root.yml +728 -0
- data/resources/shared/segments/tailorings/en.yml +8 -0
- data/resources/uli/segments/de.yml +128 -0
- data/resources/uli/segments/en.yml +154 -0
- data/resources/uli/segments/es.yml +112 -0
- data/resources/uli/segments/fr.yml +47 -0
- data/resources/uli/segments/it.yml +37 -0
- data/resources/uli/segments/pt.yml +173 -0
- data/resources/uli/segments/ru.yml +10 -0
- data/resources/unicode_data/casefolding.yml +4765 -0
- data/resources/unicode_data/indices/bidi_class.yml +4572 -0
- data/resources/unicode_data/indices/bidi_mirrored.yml +3087 -0
- data/resources/unicode_data/indices/category.yml +10918 -0
- data/resources/unicode_data/indices/keys.yml +101 -0
- data/resources/unicode_data/properties/line_break.yml +9269 -0
- data/resources/unicode_data/properties/sentence_break.yml +8067 -0
- data/resources/unicode_data/properties/word_break.yml +3001 -0
- data/spec/collation/collation_spec.rb +2 -1
- data/spec/collation/collator_spec.rb +4 -3
- data/spec/collation/tailoring_spec.rb +2 -2
- data/spec/collation/tailoring_tests/he.txt +5 -2
- data/spec/{tokenizers/calendars → data_readers}/additional_date_format_selector_spec.rb +13 -13
- data/spec/data_readers/date_time_data_reader_spec.rb +26 -0
- data/spec/data_readers/number_data_reader_spec.rb +18 -0
- data/spec/data_readers/timespan_data_reader.rb +22 -0
- data/spec/formatters/calendars/datetime_formatter_spec.rb +18 -22
- data/spec/formatters/list_formatter_spec.rb +16 -87
- data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +15 -59
- data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +32 -17
- data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +33 -17
- data/spec/formatters/numbers/currency_formatter_spec.rb +18 -13
- data/spec/formatters/numbers/decimal_formatter_spec.rb +16 -18
- data/spec/formatters/numbers/number_formatter_spec.rb +40 -31
- data/spec/formatters/numbers/percent_formatter_spec.rb +14 -6
- data/spec/formatters/numbers/rbnf/allowed_failures.yml +74 -0
- data/spec/formatters/numbers/rbnf/locales/af/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/ar/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/be/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/bg/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/bn/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/ca/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/cs/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/cy/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/da/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/de/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/el/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/en/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/en-GB/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/es/rbnf_test.yml +1642 -0
- data/spec/formatters/numbers/rbnf/locales/eu/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/fa/rbnf_test.yml +589 -0
- data/spec/formatters/numbers/rbnf/locales/fi/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/fil/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/fr/rbnf_test.yml +1408 -0
- data/spec/formatters/numbers/rbnf/locales/ga/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/gl/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/he/rbnf_test.yml +1057 -0
- data/spec/formatters/numbers/rbnf/locales/hi/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/hr/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/hu/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/id/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/is/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/it/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/ja/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/ko/rbnf_test.yml +1408 -0
- data/spec/formatters/numbers/rbnf/locales/lv/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/ms/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/nb/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/nl/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/pl/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/pt/rbnf_test.yml +1174 -0
- data/spec/formatters/numbers/rbnf/locales/ro/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/ru/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/sk/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/sq/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/sr/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/sv/rbnf_test.yml +1876 -0
- data/spec/formatters/numbers/rbnf/locales/ta/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/th/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/tr/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/uk/rbnf_test.yml +823 -0
- data/spec/formatters/numbers/rbnf/locales/ur/rbnf_test.yml +1291 -0
- data/spec/formatters/numbers/rbnf/locales/vi/rbnf_test.yml +706 -0
- data/spec/formatters/numbers/rbnf/locales/zh/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/locales/zh-Hant/rbnf_test.yml +940 -0
- data/spec/formatters/numbers/rbnf/rbnf_spec.rb +98 -0
- data/spec/formatters/plurals/plural_formatter_spec.rb +4 -4
- data/spec/formatters/plurals/rules_spec.rb +5 -5
- data/spec/localized/localized_date_spec.rb +1 -1
- data/spec/localized/localized_datetime_spec.rb +8 -13
- data/spec/localized/localized_number_spec.rb +17 -32
- data/spec/localized/localized_object_spec.rb +0 -5
- data/spec/localized/localized_string_spec.rb +40 -2
- data/spec/localized/localized_time_spec.rb +3 -6
- data/spec/localized/localized_timespan_spec.rb +144 -0
- data/spec/normalization_spec.rb +12 -12
- data/spec/parsers/number_parser_spec.rb +5 -5
- data/spec/parsers/parser_spec.rb +60 -0
- data/spec/parsers/segmentation_parser_spec.rb +96 -0
- data/spec/parsers/symbol_table_spec.rb +32 -0
- data/spec/parsers/unicode_regex/character_class_spec.rb +117 -0
- data/spec/parsers/unicode_regex/character_range_spec.rb +21 -0
- data/spec/parsers/unicode_regex/character_set_spec.rb +36 -0
- data/spec/parsers/unicode_regex/literal_spec.rb +34 -0
- data/spec/parsers/unicode_regex/unicode_string_spec.rb +22 -0
- data/spec/parsers/unicode_regex_parser_spec.rb +86 -0
- data/spec/readme_spec.rb +8 -269
- data/spec/shared/break_iterator_spec.rb +72 -0
- data/spec/shared/calendar_spec.rb +5 -4
- data/spec/shared/casefolder_spec.rb +30 -0
- data/spec/shared/casefolding.txt +251 -0
- data/spec/shared/casefolding_expected.txt +251 -0
- data/spec/shared/code_point_spec.rb +44 -14
- data/spec/shared/numbering_system_spec.rb +41 -0
- data/spec/shared/territories_spec.rb +14 -6
- data/spec/shared/unicode_regex_spec.rb +203 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/tokenizers/calendars/date_tokenizer_spec.rb +26 -30
- data/spec/tokenizers/calendars/datetime_tokenizer_spec.rb +11 -90
- data/spec/tokenizers/calendars/time_tokenizer_spec.rb +5 -5
- data/spec/tokenizers/calendars/timespan_tokenizer_spec.rb +17 -7
- data/spec/tokenizers/numbers/number_tokenizer_spec.rb +28 -27
- data/spec/tokenizers/segmentation/segmentation_tokenizer_spec.rb +40 -0
- data/spec/tokenizers/unicode_regex/unicode_regex_tokenizer_spec.rb +190 -0
- data/spec/utils/range_set_spec.rb +171 -0
- data/spec/utils/yaml/yaml_spec.rb +62 -51
- data/twitter_cldr.gemspec +1 -1
- metadata +199 -30
- data/lib/twitter_cldr/formatters/base.rb +0 -47
- data/lib/twitter_cldr/formatters/calendars/date_formatter.rb +0 -19
- data/lib/twitter_cldr/formatters/calendars/time_formatter.rb +0 -19
- data/lib/twitter_cldr/normalization/base.rb +0 -37
- data/lib/twitter_cldr/normalization/hangul.rb +0 -79
- data/lib/twitter_cldr/normalization/nfc.rb +0 -24
- data/lib/twitter_cldr/normalization/nfd.rb +0 -26
- data/lib/twitter_cldr/normalization/nfkc.rb +0 -114
- data/lib/twitter_cldr/normalization/nfkd.rb +0 -120
- data/lib/twitter_cldr/normalization/quick_check.rb +0 -41
- data/lib/twitter_cldr/tokenizers/base.rb +0 -169
- data/lib/twitter_cldr/tokenizers/calendars/datetime_tokenizer.rb +0 -131
- data/lib/twitter_cldr/utils/territories.rb +0 -56
- data/spec/formatters/base_spec.rb +0 -18
- data/spec/formatters/calendars/timespan_formatter_spec.rb +0 -112
- data/spec/normalization/NormalizationTestShort.txt +0 -602
- data/spec/normalization/base_spec.rb +0 -16
- data/spec/normalization/hangul_spec.rb +0 -42
- data/spec/normalization/normalization_spec.rb +0 -113
- data/spec/tokenizers/base_spec.rb +0 -259
- data/spec/utils/territories_spec.rb +0 -16
@@ -0,0 +1,251 @@
|
|
1
|
+
dreiländereck
|
2
|
+
aus wikipedia, der freien enzyklopädie
|
3
|
+
wechseln zu: navigation, suche
|
4
|
+
dreiländereck d/f/ch am rheinhafen von basel
|
5
|
+
vaalserberg: dreiländereck (d/nl/b)
|
6
|
+
sevening: europadenkmal (d/b/l)
|
7
|
+
denkmal für das „schengener abkommen“ in schengen, luxemburg (d/l/f)
|
8
|
+
zittau: dreiländereck (d/cz/pl)
|
9
|
+
treriksröset: dreiländereck fin/n/s
|
10
|
+
berg ofen: grenzstein dreiländereck i/slo/a
|
11
|
+
monte roraima: dreiländereck brasilien, guyana, venezuela
|
12
|
+
markstein auf der argentinischen seite des dreiländerecks ra/br/py
|
13
|
+
|
14
|
+
ein dreiländereck – auch länderdreieck genannt – ist der geografische punkt, wo drei gleichrangige grenzen und auch drei gleich geartete territorien (länder, staaten, bundesländer) aufeinander treffen. bekannt werden solche dreiländerecke meist, wenn sie schon längere zeit bestehen oder aber, wenn drei kulturen aufeinander treffen.
|
15
|
+
|
16
|
+
meist ist diese stelle durch die jeweiligen staatsflaggen oder monumente markiert.
|
17
|
+
|
18
|
+
von den zurzeit 195 staaten auf der erde haben 134 einen solchen grenzpunkt. insgesamt existieren 157 dreiländerecke auf der erde. die häufigkeit des vorkommens von dreiländerecken ist abhängig von der anzahl der nachbarn, aber auch von der anzahl der seegrenzen. so haben inselnationen wie japan keines, wie auch staaten wie portugal oder dänemark, die nur ein nachbarland haben bzw. vollständig von einem staat umgeben sind (wie z. b. san marino). auch sind zwei nachbarländer kein hinreichendes kriterium, wie es z. b. bzgl. der usa in nordamerika ist. auch die fläche eines staats hat nur bedingt mit der anzahl an dreiländerecken zu tun: der staat mit den meisten ist china mit 15, während russland, der flächenmässig grösste staat der welt, nur acht hat.
|
19
|
+
|
20
|
+
österreich hat an seinen grenzen neun dreiländerecke (und ist damit der staat mit den meisten dreiländerecken innerhalb europas), deutschland sieben, die schweiz sechs und liechtenstein weist zwei dreiländerecke auf.
|
21
|
+
inhaltsverzeichnis
|
22
|
+
[verbergen]
|
23
|
+
|
24
|
+
* 1 dreiländerecke weltweit
|
25
|
+
o 1.1 europa
|
26
|
+
o 1.2 mittel- und südamerika
|
27
|
+
o 1.3 nordamerika
|
28
|
+
o 1.4 afrika
|
29
|
+
o 1.5 asien
|
30
|
+
* 2 ehemalige dreiländerecke
|
31
|
+
o 2.1 europa
|
32
|
+
* 3 siehe auch
|
33
|
+
* 4 weblinks
|
34
|
+
|
35
|
+
dreiländerecke weltweit [bearbeiten]
|
36
|
+
|
37
|
+
alphabetische liste von allen 46 internationalen dreiländerecken in europa:
|
38
|
+
|
39
|
+
europa [bearbeiten]
|
40
|
+
|
41
|
+
* albanien – griechenland – mazedonien, am prespa-see
|
42
|
+
* albanien – mazedonien – kosovo, südlich von prizren in kosovo
|
43
|
+
* albanien – montenegro – kosovo, nördlich von bajram curri in albanien
|
44
|
+
* andorra – frankreich – spanien (osteck), in den pyrenäen
|
45
|
+
* andorra – frankreich – spanien (westeck), in den pyrenäen
|
46
|
+
* belgien – deutschland – luxemburg, am europadenkmal an der our bei sevenig
|
47
|
+
* belgien – deutschland – niederlande, auf dem vaalserberg westlich von aachen (war zeitweilig auch wegen neutral-moresnet ein vierländereck)
|
48
|
+
* belgien – frankreich – luxemburg, bei longwy, pétange, aubange
|
49
|
+
* bosnien-herzegowina – kroatien – montenegro, nordöstlich von gruda in kroatien
|
50
|
+
* bosnien-herzegowina – kroatien – serbien, westlich von omjelovo in bosnien-herzegowina
|
51
|
+
* bosnien-herzegowina – montenegro – serbien, westlich von priboj in serbien
|
52
|
+
* bulgarien – griechenland – mazedonien, westlich von petritsch in bulgarien
|
53
|
+
* bulgarien – griechenland – türkei, bei der griechischen gemeinde trigono, westlich des türkischen edirne
|
54
|
+
* bulgarien – mazedonien – serbien, westlich von kjustendil in bulgarien
|
55
|
+
* bulgarien – rumänien – serbien, östlich von negotin in serbien
|
56
|
+
* deutschland – frankreich – luxemburg, bei perl, apach, schengen in der mosel
|
57
|
+
* deutschland – frankreich – schweiz, bei basel, hüningen und weil am rhein im rhein
|
58
|
+
* deutschland – polen – tschechien, südöstlich von zittau
|
59
|
+
* deutschland – schweiz – österreich, im bodensee
|
60
|
+
* deutschland – tschechien – österreich, am plöckenstein (1320 m), böhmerwald
|
61
|
+
* estland – lettland – russland, westlich von stuborova in lettland
|
62
|
+
* finnland – norwegen – russland, nordöstlich von ivalo in finnland
|
63
|
+
* finnland – norwegen – schweden, schwedisch treriksröset, norwegisch treriksrøysa, finnisch kolmen valtakunnan rajapyykki, westlich von kilpisjärvi in finnland
|
64
|
+
* frankreich – italien – schweiz, auf der bergspitze des mont dolent (3820 m) nahe dem mont blanc
|
65
|
+
* italien – schweiz – österreich, nähe reschenpass an der „dreiländerecke“ (2.179 m)
|
66
|
+
* italien – slowenien – österreich, bei arnoldstein auf dem gipfel des ofen (slow. peč) alias dreiländereck
|
67
|
+
* kroatien – serbien – ungarn, nordöstlich von gruda in kroatien
|
68
|
+
* kroatien – slowenien – ungarn, südöstlich von letenye in ungarn
|
69
|
+
* lettland – litauen – weissrussland, nordöstlich von visaginas in litauen
|
70
|
+
* lettland – russland – weissrussland, südöstlich von suskova in lettland
|
71
|
+
* liechtenstein – schweiz – österreich (nordeck), im rhein bei sennwald
|
72
|
+
* liechtenstein – schweiz – österreich (südeck), im rätikon am naafkopf (2571 m)
|
73
|
+
* litauen – polen – russland (kaliningrad), westlich von wizajny in polen
|
74
|
+
* litauen – polen – weissrussland, westlich von druskininkai in litauen
|
75
|
+
* moldawien – rumänien – ukraine (nordeck), nordöstlich von dărăbani in rumänien
|
76
|
+
* moldawien – rumänien – ukraine (südeck), östlich von galaţi in rumänien
|
77
|
+
* polen – slowakei – tschechien, bei hrčava in tschechien und jaworzynka in polen
|
78
|
+
* polen – slowakei – ukraine, nordöstlich von nova sedlica in slowakei
|
79
|
+
* polen – ukraine – weissrussland, südöstlich von wlodawa in polen
|
80
|
+
* rumänien – serbien – ungarn, südlich von kübekhaza in ungarn
|
81
|
+
* rumänien – ukraine – ungarn, nordöstlich von bercu in rumänien
|
82
|
+
* russland – ukraine – weissrussland, südöstlich von homel in weissrussland
|
83
|
+
* slowakei – ukraine – ungarn, bei zahony in ungarn
|
84
|
+
* slowakei – ungarn – österreich, bei deutsch jahrndorf in österreich, rajka in ungarn
|
85
|
+
* slowakei – tschechien – österreich, bei hohenau an der march in österreich
|
86
|
+
* slowenien – österreich – ungarn, östlich von tauka in österreich
|
87
|
+
|
88
|
+
die nachfolgende auflistung zeigt eine kleine auswahl existierender dreiländerecke in anderen kontinenten:
|
89
|
+
|
90
|
+
mittel- und südamerika [bearbeiten]
|
91
|
+
|
92
|
+
in mittelamerika existieren zwei dreiländerecke und in südamerika 13:
|
93
|
+
|
94
|
+
* argentinien – bolivien – chile
|
95
|
+
* argentinien – bolivien – paraguay
|
96
|
+
* argentinien – brasilien – paraguay: hito tres fronteras, bekannt durch die iguaçu-wasserfälle
|
97
|
+
* argentinien – brasilien – uruguay
|
98
|
+
* mittelamerika: belize – guatemala – mexiko
|
99
|
+
* bolivien – brasilien – paraguay
|
100
|
+
* bolivien – brasilien – peru
|
101
|
+
* bolivien – chile – peru
|
102
|
+
* brasilien – kolumbien – peru: tres fronteras, im amazonas-regenwald mit einer dreistadt tabatinga, leticia, santa rosa mit mehr als 100.000 einwohnern
|
103
|
+
* brasilien – kolumbien – venezuela
|
104
|
+
* brasilien – französisch-guayana – surinam
|
105
|
+
* brasilien – guyana – surinam
|
106
|
+
* brasilien – guyana – venezuela: auf dem berg monte roraima
|
107
|
+
* kolumbien – ecuador – peru
|
108
|
+
* mittelamerika: guatemala – honduras – el salvador
|
109
|
+
|
110
|
+
nordamerika [bearbeiten]
|
111
|
+
|
112
|
+
da mit kanada und den vereinigten staaten nur zwei staaten in nordamerika neben einigen französischen inseln an der kanadischen ostküste existieren, kann es dort keine dreiländerecke geben.
|
113
|
+
|
114
|
+
die bundesstaaten der vereinigten staaten bilden 38 tri-state areas (dreistaatengebiete).
|
115
|
+
|
116
|
+
afrika [bearbeiten]
|
117
|
+
|
118
|
+
in afrika existieren 55 dreiländerecke:
|
119
|
+
|
120
|
+
* südafrika – botswana – namibia
|
121
|
+
* südafrika – botswana – simbabwe
|
122
|
+
* südafrika – mosambik – simbabwe (siehe crook’s corner)
|
123
|
+
* südafrika – mosambik – swasiland (nord)
|
124
|
+
* südafrika – mosambik – swasiland (süd)
|
125
|
+
* algerien – libyen – niger
|
126
|
+
* algerien – libyen – tunesien
|
127
|
+
* algerien – mali – mauretanien
|
128
|
+
* algerien – mali – niger
|
129
|
+
* algerien – marokko – west-sahara
|
130
|
+
* algerien – mauretanien – west-sahara
|
131
|
+
* angola – namibia – sambia
|
132
|
+
* angola – republik kongo – demokratische republik kongo: cabinda
|
133
|
+
* angola – demokratische republik kongo – sambia
|
134
|
+
* benin – burkina faso – niger
|
135
|
+
* benin – burkina faso – togo
|
136
|
+
* benin – niger – nigeria
|
137
|
+
* botswana – sambia – simbabwe
|
138
|
+
* burkina faso – elfenbeinküste – ghana
|
139
|
+
* burkina faso – elfenbeinküste – mali
|
140
|
+
* burkina faso – ghana – togo
|
141
|
+
* burkina faso – mali – niger
|
142
|
+
* burundi – demokratische republik kongo – ruanda
|
143
|
+
* burundi – ruanda – tansania
|
144
|
+
* kamerun – gabun – äquatorial-guinea
|
145
|
+
* kamerun – gabun – republik kongo
|
146
|
+
* kamerun – nigeria – tschad
|
147
|
+
* kamerun – zentralafrikanische republik – republik kongo
|
148
|
+
* kamerun – zentralafrikanische republik – tschad
|
149
|
+
* elfenbeinküste – guinea – liberia
|
150
|
+
* elfenbeinküste – guinea – mali
|
151
|
+
* dschibuti – eritrea – äthiopien
|
152
|
+
* dschibuti – äthiopien – somalia
|
153
|
+
* ägypten – libyen – sudan
|
154
|
+
* eritrea – äthiopien – sudan
|
155
|
+
* äthiopien – kenia – somalia
|
156
|
+
* äthiopien – kenia – sudan
|
157
|
+
* guinea – guinea-bissau – senegal
|
158
|
+
* guinea – liberia – sierra leone
|
159
|
+
* kenia – uganda – sudan
|
160
|
+
* kenia – uganda – tansania
|
161
|
+
* libyen – niger – tschad
|
162
|
+
* libyen – sudan – tschad
|
163
|
+
* malawi – mosambik – tansania
|
164
|
+
* malawi – mosambik – sambia
|
165
|
+
* mosambik – tansania – sambia
|
166
|
+
* mosambik – sambia – simbabwe: bei zumbo
|
167
|
+
* mali – mauretanien – senegal
|
168
|
+
* niger – nigeria – tschad
|
169
|
+
* uganda – demokratische republik kongo – ruanda
|
170
|
+
* uganda – demokratische republik kongo – sudan
|
171
|
+
* uganda – ruanda – tansania
|
172
|
+
* zentralafrikanische republik – republik kongo – demokratische republik kongo
|
173
|
+
* zentralafrikanische republik – demokratische republik kongo – sudan
|
174
|
+
* demokratische republik kongo – tansania – sambia
|
175
|
+
|
176
|
+
asien [bearbeiten]
|
177
|
+
|
178
|
+
in asien existieren 42 dreiländerecke:
|
179
|
+
|
180
|
+
* afghanistan – iran – pakistan
|
181
|
+
* afghanistan – iran – turkmenistan
|
182
|
+
* afghanistan – vr china – pakistan
|
183
|
+
* afghanistan – vr china – tadschikistan
|
184
|
+
* afghanistan – usbekistan – tadschikistan
|
185
|
+
* afghanistan – usbekistan – turkmenistan
|
186
|
+
* saudi-arabien – vereinigte arabische emirate – oman: umm az zamul
|
187
|
+
* saudi-arabien – irak – jordanien
|
188
|
+
* saudi-arabien – irak – kuwait
|
189
|
+
* saudi-arabien – oman – jemen
|
190
|
+
* armenien – aserbaidschan – georgien
|
191
|
+
|
192
|
+
mekong und goldenes dreieck
|
193
|
+
|
194
|
+
* armenien – aserbaidschan – iran
|
195
|
+
* armenien – aserbaidschan – iran
|
196
|
+
* armenien – aserbaidschan – türkei
|
197
|
+
* gaza-streifen – ägypten – israel
|
198
|
+
* bangladesch – burma – indien
|
199
|
+
* bhutan – vr china – indien (osten)
|
200
|
+
* bhutan – vr china – indien (westen)
|
201
|
+
* burma – vr china – indien
|
202
|
+
* burma – vr china – laos
|
203
|
+
* burma – laos – thailand: goldenes dreieck
|
204
|
+
* kambodscha – laos – thailand
|
205
|
+
* kambodscha – laos – vietnam
|
206
|
+
* vr china – indien – nepal (osten)
|
207
|
+
* vr china – indien – nepal (westen)
|
208
|
+
* vr china – indien – pakistan
|
209
|
+
* vr china – kasachstan – kirgisien
|
210
|
+
* vr china – kasachstan – russland
|
211
|
+
* vr china – laos – vietnam
|
212
|
+
* vr china – mongolei – russland (osten)
|
213
|
+
* vr china – mongolei – russland (westen)
|
214
|
+
* vr china – nord-korea – russland in der region primorje
|
215
|
+
* palästina – israel – jordanien (nord)
|
216
|
+
* palästina – israel – jordanien (süden)
|
217
|
+
* irak – iran – türkei
|
218
|
+
* irak – jordanien – syrien
|
219
|
+
* irak – syrien – türkei
|
220
|
+
* israel – jordanien – syrien
|
221
|
+
* israel – libanon – syrien: mount hermon
|
222
|
+
* kasachstan – kirgisien – usbekistan
|
223
|
+
* kasachstan – usbekistan – turkmenistan
|
224
|
+
* kirgisien – usbekistan – tadschikistan
|
225
|
+
|
226
|
+
die dreiländerecke vr china – kasachstan – russland sowie vr china – mongolei – russland liegen im altai nur 50 kilometer voneinander entfernt.
|
227
|
+
|
228
|
+
ehemalige dreiländerecke [bearbeiten]
|
229
|
+
|
230
|
+
infolge von grenzverschiebungen kommt es vor, dass dreiländerecke zu normalen staatsgrenzen werden, aber dennoch ein markanter punkt bleiben:
|
231
|
+
|
232
|
+
europa [bearbeiten]
|
233
|
+
|
234
|
+
* italien – schweiz – österreich; bis zur abtretung südtirols von österreich an italien, nähe stilfserjoch auf der dreisprachenspitze. es ist heute ein „dreispracheneck“ geblieben mit italienisch (lombardei), deutsch (südtirol) und rätoromanisch (schweiz).
|
235
|
+
* br deutschland – ddr – tschechoslowakei; bis zur wiedervereinigung an der stelle, wo bayern, sachsen und böhmen (tschechien) aufeinander treffen, es handelt sich um einen punkt in der nähe der orte regnitzlosau, landkreis hof, bayern; eichigt, vogtlandkreis, sachsen; und hranice u aše, okres cheb, heute tschechische republik.
|
236
|
+
|
237
|
+
siehe auch [bearbeiten]
|
238
|
+
commons commons: dreiländereck – bilder, videos und audiodateien
|
239
|
+
|
240
|
+
* dreikaisereck
|
241
|
+
* vierländereck
|
242
|
+
* dreiherrenstein
|
243
|
+
* tanzen im dreiländereck
|
244
|
+
* dreigräben
|
245
|
+
|
246
|
+
weblinks [bearbeiten]
|
247
|
+
|
248
|
+
* liste aller dreiländer als kml-datei mit koordinaten
|
249
|
+
|
250
|
+
von „http://de.wikipedia.org/wiki/dreil%c3%a4ndereck“
|
251
|
+
kategorien: politische geographie | grenze
|
@@ -8,9 +8,19 @@ require 'spec_helper'
|
|
8
8
|
include TwitterCldr::Shared
|
9
9
|
|
10
10
|
describe CodePoint do
|
11
|
+
def clear
|
12
|
+
CodePoint.instance_variable_set(:@composition_exclusion_cache, nil)
|
13
|
+
CodePoint.instance_variable_set(:@canonical_compositions, nil)
|
14
|
+
CodePoint.instance_variable_set(:@block_cache, nil)
|
15
|
+
CodePoint.instance_variable_set(:@blocks, nil)
|
16
|
+
end
|
17
|
+
|
18
|
+
after(:each) { clear }
|
19
|
+
before(:each) { clear }
|
20
|
+
|
11
21
|
describe "#initialize" do
|
12
22
|
let(:unicode_data) { ['17D1', 'KHMER SIGN VIRIAM', 'Mn', '0', 'NSM', decomposition, "", "", "", 'N', "", "", "", "", ""] }
|
13
|
-
let(:code_point) { CodePoint.new(
|
23
|
+
let(:code_point) { CodePoint.new(unicode_data) }
|
14
24
|
|
15
25
|
context 'when decomposition is canonical' do
|
16
26
|
let(:decomposition) { '0028 007A 0029' }
|
@@ -59,17 +69,13 @@ describe CodePoint do
|
|
59
69
|
code_point.should_not be_compatibility_decomposition
|
60
70
|
end
|
61
71
|
end
|
62
|
-
|
63
|
-
it 'raises ArgumentError if decomposition has invalid format' do
|
64
|
-
|
65
|
-
end
|
66
72
|
end
|
67
73
|
|
68
74
|
describe "#find" do
|
69
75
|
it "retrieves information for any valid code point" do
|
70
76
|
data = CodePoint.find(0x301)
|
71
77
|
data.should be_a(CodePoint)
|
72
|
-
data.
|
78
|
+
data.fields.length.should == 15
|
73
79
|
end
|
74
80
|
|
75
81
|
it "returns nil if the information is not found" do
|
@@ -107,20 +113,45 @@ describe CodePoint do
|
|
107
113
|
end
|
108
114
|
end
|
109
115
|
|
116
|
+
describe "#code_points_for{index}" do
|
117
|
+
it "returns code points for the given general unicode property name" do
|
118
|
+
cps = CodePoint.code_points_for_category(:Cc)
|
119
|
+
cps.should be_a(Array)
|
120
|
+
cps.first.should == (0..31)
|
121
|
+
|
122
|
+
cps = CodePoint.code_points_for_bidi_class(:BN)
|
123
|
+
cps.should be_a(Array)
|
124
|
+
cps.first.should == (0..8)
|
125
|
+
|
126
|
+
cps = CodePoint.code_points_for_bidi_mirrored(:N)
|
127
|
+
cps.should be_a(Array)
|
128
|
+
cps.first.should == (0..39)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "#code_points_for_property_value" do
|
133
|
+
it "returns code points for the given unicode property and value" do
|
134
|
+
cps = CodePoint.code_points_for_line_break(:CM)
|
135
|
+
cps.should be_a(Array)
|
136
|
+
cps.first.should == (0..8)
|
137
|
+
|
138
|
+
cps = CodePoint.code_points_for_sentence_break(:Extend)
|
139
|
+
cps.should be_a(Array)
|
140
|
+
cps.first.should == (768..879)
|
141
|
+
|
142
|
+
cps = CodePoint.code_points_for_word_break(:Hebrew_Letter)
|
143
|
+
cps.should be_a(Array)
|
144
|
+
cps.first.should == (1488..1514)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
110
148
|
describe "#for_canonical_decomposition" do
|
111
149
|
let(:canonical_compositions) { { [123, 456] => 789 } }
|
112
150
|
|
113
151
|
before(:each) do
|
114
|
-
# clear the decomposition map after each test so mocks/stubs work
|
115
|
-
CodePoint.instance_variable_set(:@canonical_compositions, nil)
|
116
152
|
stub(CodePoint).find { |code_point| "I'm code point #{code_point}" }
|
117
153
|
end
|
118
154
|
|
119
|
-
after(:all) do
|
120
|
-
# clear the decomposition map after each test so mocks/stubs work
|
121
|
-
CodePoint.instance_variable_set(:@canonical_compositions, nil)
|
122
|
-
end
|
123
|
-
|
124
155
|
context "with a stubbed decomposition map" do
|
125
156
|
before(:each) do
|
126
157
|
mock(TwitterCldr).get_resource(:unicode_data, :canonical_compositions) { canonical_compositions }
|
@@ -144,7 +175,6 @@ describe CodePoint do
|
|
144
175
|
|
145
176
|
describe "#hangul_type" do
|
146
177
|
before(:each) do
|
147
|
-
# CodePoint.instance_variable_set(:'@hangul_type_cache', {})
|
148
178
|
stub(CodePoint).hangul_blocks {
|
149
179
|
{
|
150
180
|
:lparts => [1..10],
|
@@ -0,0 +1,41 @@
|
|
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::Shared
|
9
|
+
|
10
|
+
describe NumberingSystem do
|
11
|
+
describe "#for_name" do
|
12
|
+
it "should return the correct numbering system for the given name" do
|
13
|
+
NumberingSystem.for_name("latn").digits.should == %w(0 1 2 3 4 5 6 7 8 9)
|
14
|
+
NumberingSystem.for_name("arab").digits.should == %w(٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should raise an error if the system is not numeric" do
|
18
|
+
lambda { NumberingSystem.for_name("roman") }.should raise_error(UnsupportedNumberingSystemError)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#transliterate" do
|
23
|
+
context "with the arabic numbering system" do
|
24
|
+
let(:system) { NumberingSystem.for_name("arab") }
|
25
|
+
|
26
|
+
it "replaces ascii numeral characters with arabic ones" do
|
27
|
+
system.transliterate(123).should match_normalized("١٢٣")
|
28
|
+
system.transliterate(947).should match_normalized("٩٤٧")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "with the Han decimal system" do
|
33
|
+
let(:system) { NumberingSystem.for_name("hanidec") }
|
34
|
+
|
35
|
+
it "replaces ascii numeral characters with Han ones" do
|
36
|
+
system.transliterate(123).should match_normalized("一二三")
|
37
|
+
system.transliterate(947).should match_normalized("九四七")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -17,14 +17,14 @@ describe Territories do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should use alternate/short names" do
|
20
|
-
Territories.translate_territory("Congo
|
21
|
-
Territories.translate_territory("Congo
|
20
|
+
Territories.translate_territory("Congo (DRC)", :en, :es).should match_normalized("Congo (República Democrática del Congo)")
|
21
|
+
Territories.translate_territory("Congo (Republic)", :en, :es).should match_normalized("Congo (República)")
|
22
22
|
Territories.translate_territory("East Timor", :en, :es).should match_normalized("Timor Oriental")
|
23
|
-
Territories.translate_territory("Falkland Islands
|
23
|
+
Territories.translate_territory("Falkland Islands (Islas Malvinas)", :en, :es).should match_normalized("Islas Malvinas (Islas Falkland)")
|
24
24
|
Territories.translate_territory("Hong Kong", :en, :es).should match_normalized("Hong Kong")
|
25
25
|
Territories.translate_territory("Ivory Coast", :en, :es).should match_normalized("Costa de Marfil")
|
26
26
|
Territories.translate_territory("Macau", :en, :es).should match_normalized("Macao")
|
27
|
-
Territories.translate_territory("Macedonia
|
27
|
+
Territories.translate_territory("Macedonia (FYROM)", :en, :es).should match_normalized("Macedonia (ERYM)")
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should be capitalization agnostic" do
|
@@ -56,12 +56,12 @@ describe Territories do
|
|
56
56
|
describe "#from_territory_code_for_locale" do
|
57
57
|
it "should return the territory in the correct locale for the given locale code (i.e. RU in English should be Russia)" do
|
58
58
|
Territories.from_territory_code_for_locale(:ES, :en).should match_normalized("Spain")
|
59
|
-
Territories.from_territory_code_for_locale(:GB, :es).should match_normalized("
|
59
|
+
Territories.from_territory_code_for_locale(:GB, :es).should match_normalized("UK")
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should work with lower-case country codes as well" do
|
63
63
|
Territories.from_territory_code_for_locale(:es, :en).should match_normalized("Spain")
|
64
|
-
Territories.from_territory_code_for_locale(:gb, :es).should match_normalized("
|
64
|
+
Territories.from_territory_code_for_locale(:gb, :es).should match_normalized("UK")
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should work with Traditional Chinese" do
|
@@ -116,5 +116,13 @@ describe Territories do
|
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
+
describe "#deep_normalize_territory_code_keys" do
|
120
|
+
Territories.deep_normalize_territory_code_keys(
|
121
|
+
{ "is" => [ { "US" => "United States",
|
122
|
+
5 => "Suður-Ameríka" },
|
123
|
+
{ "009" => "Eyjaálfa" } ] }
|
124
|
+
).should == { :is => [ { :us => "United States" }, { } ] }
|
125
|
+
end
|
126
|
+
|
119
127
|
end
|
120
128
|
|
@@ -0,0 +1,203 @@
|
|
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::Shared
|
9
|
+
|
10
|
+
describe UnicodeRegex do
|
11
|
+
def compile(str, symbol_table = nil)
|
12
|
+
UnicodeRegex.compile(str, "", symbol_table)
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:symbol_table) do
|
16
|
+
tokenizer = TwitterCldr::Tokenizers::UnicodeRegexTokenizer.new
|
17
|
+
table = TwitterCldr::Parsers::SymbolTable.new({
|
18
|
+
"$FOO" => tokenizer.tokenize("[g-k]"),
|
19
|
+
"$BAR" => tokenizer.tokenize("[p-s]")
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
context "basic operations" do
|
24
|
+
let(:regex) { compile("[abc]") }
|
25
|
+
|
26
|
+
describe "#compile" do
|
27
|
+
it "should return a UnicodeRegex, parsed and ready to go" do
|
28
|
+
regex.should be_a(UnicodeRegex)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#to_regexp_str" do
|
33
|
+
it "should return the string representation of this regex" do
|
34
|
+
regex.to_regexp_str.should == "(?:[\\141-\\143])"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#to_regexp" do
|
39
|
+
it "should return a ruby Regexp" do
|
40
|
+
if RUBY_VERSION <= "1.8.7"
|
41
|
+
regex.to_regexp.should be_a(Oniguruma::ORegexp)
|
42
|
+
else
|
43
|
+
regex.to_regexp.should be_a(Regexp)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should properly turn various basic regexes into strings" do
|
48
|
+
compile("^abc$").to_regexp_str.should == "^(?:\\141)(?:\\142)(?:\\143)$"
|
49
|
+
compile("a(b)c").to_regexp_str.should == "(?:\\141)((?:\\142))(?:\\143)"
|
50
|
+
compile("a(?:b)c").to_regexp_str.should == "(?:\\141)(?:(?:\\142))(?:\\143)"
|
51
|
+
compile("a{1,3}").to_regexp_str.should == "(?:\\141){1,3}"
|
52
|
+
compile("[abc]").to_regexp_str.should == "(?:[\\141-\\143])"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should properly turn various complex regexes into strings" do
|
56
|
+
compile("[a-z0-9]").to_regexp_str.should == "(?:[\\60-\\71]|[\\141-\\172])"
|
57
|
+
compile("[\\u0067-\\u0071]").to_regexp_str.should == "(?:[\\147-\\161])"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should properly substitute variables" do
|
61
|
+
compile("$FOO$BAR", symbol_table).to_regexp_str.should == "(?:[\\147-\\153])(?:[\\160-\\163])"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "with a few variables" do
|
67
|
+
describe "#match" do
|
68
|
+
it "should substitute variables from the symbol table" do
|
69
|
+
regex = compile("$FOO $BAR", symbol_table)
|
70
|
+
regex.should exactly_match("h r")
|
71
|
+
regex.should exactly_match("j q")
|
72
|
+
regex.should_not exactly_match("h t")
|
73
|
+
regex.should_not exactly_match("c s")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "matching basics" do
|
79
|
+
describe "#match" do
|
80
|
+
it "should match a regex with no char class" do
|
81
|
+
regex = compile("^abc$")
|
82
|
+
regex.should exactly_match("abc")
|
83
|
+
regex.should_not exactly_match("cba")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should match a regex with a capturing group" do
|
87
|
+
regex = compile("a(b)c")
|
88
|
+
match = regex.match("abc")
|
89
|
+
match.should_not be_nil
|
90
|
+
match.captures[0].should == "b"
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should match a regex with a non-capturing group" do
|
94
|
+
regex = compile("a(?:b)c")
|
95
|
+
match = regex.match("abc")
|
96
|
+
match.should_not be_nil
|
97
|
+
match.captures.should == []
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should match a regex with a quantifier" do
|
101
|
+
regex = compile("a{1,3}")
|
102
|
+
regex.should exactly_match("a")
|
103
|
+
regex.should exactly_match("aa")
|
104
|
+
regex.should exactly_match("aaa")
|
105
|
+
regex.should_not exactly_match("aaaa")
|
106
|
+
regex.should_not exactly_match("b")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should match a regex with a basic char class" do
|
110
|
+
regex = compile("[abc]")
|
111
|
+
regex.should exactly_match("a")
|
112
|
+
regex.should exactly_match("b")
|
113
|
+
regex.should exactly_match("c")
|
114
|
+
regex.should_not exactly_match("ab")
|
115
|
+
regex.should_not exactly_match("d")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context "matching complex character classes" do
|
121
|
+
describe "#match" do
|
122
|
+
it "should match a regex with a char class containing a range" do
|
123
|
+
regex = compile("[a-z0-9]")
|
124
|
+
regex.should exactly_match("a")
|
125
|
+
regex.should exactly_match("m")
|
126
|
+
regex.should exactly_match("z")
|
127
|
+
regex.should exactly_match("0")
|
128
|
+
regex.should exactly_match("3")
|
129
|
+
regex.should exactly_match("9")
|
130
|
+
regex.should_not exactly_match("a0")
|
131
|
+
regex.should_not exactly_match("m4")
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should match a regex with a char class containing a unicode range" do
|
135
|
+
regex = compile("[\\u0067-\\u0071]") # g-q
|
136
|
+
regex.should exactly_match("g")
|
137
|
+
regex.should exactly_match("q")
|
138
|
+
regex.should exactly_match("h")
|
139
|
+
regex.should_not exactly_match("z")
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should match a regex containing a character set" do
|
143
|
+
regex = compile("[\\p{Zs}]")
|
144
|
+
regex.should exactly_match([160].pack("U*")) # non-breaking space
|
145
|
+
regex.should exactly_match([5760].pack("U*")) # ogham space mark
|
146
|
+
regex.should_not exactly_match("a")
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should match a regex containing a negated character set" do
|
150
|
+
regex = compile("[\\P{Zs}]")
|
151
|
+
regex.should exactly_match("a")
|
152
|
+
regex.should_not exactly_match([160].pack("U*"))
|
153
|
+
regex.should_not exactly_match([5760].pack("U*"))
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should match a regex containing a character set (alternate syntax)" do
|
157
|
+
regex = compile("[[:Zs:]]")
|
158
|
+
regex.should exactly_match([160].pack("U*")) # non-breaking space
|
159
|
+
regex.should exactly_match([5760].pack("U*")) # ogham space mark
|
160
|
+
regex.should_not exactly_match("a")
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should match a regex containing a negated character set (alternate syntax)" do
|
164
|
+
regex = compile("[[:^Zs:]]")
|
165
|
+
regex.should exactly_match("a")
|
166
|
+
regex.should_not exactly_match([160].pack("U*"))
|
167
|
+
regex.should_not exactly_match([5760].pack("U*"))
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should match a regex with a character set and some quantifiers" do
|
171
|
+
regex = compile("[\\u0067-\\u0071]+")
|
172
|
+
regex.should exactly_match("gg")
|
173
|
+
regex.should exactly_match("gh")
|
174
|
+
regex.should exactly_match("qjk")
|
175
|
+
regex.should_not exactly_match("")
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should match a regex that uses special switches inside the char class" do
|
179
|
+
regex = compile("[\\w]+")
|
180
|
+
regex.should exactly_match("a")
|
181
|
+
regex.should exactly_match("abc")
|
182
|
+
regex.should exactly_match("a0b_1c2")
|
183
|
+
regex.should_not exactly_match("$@#")
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should match a regex that uses negated special switches inside the char class" do
|
187
|
+
regex = compile("[\\W]+")
|
188
|
+
regex.should_not exactly_match("a")
|
189
|
+
regex.should_not exactly_match("abc")
|
190
|
+
regex.should_not exactly_match("a0b_1c2")
|
191
|
+
regex.should exactly_match("$@#")
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should match a regex with a complicated expression inside the char class" do
|
195
|
+
# not [separators U space-tilde] diff [letters diff numbers] (diff is commutative)
|
196
|
+
regex = compile("[^[\\p{Z}\\u0020-\\u007f]-[\\p{L}]-[\\p{N}]]")
|
197
|
+
regex.should exactly_match(" ")
|
198
|
+
regex.should exactly_match(",")
|
199
|
+
regex.should_not exactly_match("a")
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,12 @@
|
|
6
6
|
require 'rspec'
|
7
7
|
require 'rspec/autorun' # somehow makes rcov work with rspec
|
8
8
|
require 'twitter_cldr'
|
9
|
+
require 'pry-nav'
|
10
|
+
|
11
|
+
if RUBY_VERSION <= "1.8.7"
|
12
|
+
$KCODE = "UTF-8"
|
13
|
+
require 'oniguruma'
|
14
|
+
end
|
9
15
|
|
10
16
|
if ENV['SCOV']
|
11
17
|
require 'simplecov'
|
@@ -62,6 +68,17 @@ RSpec::Matchers.define :match_normalized do |expected|
|
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
71
|
+
RSpec::Matchers.define :exactly_match do |expected|
|
72
|
+
match do |actual|
|
73
|
+
if actual.respond_to?(:match)
|
74
|
+
m = actual.match(expected)
|
75
|
+
m.to_a.first == expected
|
76
|
+
else
|
77
|
+
expected === actual
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
65
82
|
def check_token_list(got, expected)
|
66
83
|
got.size.should == expected.size
|
67
84
|
expected.each_with_index do |exp_hash, index|
|