Module: Leap::Subject

Defined in:
lib/leap/subject.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#decisionsObject (readonly)

Returns the value of attribute decisions.



7
8
9
# File 'lib/leap/subject.rb', line 7

def decisions
  @decisions
end

Class Method Details

.extended(base) ⇒ Object



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

def self.extended(base)
  base.instance_variable_set :@decisions, {}
  base.send :attr_reader, :deliberations
end

Instance Method Details

#decide(goal, options = {}, &blk) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/leap/subject.rb', line 8

def decide(goal, options = {}, &blk)
  decisions[goal] = ::Leap::Decision.new goal, options
  Blockenspiel.invoke(blk, decisions[goal])
  define_method goal do |*considerations|
    @deliberations ||= {}
    @deliberations[goal] = self.class.decisions[goal].make send(self.class.decisions[goal].signature_method), *considerations
    @deliberations[goal][goal]
  end
end