Class: R18n::CustomFilterList

Inherits:
FilterList show all
Defined in:
lib/r18n-core/filter_list.rb

Overview

Filter list for I18n object with custom disabled/enabled filters.

Instance Method Summary collapse

Methods inherited from FilterList

#enabled, #process, #process_string, #process_typed

Constructor Details

#initialize(on, off) ⇒ CustomFilterList

Returns a new instance of CustomFilterList.



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/r18n-core/filter_list.rb', line 111

def initialize(on, off)
  @on  = Array(on).map  { |i| Filters.defined[i] }
  @off = Array(off).map { |i| Filters.defined[i] }
  @changed_types = (@on + @off).map(&:types).flatten.uniq

  @changed_passive = (@on + @off).select(&:passive?)
    .map(&:types).flatten.uniq
  @changed_active  = (@on + @off).reject(&:passive?)
    .map(&:types).flatten.uniq

  @on_by_type = {}
  @on.each do |filter|
    filter.types.each do |type|
      @on_by_type[type] ||= []
      @on_by_type[type] << filter
    end
  end
  @off_by_type = {}
  @off.each do |filter|
    filter.types.each do |type|
      @off_by_type[type] ||= []
      @off_by_type[type] << filter
    end
  end
end

Instance Method Details

#active(type) ⇒ Object



144
145
146
147
148
149
# File 'lib/r18n-core/filter_list.rb', line 144

def active(type)
  enabled = Filters.active_enabled[type]
  return enabled unless @changed_active.include? type
  enabled = enabled.reject { |i| @off_by_type[type].include? i }
  enabled + @on_by_type[type].reject(&:passive)
end

#all(type) ⇒ Object



151
152
153
154
155
156
# File 'lib/r18n-core/filter_list.rb', line 151

def all(type)
  enabled = Filters.enabled[type]
  return enabled unless @changed_types.include? type
  enabled = enabled.reject { |i| @off_by_type[type].include? i }
  enabled + @on_by_type[type]
end

#hashObject



158
159
160
# File 'lib/r18n-core/filter_list.rb', line 158

def hash
  [@on, @off].hash
end

#passive(type) ⇒ Object



137
138
139
140
141
142
# File 'lib/r18n-core/filter_list.rb', line 137

def passive(type)
  enabled = Filters.passive_enabled[type]
  return enabled unless @changed_passive.include? type
  enabled = enabled.reject { |i| @off_by_type[type].include? i }
  enabled + @on_by_type[type].select(&:passive)
end