Class: Accord::Extendor
- Inherits:
-
Object
- Object
- Accord::Extendor
- Defined in:
- lib/accord/extendor.rb
Instance Method Summary collapse
- #add(new) ⇒ Object
- #compact_map ⇒ Object
- #current ⇒ Object
- #delete(old) ⇒ Object
- #empty? ⇒ Boolean
- #flat_map ⇒ Object
-
#initialize ⇒ Extendor
constructor
A new instance of Extendor.
Constructor Details
#initialize ⇒ Extendor
Returns a new instance of Extendor.
3 4 5 |
# File 'lib/accord/extendor.rb', line 3 def initialize @current = [] end |
Instance Method Details
#add(new) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/accord/extendor.rb', line 7 def add(new) return if @current.include?(new) @current = ( @current.select { |i| new.extends?(i) } + [new] + @current.select { |i| !new.extends?(i) } ) end |
#compact_map ⇒ Object
28 29 30 |
# File 'lib/accord/extendor.rb', line 28 def compact_map @current.map { |i| yield(i) }.compact end |
#current ⇒ Object
24 25 26 |
# File 'lib/accord/extendor.rb', line 24 def current @current.dup end |
#delete(old) ⇒ Object
16 17 18 |
# File 'lib/accord/extendor.rb', line 16 def delete(old) @current.delete_if { |i| i.equal?(old) } end |
#empty? ⇒ Boolean
20 21 22 |
# File 'lib/accord/extendor.rb', line 20 def empty? @current.empty? end |
#flat_map ⇒ Object
32 33 34 |
# File 'lib/accord/extendor.rb', line 32 def flat_map @current.flat_map { |i| yield(i) } end |