Class: Wongi::Engine::AssignmentNode

Inherits:
BetaNode
  • Object
show all
Defined in:
lib/wongi-engine/beta/assignment_node.rb

Instance Attribute Summary

Attributes inherited from BetaNode

#children, #parent, #rete

Instance Method Summary collapse

Methods inherited from BetaNode

#assignment_node, #delete_token, #depth, #refresh, #root?

Methods included from CoreExt

included

Constructor Details

#initialize(parent, variable, body) ⇒ AssignmentNode

Returns a new instance of AssignmentNode.



5
6
7
8
# File 'lib/wongi-engine/beta/assignment_node.rb', line 5

def initialize parent, variable, body
  super parent
  @variable, @body = variable, body
end

Instance Method Details

#beta_activate(token, wme = nil, assignments = { }) ⇒ Object



10
11
12
13
14
# File 'lib/wongi-engine/beta/assignment_node.rb', line 10

def beta_activate token, wme = nil, assignments = { }
  children.each do |child|
    child.beta_activate Token.new( child, token, nil, { @variable => @body.respond_to?(:call) ? @body.call(token) : @body } )
  end
end

#beta_deactivate(token) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/wongi-engine/beta/assignment_node.rb', line 16

def beta_deactivate token
  children.each do |child|
    child.tokens.each do |t|
      if t.parent == token
        child.beta_deactivate t
        #token.destroy
      end
    end
  end
end

#refresh_child(child) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/wongi-engine/beta/assignment_node.rb', line 27

def refresh_child child
  tmp = children
  self.children = [ child ]
  parent.tokens.each do |token|
    children.each do |child|
      child.beta_activate Token.new( child, token, nil, { @variable => @body.respond_to?(:call) ? @body.call(token) : @body } )
    end
  end
  self.children = tmp
end