Thin wrapper around array representing a collection of indices for a specific alias, which allows hooking into adding/removing indices.
It keeps track of which aliases to add and which to remove in two separate collections, `#add_indices` and `#remove_indices`.
It delegates Enumerable-like methods to the `#add_indices` collection.
# File lib/tire/alias.rb, line 236 def initialize(*values) @add_indices = Array.new(values).flatten.compact @remove_indices = [] end
# File lib/tire/alias.rb, line 272 def [](index) @add_indices[index] end
# File lib/tire/alias.rb, line 267 def clear @remove_indices = @add_indices.clone @add_indices.clear end
# File lib/tire/alias.rb, line 247 def delete(value) @add_indices.delete value @remove_indices |= [value] end
# File lib/tire/alias.rb, line 253 def delete_if(&block) @add_indices.clone.each do |name| delete(name) if block.call(name) end end
# File lib/tire/alias.rb, line 259 def each(&block) @add_indices.each(&block) end
# File lib/tire/alias.rb, line 263 def empty? @add_indices.empty? end
# File lib/tire/alias.rb, line 288 def inspect %Q<#{self.class} #{@add_indices.map{|i| "\"#{i}\""}.join(', ')}>| end
# File lib/tire/alias.rb, line 241 def push(value) @add_indices |= [value] @remove_indices.delete value end
# File lib/tire/alias.rb, line 276 def size @add_indices.size end
# File lib/tire/alias.rb, line 280 def to_ary @add_indices end
# File lib/tire/alias.rb, line 284 def to_s @add_indices.join(', ') end