Class: Wongi::Engine::Token
- Inherits:
-
Object
- Object
- Wongi::Engine::Token
- Includes:
- CoreExt
- Defined in:
- lib/wongi-engine/token.rb
Instance Attribute Summary collapse
-
#children ⇒ Object
readonly
Returns the value of attribute children.
-
#generated_wmes ⇒ Object
readonly
Returns the value of attribute generated_wmes.
-
#ncc_results ⇒ Object
readonly
Returns the value of attribute ncc_results.
-
#neg_join_results ⇒ Object
readonly
Returns the value of attribute neg_join_results.
-
#node ⇒ Object
Returns the value of attribute node.
-
#opt_join_results ⇒ Object
readonly
Returns the value of attribute opt_join_results.
-
#owner ⇒ Object
Returns the value of attribute owner.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#wme ⇒ Object
readonly
Returns the value of attribute wme.
Instance Method Summary collapse
- #[](var) ⇒ Object
- #assignments ⇒ Object
- #delete(preserve_self = false) ⇒ Object
- #delete_children ⇒ Object
-
#initialize(token, wme, assignments) ⇒ Token
constructor
A new instance of Token.
- #subst(variable, value) ⇒ Object
- #to_s ⇒ Object
- #wmes ⇒ Object
Methods included from CoreExt
Constructor Details
#initialize(token, wme, assignments) ⇒ Token
Returns a new instance of Token.
15 16 17 18 19 20 21 22 23 24 25 |
# 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 = [] @deexecutors = [] token.children << self if token wme.tokens << self if wme end |
Instance Attribute Details
#children ⇒ Object (readonly)
Returns the value of attribute children.
7 8 9 |
# File 'lib/wongi-engine/token.rb', line 7 def children @children end |
#generated_wmes ⇒ Object (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_results ⇒ Object (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_results ⇒ Object (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 |
#node ⇒ Object
Returns the value of attribute node.
8 9 10 |
# File 'lib/wongi-engine/token.rb', line 8 def node @node end |
#opt_join_results ⇒ Object (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 |
#owner ⇒ Object
Returns the value of attribute owner.
8 9 10 |
# File 'lib/wongi-engine/token.rb', line 8 def owner @owner end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
7 8 9 |
# File 'lib/wongi-engine/token.rb', line 7 def parent @parent end |
#wme ⇒ Object (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
38 39 40 |
# File 'lib/wongi-engine/token.rb', line 38 def [] var assignments[ var ] end |
#assignments ⇒ Object
34 35 36 |
# File 'lib/wongi-engine/token.rb', line 34 def assignments @cached_assignments ||= all_assignments end |
#delete(preserve_self = false) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/wongi-engine/token.rb', line 57 def delete preserve_self = false delete_children # => TODO: why was this last check needed? consult the Rete PhD @node.tokens.delete self unless preserve_self# or @node.kind_of?( NccPartner ) @wme.tokens.delete self if @wme @parent.children.delete self if @parent retract_generated deexecute case @node when NegNode @neg_join_results.each do |njr| njr.wme.neg_join_results.delete njr if njr.wme end @neg_join_results = [] when OptionalNode @opt_join_results.each do |ojr| ojr.wme.opt_join_results.delete ojr end @opt_join_results = [] when NccNode @ncc_results.each do |nccr| nccr.wme.tokens.delete nccr nccr.parent.children.delete nccr end @ncc_results = [] when NccPartner @owner.ncc_results.delete self if @owner.ncc_results.empty? @node.ncc.children.each do |node| node.left_activate @owner, nil, {} end end end end |
#delete_children ⇒ Object
98 99 100 101 102 |
# File 'lib/wongi-engine/token.rb', line 98 def delete_children while @children.first @children.first.delete end end |
#subst(variable, value) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/wongi-engine/token.rb', line 27 def subst variable, value @cached_assignments = nil if @assignments.has_key? variable @assignments[ variable ] = value end end |
#to_s ⇒ Object
42 43 44 45 46 47 |
# File 'lib/wongi-engine/token.rb', line 42 def to_s str = "TOKEN [\n" all_assignments.each_pair { |key, value| str << "\t#{key} => #{value}\n" } str << "]" str end |
#wmes ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/wongi-engine/token.rb', line 49 def wmes if parent parent.wmes + [wme] else [wme] end end |