class Traco::LocaleFallbacks

Constants

OPTIONS

Attributes

fallback_option[R]

Public Class Methods

new(fallback_option) click to toggle source
# File lib/traco/locale_fallbacks.rb, line 16
def initialize(fallback_option)
  validate_option(fallback_option)

  @fallback_option = fallback_option
  @default_locale = I18n.default_locale
  @available_locales = I18n.available_locales.sort
end

Public Instance Methods

[](current_locale) click to toggle source
# File lib/traco/locale_fallbacks.rb, line 24
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
  when I18N_FALLBACK          then I18n.fallbacks[current_locale]
  when Array                  then [ current_locale, *fallback_option ]
  else                        raise "Unknown fallback."  # Should never get here.
  end
end

Private Instance Methods

validate_option(fallback_option) click to toggle source
# File lib/traco/locale_fallbacks.rb, line 38
def validate_option(fallback_option)
  return if OPTIONS.include?(fallback_option)
  return if fallback_option.is_a?(Array)

  valids = OPTIONS.map(&:inspect).join(", ")
  raise ArgumentError.new("Unsupported fallback: #{fallback_option.inspect} (expected one of #{valids}, or an array)")
end