lib/traco/locale_fallbacks.rb in traco-3.1.3 vs lib/traco/locale_fallbacks.rb in traco-3.1.4

- old
+ new

@@ -4,10 +4,11 @@ class LocaleFallbacks OPTIONS = [ DEFAULT_FALLBACK = :default, ANY_FALLBACK = :any, NO_FALLBACK = false, + DEFAULT_FIRST_FALLBACK = :default_first, ] attr_reader :fallback_option private :fallback_option @@ -15,25 +16,20 @@ @fallback_option = validate_option(fallback_option) @default_locale = I18n.default_locale @available_locales = I18n.available_locales.sort end - def [](for_locale) - chain = [for_locale] - chain << @default_locale if include_default_locale? - chain |= @available_locales if include_available_locales? - chain + def [](current_locale) + case fallback_option + when DEFAULT_FALLBACK then [ current_locale, @default_locale ] + when ANY_FALLBACK then [ current_locale, @default_locale, *@available_locales ].uniq + when NO_FALLBACK then [ current_locale ] + when DEFAULT_FIRST_FALLBACK then [ @default_locale, *@available_locales ].uniq + else raise "Unknown fallback." # Should never get here. + end end private - - def include_default_locale? - [ DEFAULT_FALLBACK, ANY_FALLBACK ].include?(fallback_option) - end - - def include_available_locales? - ANY_FALLBACK == fallback_option - end def validate_option(fallback_option) if OPTIONS.include?(fallback_option) fallback_option else