Class: Wongi::Engine::Token

Inherits:
Object
  • Object
show all
Includes:
CoreExt
Defined in:
lib/wongi-engine/token.rb

Direct Known Subclasses

FakeToken

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CoreExt

included

Constructor Details

#initialize(token, wme, assignments) ⇒ Token

Returns a new instance of Token.



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

def initialize token, wme, assignments
  @parent, @wme, @assignments = token, wme, assignments
  @children = []
  @neg_join_results = []
  @opt_join_results = []
  @ncc_results = []
  @generated_wmes = []
  token.children << self if token
  wme.tokens << self if wme
end

Instance Attribute Details

#childrenObject (readonly)

Returns the value of attribute children.



7
8
9
# File 'lib/wongi-engine/token.rb', line 7

def children
  @children
end

#generated_wmesObject (readonly)

Returns the value of attribute generated_wmes.



12
13
14
# File 'lib/wongi-engine/token.rb', line 12

def generated_wmes
  @generated_wmes
end

#ncc_resultsObject (readonly)

Returns the value of attribute ncc_results.



11
12
13
# File 'lib/wongi-engine/token.rb', line 11

def ncc_results
  @ncc_results
end

#neg_join_resultsObject (readonly)

Returns the value of attribute neg_join_results.



9
10
11
# File 'lib/wongi-engine/token.rb', line 9

def neg_join_results
  @neg_join_results
end

#nodeObject

Returns the value of attribute node.



8
9
10
# File 'lib/wongi-engine/token.rb', line 8

def node
  @node
end

#opt_join_resultsObject (readonly)

Returns the value of attribute opt_join_results.



10
11
12
# File 'lib/wongi-engine/token.rb', line 10

def opt_join_results
  @opt_join_results
end

#ownerObject

Returns the value of attribute owner.



8
9
10
# File 'lib/wongi-engine/token.rb', line 8

def owner
  @owner
end

#parentObject (readonly)

Returns the value of attribute parent.



7
8
9
# File 'lib/wongi-engine/token.rb', line 7

def parent
  @parent
end

#wmeObject (readonly)

Returns the value of attribute wme.



7
8
9
# File 'lib/wongi-engine/token.rb', line 7

def wme
  @wme
end

Instance Method Details

#[](var) ⇒ Object



37
38
39
# File 'lib/wongi-engine/token.rb', line 37

def [] var
  assignments[ var ]
end

#assignmentsObject



33
34
35
# File 'lib/wongi-engine/token.rb', line 33

def assignments
  @cached_assignments ||= all_assignments
end

#deleteObject



56
57
58
59
60
61
62
63
64
65
# File 'lib/wongi-engine/token.rb', line 56

def delete
  delete_children
  @node.tokens.delete self unless @node.kind_of?( NccPartner )
  @wme.tokens.delete self if @wme
  @parent.children.delete self if @parent

  retract_generated

  @node.delete_token self
end

#delete_childrenObject



67
68
69
70
71
# File 'lib/wongi-engine/token.rb', line 67

def delete_children
  while @children.first
    @children.first.delete
  end
end

#subst(variable, value) ⇒ Object



26
27
28
29
30
31
# File 'lib/wongi-engine/token.rb', line 26

def subst variable, value
  @cached_assignments = nil
  if @assignments.has_key? variable
    @assignments[ variable ] = value
  end
end

#to_sObject



41
42
43
44
45
46
# File 'lib/wongi-engine/token.rb', line 41

def to_s
  str = "TOKEN [\n"
  all_assignments.each_pair { |key, value| str << "\t#{key} => #{value}\n" }
  str << "]"
  str
end

#wmesObject



48
49
50
51
52
53
54
# File 'lib/wongi-engine/token.rb', line 48

def wmes
  if parent
    parent.wmes + (wme ? [wme] : [])
  else
    wme ? [wme] : []
  end
end