Class: Tire::Alias::IndexCollection
- Inherits:
-
Object
- Object
- Tire::Alias::IndexCollection
- 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
-
#add_indices ⇒ Object
readonly
Returns the value of attribute add_indices.
-
#remove_indices ⇒ Object
readonly
Returns the value of attribute remove_indices.
Instance Method Summary collapse
- #[](index) ⇒ Object
- #clear ⇒ Object
- #delete(value) ⇒ Object (also: #remove)
- #delete_if(&block) ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(*values) ⇒ IndexCollection
constructor
A new instance of IndexCollection.
- #inspect ⇒ Object
- #push(value) ⇒ Object (also: #add)
- #size ⇒ Object
- #to_ary ⇒ Object
- #to_s ⇒ Object
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_indices ⇒ Object (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_indices ⇒ Object (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 |
#clear ⇒ Object
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
263 264 265 |
# File 'lib/tire/alias.rb', line 263 def empty? @add_indices.empty? end |
#inspect ⇒ Object
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 |
#size ⇒ Object
276 277 278 |
# File 'lib/tire/alias.rb', line 276 def size @add_indices.size end |
#to_ary ⇒ Object
280 281 282 |
# File 'lib/tire/alias.rb', line 280 def to_ary @add_indices end |
#to_s ⇒ Object
284 285 286 |
# File 'lib/tire/alias.rb', line 284 def to_s @add_indices.join(', ') end |