Class: Accord::Extendor

Inherits:
Object
  • Object
show all
Defined in:
lib/accord/extendor.rb

Instance Method Summary collapse

Constructor Details

#initializeExtendor

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_mapObject



28
29
30
# File 'lib/accord/extendor.rb', line 28

def compact_map
  @current.map { |i| yield(i) }.compact
end

#currentObject



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

Returns:

  • (Boolean)


20
21
22
# File 'lib/accord/extendor.rb', line 20

def empty?
  @current.empty?
end

#flat_mapObject



32
33
34
# File 'lib/accord/extendor.rb', line 32

def flat_map
  @current.flat_map { |i| yield(i) }
end