Class: Tire::Alias::IndexCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/tire/alias.rb

Overview

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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*values) ⇒ IndexCollection

Returns a new instance of IndexCollection.



236
237
238
239
# File 'lib/tire/alias.rb', line 236

def initialize(*values)
  @add_indices    = Array.new(values).flatten.compact
  @remove_indices = []
end

Instance Attribute Details

#add_indicesObject (readonly)

Returns the value of attribute add_indices.



234
235
236
# File 'lib/tire/alias.rb', line 234

def add_indices
  @add_indices
end

#remove_indicesObject (readonly)

Returns the value of attribute remove_indices.



234
235
236
# File 'lib/tire/alias.rb', line 234

def remove_indices
  @remove_indices
end

Instance Method Details

#[](index) ⇒ Object



272
273
274
# File 'lib/tire/alias.rb', line 272

def [](index)
  @add_indices[index]
end

#clearObject



267
268
269
270
# File 'lib/tire/alias.rb', line 267

def clear
  @remove_indices = @add_indices.clone
  @add_indices.clear
end

#delete(value) ⇒ Object Also known as: remove



247
248
249
250
# File 'lib/tire/alias.rb', line 247

def delete(value)
  @add_indices.delete value
  @remove_indices |= [value]
end

#delete_if(&block) ⇒ Object



253
254
255
256
257
# 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) ⇒ Object



259
260
261
# File 'lib/tire/alias.rb', line 259

def each(&block)
  @add_indices.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


263
264
265
# File 'lib/tire/alias.rb', line 263

def empty?
  @add_indices.empty?
end

#inspectObject



288
289
290
# File 'lib/tire/alias.rb', line 288

def inspect
  %Q|<#{self.class} #{@add_indices.map{|i| "\"#{i}\""}.join(', ')}>|
end

#push(value) ⇒ Object Also known as: add



241
242
243
244
# File 'lib/tire/alias.rb', line 241

def push(value)
  @add_indices |= [value]
  @remove_indices.delete value
end

#sizeObject



276
277
278
# File 'lib/tire/alias.rb', line 276

def size
  @add_indices.size
end

#to_aryObject



280
281
282
# File 'lib/tire/alias.rb', line 280

def to_ary
  @add_indices
end

#to_sObject



284
285
286
# File 'lib/tire/alias.rb', line 284

def to_s
  @add_indices.join(', ')
end