Module: TwitterCldr::Shared::Territories
- Defined in:
- lib/twitter_cldr/shared/territories.rb
Class Method Summary collapse
- .all ⇒ Object
- .all_for(code) ⇒ Object
-
.deep_normalize_territory_code_keys(arg) ⇒ Object
Normalizes each key in the ‘arg’ hash or constituent hashes as if it were a territory code.
- .from_territory_code(territory_code) ⇒ Object
-
.from_territory_code_for_locale(territory_code, locale = TwitterCldr.locale) ⇒ Object
Returns how to say a given territory in a given locale.
-
.normalize_territory_code(territory_code) ⇒ Object
Normalizes a territory code to a symbol.
-
.translate_territory(territory_name, source_locale = :en, dest_locale = TwitterCldr.locale) ⇒ Object
Translates territory_name from source_locale to dest_locale.
Class Method Details
.all ⇒ Object
12 13 14 |
# File 'lib/twitter_cldr/shared/territories.rb', line 12 def all all_for(TwitterCldr.locale) end |
.all_for(code) ⇒ Object
16 17 18 19 20 |
# File 'lib/twitter_cldr/shared/territories.rb', line 16 def all_for(code) get_resource(code)[:territories] rescue {} end |
.deep_normalize_territory_code_keys(arg) ⇒ Object
Normalizes each key in the ‘arg’ hash or constituent hashes as if it were a territory code.
In addition, removes entries in hashes where the key begins with a digit. Because of the way the twitter-cldr-rb YAML resource pipeline works, these three-digit codes get mangled (e.g. interpreted as octal then reinterpreted out in decimal), and translations for UN three-digit area codes cannot be trusted.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/twitter_cldr/shared/territories.rb', line 74 def deep_normalize_territory_code_keys(arg) case arg when Array arg.map { |elem| deep_normalize_territory_code_keys(elem) } when Hash normalized = arg.inject({}) do |carry, (key, value)| normalized_key = normalize_territory_code(key) carry[normalized_key] = deep_normalize_territory_code_keys(value) carry end normalized.delete_if do |key, _| key.to_s =~ /^\d+$/ end normalized else arg end end |
.from_territory_code(territory_code) ⇒ Object
22 23 24 |
# File 'lib/twitter_cldr/shared/territories.rb', line 22 def from_territory_code(territory_code) from_territory_code_for_locale(territory_code, TwitterCldr.locale) end |
.from_territory_code_for_locale(territory_code, locale = TwitterCldr.locale) ⇒ Object
Returns how to say a given territory in a given locale.
This method does not work for three-digit United Nation “area codes” (UN M.49; for example, 014 for Eastern Africa and 419 for Latin America).
31 32 33 34 35 |
# File 'lib/twitter_cldr/shared/territories.rb', line 31 def from_territory_code_for_locale(territory_code, locale = TwitterCldr.locale) get_resource(locale)[:territories][normalize_territory_code(territory_code)] rescue nil end |
.normalize_territory_code(territory_code) ⇒ Object
Normalizes a territory code to a symbol.
1) Converts to string. 2) Downcases. 3) Symbolizes.
The downcasing is to convert ISO 3166-1 alpha-2 codes, used (upper-case) for territories in CLDR, to be lowercase, to be consistent with how territory codes are surfaced in TwitterCLDR methods relating to phone and postal codes.
61 62 63 64 |
# File 'lib/twitter_cldr/shared/territories.rb', line 61 def normalize_territory_code(territory_code) return if territory_code.nil? territory_code.to_s.downcase.gsub(/^0+/, '').to_sym end |
.translate_territory(territory_name, source_locale = :en, dest_locale = TwitterCldr.locale) ⇒ Object
Translates territory_name from source_locale to dest_locale.
This method does not work for three-digit United Nation “area codes” (UN M.49; for example, 014 for Eastern Africa and 419 for Latin America).
42 43 44 45 46 47 48 49 |
# File 'lib/twitter_cldr/shared/territories.rb', line 42 def translate_territory(territory_name, source_locale = :en, dest_locale = TwitterCldr.locale) territory_code, _ = get_resource(source_locale)[:territories].find do |_, other_territory_name| other_territory_name.downcase == territory_name.downcase end get_resource(dest_locale)[:territories][territory_code] if territory_code rescue nil end |