Class: PreferredLocale
- Inherits:
-
Object
- Object
- PreferredLocale
- Defined in:
- lib/preferred_locale.rb,
lib/preferred_locale/version.rb,
lib/preferred_locale/auto_locale.rb,
lib/preferred_locale/header_parser.rb
Defined Under Namespace
Modules: AutoLocale Classes: HeaderParser
Constant Summary collapse
- VERSION =
'1.1.0'
Instance Method Summary collapse
- #acceptable_for(locales: []) ⇒ Object
-
#initialize(available: []) ⇒ PreferredLocale
constructor
A new instance of PreferredLocale.
- #preferred_for(locales: []) ⇒ Object
Constructor Details
#initialize(available: []) ⇒ PreferredLocale
Returns a new instance of PreferredLocale.
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/preferred_locale.rb', line 8 def initialize(available: []) # We need this to avoid overwriting explicit options with implicit ones available_lower = available.map { |locale| locale.to_s.downcase } # Create a map of "implicit" available locales to their "canonical" form @available = available.each_with_object({}) do |locale, obj| locale_str = locale.to_s obj[locale_str.downcase] = locale # Add the language without a country if it's not already in the list language = locale_str.downcase.split('-')[0] obj[language] = locale unless available_lower.include?(language) || obj.key?(language) end end |
Instance Method Details
#acceptable_for(locales: []) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/preferred_locale.rb', line 22 def acceptable_for(locales: []) locales_lower = locales.map { |locale| locale.to_s.downcase } # Build a candidate list including our implicit candidate locales candidates = locales_lower.flat_map do |locale| language = locale.split('-')[0] [ locale, # Add the language without a country if it's not already in the list (language unless locales_lower.include?(language)) ].compact end # Figure out which candidates are available available = candidates.filter do |locale| @available.key?(locale.downcase) end # Convert to the canonical form and then remove duplicates available.map { |locale| @available[locale.downcase] }.uniq end |
#preferred_for(locales: []) ⇒ Object
43 44 45 |
# File 'lib/preferred_locale.rb', line 43 def preferred_for(locales: []) acceptable_for(locales: locales)[0] end |