class Tire::Alias::IndexCollection

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.

Attributes

add_indices[R]
remove_indices[R]

Public Class Methods

new(*values) click to toggle source
# File lib/tire/alias.rb, line 236
def initialize(*values)
  @add_indices    = Array.new(values).flatten.compact
  @remove_indices = []
end

Public Instance Methods

[](index) click to toggle source
# File lib/tire/alias.rb, line 272
def [](index)
  @add_indices[index]
end
add(value) click to toggle source
Alias for: push
clear() click to toggle source
# File lib/tire/alias.rb, line 267
def clear
  @remove_indices = @add_indices.clone
  @add_indices.clear
end
delete(value) click to toggle source
# File lib/tire/alias.rb, line 247
def delete(value)
  @add_indices.delete value
  @remove_indices |= [value]
end
Also aliased as: remove
delete_if(&block) click to toggle source
# 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
each(&block) click to toggle source
# File lib/tire/alias.rb, line 259
def each(&block)
  @add_indices.each(&block)
end
empty?() click to toggle source
# File lib/tire/alias.rb, line 263
def empty?
  @add_indices.empty?
end
inspect() click to toggle source
# File lib/tire/alias.rb, line 288
def inspect
  %Q<#{self.class} #{@add_indices.map{|i| "\"#{i}\""}.join(', ')}>|
end
push(value) click to toggle source
# File lib/tire/alias.rb, line 241
def push(value)
  @add_indices |= [value]
  @remove_indices.delete value
end
Also aliased as: add
remove(value) click to toggle source
Alias for: delete
size() click to toggle source
# File lib/tire/alias.rb, line 276
def size
  @add_indices.size
end
to_ary() click to toggle source
# File lib/tire/alias.rb, line 280
def to_ary
  @add_indices
end
to_s() click to toggle source
# File lib/tire/alias.rb, line 284
def to_s
  @add_indices.join(', ')
end