class I18n::Locale::Fallbacks - i18n-0.6.11 Documentation

# class I18n::Locale::Fallbacks

### Attributes

defaults[R]

### Public Class Methods

new(*mappings) click to toggle source

    # File lib/i18n/locale/fallbacks.rb, line 56
    def initialize(*mappings)
      @map = {}
      map(mappings.pop) if mappings.last.is_a?(Hash)
      self.defaults = mappings.empty? ? [I18n.default_locale.to_sym] : mappings
    end

### Public Instance Methods

[](locale) click to toggle source
Calls superclass method

    # File lib/i18n/locale/fallbacks.rb, line 67
    def [](locale)
      raise InvalidLocale.new(locale) if locale.nil?
      locale = locale.to_sym
      super || store(locale, compute(locale))
    end

defaults=(defaults) click to toggle source

    # File lib/i18n/locale/fallbacks.rb, line 62
    def defaults=(defaults)
      @defaults = defaults.map { |default| compute(default, false) }.flatten
    end

map(mappings) click to toggle source

    # File lib/i18n/locale/fallbacks.rb, line 73
    def map(mappings)
      mappings.each do |from, to|
        from, to = from.to_sym, Array(to)
        to.each do |_to|
          @map[from] ||= []
          @map[from] << _to.to_sym
        end
      end
    end

### Protected Instance Methods

compute(tags, include_defaults = true, exclude = []) click to toggle source

    # File lib/i18n/locale/fallbacks.rb, line 85
    def compute(tags, include_defaults = true, exclude = [])
      result = Array(tags).collect do |tag|
        tags = I18n::Locale::Tag.tag(tag).self_and_parents.map! { |t| t.to_sym } - exclude
        tags.each { |_tag| tags += compute(@map[_tag], false, exclude + tags) if @map[_tag] }
        tags
      end.flatten
      result.push(*defaults) if include_defaults
      result.uniq.compact
    end