Class: Leap::Quorum

Inherits:
Object
  • Object
show all
Defined in:
lib/leap/quorum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options, blk) ⇒ Quorum

Returns a new instance of Quorum.



4
5
6
7
8
9
# File 'lib/leap/quorum.rb', line 4

def initialize(name, options, blk)
  @name = name
  @requirements = Array.wrap options[:needs]
  @supplements = Array.wrap options[:appreciates]
  @process = blk
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/leap/quorum.rb', line 3

def name
  @name
end

#processObject (readonly)

Returns the value of attribute process.



3
4
5
# File 'lib/leap/quorum.rb', line 3

def process
  @process
end

#requirementsObject (readonly)

Returns the value of attribute requirements.



3
4
5
# File 'lib/leap/quorum.rb', line 3

def requirements
  @requirements
end

#supplementsObject (readonly)

Returns the value of attribute supplements.



3
4
5
# File 'lib/leap/quorum.rb', line 3

def supplements
  @supplements
end

Instance Method Details

#acknowledge(characteristics, considerations) ⇒ Object



15
16
17
18
# File 'lib/leap/quorum.rb', line 15

def acknowledge(characteristics, considerations)
  considerations.unshift characteristics
  process.call(*considerations[0...process.arity])
end

#characteristicsObject



20
21
22
# File 'lib/leap/quorum.rb', line 20

def characteristics
  requirements + supplements
end

#satisfied_by?(characteristics) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/leap/quorum.rb', line 11

def satisfied_by?(characteristics)
  (requirements - characteristics.keys).empty?
end