wongi-engine 0.0.17 → 0.1.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.hgtags +1 -0
- data/LICENSE +1 -1
- data/lib/wongi-engine/alpha_memory.rb +4 -4
- data/lib/wongi-engine/beta/assignment_node.rb +17 -2
- data/lib/wongi-engine/beta/beta_memory.rb +25 -29
- data/lib/wongi-engine/beta/beta_node.rb +11 -11
- data/lib/wongi-engine/beta/filter_node.rb +15 -2
- data/lib/wongi-engine/beta/join_node.rb +43 -30
- data/lib/wongi-engine/beta/ncc_node.rb +47 -17
- data/lib/wongi-engine/beta/ncc_partner.rb +24 -14
- data/lib/wongi-engine/beta/neg_node.rb +64 -24
- data/lib/wongi-engine/beta/optional_node.rb +111 -19
- data/lib/wongi-engine/beta/production_node.rb +11 -8
- data/lib/wongi-engine/core_ext.rb +6 -0
- data/lib/wongi-engine/dsl/actions/simple_action.rb +41 -4
- data/lib/wongi-engine/dsl/actions/statement_generator.rb +11 -0
- data/lib/wongi-engine/network.rb +56 -19
- data/lib/wongi-engine/template.rb +2 -6
- data/lib/wongi-engine/token.rb +42 -41
- data/lib/wongi-engine/version.rb +1 -1
- data/lib/wongi-engine/wme.rb +39 -40
- data/spec/bug_specs/issue_4_spec.rb +5 -4
- data/spec/filter_specs/assert_test_spec.rb +21 -4
- data/spec/network_spec.rb +182 -0
- data/spec/rule_specs/assign_spec.rb +21 -17
- data/spec/rule_specs/maybe_rule_spec.rb +56 -29
- data/spec/rule_specs/ncc_spec.rb +6 -6
- data/spec/spec_helper.rb +0 -1
- metadata +11 -29
- data/wongi-engine.gemspec +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a090dea5a39943ac1d887178b7d1b9a5df3f618c
|
4
|
+
data.tar.gz: ceca588238658bf643d067e3502643e554719ef5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb3fc2402bcdfe4afbd0b0f5bf72aba18b32f40a89c013c429f0507414f7f243962f42dff3aa31bf412a5345f449eb6d13b152fc9f6120efacd2cade85b4290d
|
7
|
+
data.tar.gz: 39063e5d6c69a37bd3b10a52badf24666d79c0d887a110f528e3b94b498a5e21273c702e4c8e80f024e0b6d1d6723c8cdb91ab9cb200a4c56ad35b487580ffcf
|
data/.hgtags
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
b1dfd471a2a9e4a57f0e4932ac184faa5d6fa5b5 v0.1.0.alpha1
|
data/LICENSE
CHANGED
@@ -21,11 +21,11 @@ module Wongi::Engine
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
24
|
+
def deactivate wme
|
25
25
|
@wmes.delete wme
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
betas.each do |beta|
|
27
|
+
beta.alpha_deactivate wme
|
28
|
+
end
|
29
29
|
end
|
30
30
|
|
31
31
|
def snapshot! alpha
|
@@ -23,14 +23,29 @@ module Wongi::Engine
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def beta_activate token, wme = nil, assignments = { }
|
26
|
-
|
26
|
+
children.each do |child|
|
27
|
+
child.beta_activate Token.new( child, token, nil, { @variable => @body } )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def beta_deactivate token
|
32
|
+
children.each do |child|
|
33
|
+
child.tokens.each do |t|
|
34
|
+
if t.parent == token
|
35
|
+
child.beta_deactivate t
|
36
|
+
#token.destroy
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
27
40
|
end
|
28
41
|
|
29
42
|
def refresh_child child
|
30
43
|
tmp = children
|
31
44
|
self.children = [ child ]
|
32
45
|
parent.tokens.each do |token|
|
33
|
-
|
46
|
+
children.each do |child|
|
47
|
+
child.beta_activate Token.new( child, token, nil, { @variable => @body } )
|
48
|
+
end
|
34
49
|
end
|
35
50
|
self.children = tmp
|
36
51
|
end
|
@@ -14,16 +14,14 @@ module Wongi::Engine
|
|
14
14
|
|
15
15
|
def seed assignments = {}
|
16
16
|
@seed = assignments
|
17
|
-
t = Token.new( nil, nil, assignments )
|
18
|
-
t.node = self
|
17
|
+
t = Token.new( self, nil, nil, assignments )
|
19
18
|
@tokens << t
|
20
19
|
end
|
21
20
|
|
22
21
|
def subst valuations
|
23
22
|
@tokens.first.destroy
|
24
23
|
|
25
|
-
token = Token.new( nil, nil, @seed )
|
26
|
-
token.node = self
|
24
|
+
token = Token.new( self, nil, nil, @seed )
|
27
25
|
@tokens << token
|
28
26
|
|
29
27
|
valuations.each { |variable, value| token.subst variable, value }
|
@@ -32,40 +30,38 @@ module Wongi::Engine
|
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
35
|
-
def beta_activate token
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
t = Token.new( token, wme, assignments)
|
42
|
-
t.node = self
|
43
|
-
@tokens << t
|
33
|
+
def beta_activate token
|
34
|
+
existing = @tokens.reject(&:deleted?).find { |et| et.duplicate? token }
|
35
|
+
return if existing # TODO really?
|
36
|
+
@tokens << token
|
37
|
+
children.each do |child|
|
38
|
+
child.beta_activate token
|
44
39
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
40
|
+
token
|
41
|
+
end
|
42
|
+
|
43
|
+
def beta_deactivate token
|
44
|
+
return nil unless tokens.find token
|
45
|
+
@tokens.delete token
|
46
|
+
token.deleted!
|
47
|
+
if token.parent
|
48
|
+
token.parent.children.delete token # should this go into Token#destroy?
|
49
|
+
end
|
50
|
+
children.each do |child|
|
51
|
+
child.beta_deactivate token
|
51
52
|
end
|
52
|
-
|
53
|
+
token
|
53
54
|
end
|
54
55
|
|
55
56
|
def refresh_child child
|
56
57
|
tokens.each do |token|
|
57
|
-
|
58
|
-
when BetaMemory, NegNode
|
59
|
-
child.beta_activate token, nil, {}
|
60
|
-
else
|
61
|
-
child.beta_activate token
|
62
|
-
end
|
58
|
+
child.beta_activate token
|
63
59
|
end
|
64
60
|
end
|
65
61
|
|
66
|
-
def delete_token token
|
67
|
-
|
68
|
-
end
|
62
|
+
# def delete_token token
|
63
|
+
# @tokens.delete token
|
64
|
+
# end
|
69
65
|
|
70
66
|
# => TODO: investigate if we really need this
|
71
67
|
#def beta_memory
|
@@ -34,6 +34,13 @@ module Wongi::Engine
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
abstract :alpha_activate
|
38
|
+
abstract :alpha_deactivate
|
39
|
+
abstract :alpha_reactivate
|
40
|
+
abstract :beta_activate
|
41
|
+
abstract :beta_deactivate
|
42
|
+
abstract :beta_reactivate
|
43
|
+
|
37
44
|
def beta_memory
|
38
45
|
beta = children.find { |node| BetaMemory === node }
|
39
46
|
if beta.nil?
|
@@ -44,11 +51,11 @@ module Wongi::Engine
|
|
44
51
|
beta
|
45
52
|
end
|
46
53
|
|
47
|
-
def join_node alpha, tests, assignment,
|
48
|
-
existing = children.find{ |node| JoinNode === node && node.equivalent?( alpha, tests, assignment
|
54
|
+
def join_node alpha, tests, assignment, alpha_deaf
|
55
|
+
existing = children.find{ |node| JoinNode === node && node.equivalent?( alpha, tests, assignment ) }
|
49
56
|
return existing if existing
|
50
57
|
|
51
|
-
node = JoinNode.new self, tests, assignment
|
58
|
+
node = JoinNode.new self, tests, assignment
|
52
59
|
node.alpha = alpha
|
53
60
|
alpha.betas << node unless alpha_deaf
|
54
61
|
|
@@ -56,8 +63,7 @@ module Wongi::Engine
|
|
56
63
|
end
|
57
64
|
|
58
65
|
def optional_node alpha, tests, assignment, alpha_deaf
|
59
|
-
node = OptionalNode.new self, tests, assignment
|
60
|
-
node.alpha = alpha
|
66
|
+
node = OptionalNode.new self, alpha, tests, assignment
|
61
67
|
alpha.betas << node unless alpha_deaf
|
62
68
|
node
|
63
69
|
end
|
@@ -147,12 +153,6 @@ module Wongi::Engine
|
|
147
153
|
|
148
154
|
private
|
149
155
|
|
150
|
-
def propagate_activation token, wme, assignments
|
151
|
-
self.children.each do |child|
|
152
|
-
child.beta_activate token, wme, assignments
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
156
|
def dp message
|
157
157
|
if debug?
|
158
158
|
puts "#{indent}#{message}"
|
@@ -10,9 +10,22 @@ module Wongi
|
|
10
10
|
self.test = test
|
11
11
|
end
|
12
12
|
|
13
|
-
def beta_activate token
|
13
|
+
def beta_activate token
|
14
14
|
if test.passes? token
|
15
|
-
|
15
|
+
children.each do |child|
|
16
|
+
child.beta_activate Token.new( child, token, nil, {} )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def beta_deactivate token
|
22
|
+
children.each do |child|
|
23
|
+
child.tokens.each do |t|
|
24
|
+
if t.parent == token
|
25
|
+
child.beta_deactivate t
|
26
|
+
#token.destroy
|
27
|
+
end
|
28
|
+
end
|
16
29
|
end
|
17
30
|
end
|
18
31
|
|
@@ -5,6 +5,9 @@ module Wongi
|
|
5
5
|
def call token = nil
|
6
6
|
wme.send field
|
7
7
|
end
|
8
|
+
def inspect
|
9
|
+
"subject of #{wme}"
|
10
|
+
end
|
8
11
|
end
|
9
12
|
|
10
13
|
class BetaTest
|
@@ -34,16 +37,14 @@ module Wongi
|
|
34
37
|
attr_accessor :alpha
|
35
38
|
attr_reader :tests
|
36
39
|
attr_reader :assignment_pattern
|
37
|
-
attr_reader :filters
|
38
40
|
|
39
|
-
def initialize parent, tests, assignment
|
41
|
+
def initialize parent, tests, assignment
|
40
42
|
super(parent)
|
41
43
|
@tests = tests
|
42
44
|
@assignment_pattern = assignment
|
43
|
-
@filters = filters
|
44
45
|
end
|
45
46
|
|
46
|
-
def equivalent? alpha, tests, assignment_pattern
|
47
|
+
def equivalent? alpha, tests, assignment_pattern
|
47
48
|
return false unless self.alpha == alpha
|
48
49
|
return false unless self.assignment_pattern == assignment_pattern
|
49
50
|
return false unless (self.tests.empty? && tests.empty?) || self.tests.length == tests.length && self.tests.all? { |my_test|
|
@@ -51,25 +52,27 @@ module Wongi
|
|
51
52
|
my_test.equivalent? new_test
|
52
53
|
}
|
53
54
|
}
|
54
|
-
return false unless (self.filters.empty? && filters.empty?) || self.filters.length == filters.length && self.filters.all? { |my_filter|
|
55
|
-
filters.include? my_filter
|
56
|
-
}
|
57
55
|
true
|
58
56
|
end
|
59
57
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
58
|
+
def alpha_activate wme
|
59
|
+
assignments = collect_assignments( wme )
|
60
|
+
parent.tokens.each do |token|
|
61
|
+
if matches?( token, wme )
|
62
|
+
children.each do |beta|
|
63
|
+
beta.beta_activate Token.new( beta, token, wme, assignments )
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
63
67
|
end
|
64
68
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
propagate_activation token, wme, collected
|
69
|
+
def alpha_deactivate wme
|
70
|
+
children.each do |child|
|
71
|
+
child.tokens.each do |token|
|
72
|
+
if token.wme == wme
|
73
|
+
child.beta_deactivate token
|
74
|
+
#token.destroy
|
75
|
+
end
|
73
76
|
end
|
74
77
|
end
|
75
78
|
end
|
@@ -78,23 +81,38 @@ module Wongi
|
|
78
81
|
dp "JOIN beta-activated"
|
79
82
|
self.alpha.wmes.each do |wme|
|
80
83
|
dp "-TESTING WME #{wme}"
|
81
|
-
|
82
|
-
if matches?( token, wme )
|
84
|
+
assignments = collect_assignments( wme )
|
85
|
+
if matches?( token, wme )
|
83
86
|
dp "-WME MATCHED, PROPAGATING"
|
84
|
-
|
87
|
+
children.each do |beta|
|
88
|
+
beta.beta_activate Token.new( beta, token, wme, assignments )
|
89
|
+
end
|
85
90
|
else
|
86
91
|
dp "-NO MATCH"
|
87
92
|
end
|
88
93
|
end
|
89
94
|
end
|
90
95
|
|
96
|
+
def beta_deactivate token
|
97
|
+
children.each do |child|
|
98
|
+
child.tokens.each do |t|
|
99
|
+
if t.parent == token
|
100
|
+
child.beta_deactivate t
|
101
|
+
#token.destroy
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
91
107
|
def refresh_child child
|
92
|
-
tmp = children
|
93
|
-
self.children = [ child ]
|
94
108
|
alpha.wmes.each do |wme|
|
95
|
-
|
109
|
+
assignments = collect_assignments( wme )
|
110
|
+
parent.tokens.each do |token|
|
111
|
+
if matches?( token, wme )
|
112
|
+
child.beta_activate Token.new( child, token, wme, assignments )
|
113
|
+
end
|
114
|
+
end
|
96
115
|
end
|
97
|
-
self.children = tmp
|
98
116
|
end
|
99
117
|
|
100
118
|
def self.compile condition, earlier, parameters
|
@@ -136,11 +154,6 @@ module Wongi
|
|
136
154
|
true
|
137
155
|
end
|
138
156
|
|
139
|
-
def passes_filters? token, wme, assignments
|
140
|
-
t = FakeToken.new token, wme, assignments
|
141
|
-
@filters.all? { |filter| filter.passes? t }
|
142
|
-
end
|
143
|
-
|
144
157
|
def collect_assignments wme
|
145
158
|
assignments = {}
|
146
159
|
return assignments if self.assignment_pattern.nil?
|
@@ -26,13 +26,10 @@ module Wongi
|
|
26
26
|
@tokens = []
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
t = Token.new token, nil, {}
|
34
|
-
t.node = self
|
35
|
-
tokens << t
|
29
|
+
def beta_activate token
|
30
|
+
return if @tokens.find { |t| t.parent == token }
|
31
|
+
t = Token.new self, token, nil, {}
|
32
|
+
@tokens << t
|
36
33
|
partner.tokens.each do |ncc_token|
|
37
34
|
next unless ncc_token.ancestors.find { |a| a.equal? token }
|
38
35
|
t.ncc_results << ncc_token
|
@@ -40,7 +37,40 @@ module Wongi
|
|
40
37
|
end
|
41
38
|
if t.ncc_results.empty?
|
42
39
|
children.each do |child|
|
43
|
-
child.beta_activate t, nil, {}
|
40
|
+
child.beta_activate Token.new( child, t, nil, { } )
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def beta_deactivate token
|
46
|
+
t = @tokens.find { |tok| tok.parent == token }
|
47
|
+
return unless @tokens.delete t
|
48
|
+
t.deleted!
|
49
|
+
partner.tokens.select { |ncc| ncc.owner == t }.each do |ncc_token|
|
50
|
+
ncc_token.owner = nil
|
51
|
+
t.ncc_results.delete ncc_token
|
52
|
+
end
|
53
|
+
children.each do |beta|
|
54
|
+
beta.tokens.select { |token| token.parent == t }.each do |token|
|
55
|
+
beta.beta_deactivate token
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def ncc_activate token
|
61
|
+
token.deleted = false
|
62
|
+
@tokens << token unless @tokens.include?( token )
|
63
|
+
children.each do |child|
|
64
|
+
child.beta_activate Token.new( child, token, nil, { } )
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def ncc_deactivate token
|
69
|
+
return unless @tokens.delete token
|
70
|
+
token.deleted!
|
71
|
+
children.each do |beta|
|
72
|
+
beta.tokens.select { |t| t.parent == token }.each do |t|
|
73
|
+
beta.beta_deactivate t
|
44
74
|
end
|
45
75
|
end
|
46
76
|
end
|
@@ -48,19 +78,19 @@ module Wongi
|
|
48
78
|
def refresh_child child
|
49
79
|
tokens.each do |token|
|
50
80
|
if token.ncc_results.empty?
|
51
|
-
child.beta_activate
|
81
|
+
child.beta_activate Token.new( child, t, nil, { } )
|
52
82
|
end
|
53
83
|
end
|
54
84
|
end
|
55
85
|
|
56
|
-
def delete_token token
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
86
|
+
# def delete_token token
|
87
|
+
# tokens.delete token
|
88
|
+
# token.ncc_results.each do |nccr|
|
89
|
+
# nccr.wme.tokens.delete( nccr ) if nccr.wme
|
90
|
+
# nccr.parent.children.delete nccr
|
91
|
+
# end
|
92
|
+
# token.ncc_results.clear
|
93
|
+
# end
|
64
94
|
|
65
95
|
end
|
66
96
|
end
|
@@ -14,31 +14,41 @@ module Wongi
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def beta_activate token
|
17
|
-
t = Token.new token, nil, {}
|
18
|
-
|
19
|
-
|
20
|
-
# ncc_token.parent.node == divergent
|
21
|
-
# end
|
22
|
-
divergent_token = t.ancestors.find { |a| a.node == divergent }
|
23
|
-
owner = ncc.tokens.find { |o| o.parent == divergent_token }
|
17
|
+
t = Token.new self, token, nil, {}
|
18
|
+
owner = owner_for( t )
|
19
|
+
tokens << t
|
24
20
|
if owner
|
25
21
|
owner.ncc_results << t
|
26
22
|
t.owner = owner
|
27
|
-
owner.
|
28
|
-
else
|
29
|
-
tokens << t
|
23
|
+
owner.node.ncc_deactivate owner
|
30
24
|
end
|
31
25
|
end
|
32
26
|
|
33
|
-
def
|
27
|
+
def beta_deactivate t
|
28
|
+
token = tokens.find { |tok| tok.parent == t }
|
29
|
+
return unless token
|
34
30
|
token.owner.ncc_results.delete token
|
35
31
|
if token.owner.ncc_results.empty?
|
36
|
-
ncc.
|
37
|
-
node.beta_activate token.owner, nil, {}
|
38
|
-
end
|
32
|
+
ncc.ncc_activate token.owner
|
39
33
|
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
40
37
|
|
38
|
+
def owner_for token
|
39
|
+
divergent_token = token.ancestors.find { |t| t.node == divergent }
|
40
|
+
ncc.tokens.find { |t| t.ancestors.include? divergent_token }
|
41
41
|
end
|
42
|
+
|
43
|
+
# def delete_token token
|
44
|
+
# token.owner.ncc_results.delete token
|
45
|
+
# if token.owner.ncc_results.empty?
|
46
|
+
# ncc.children.each do |node|
|
47
|
+
# node.beta_activate token.owner, nil, {}
|
48
|
+
# end
|
49
|
+
# end
|
50
|
+
|
51
|
+
# end
|
42
52
|
end
|
43
53
|
end
|
44
54
|
end
|
@@ -1,11 +1,16 @@
|
|
1
1
|
module Wongi
|
2
2
|
module Engine
|
3
3
|
|
4
|
-
NegJoinResult = Struct.new :
|
4
|
+
NegJoinResult = Struct.new :token, :wme do
|
5
|
+
def unlink
|
6
|
+
wme.neg_join_results.delete self
|
7
|
+
token.neg_join_results.delete self
|
8
|
+
end
|
9
|
+
end
|
5
10
|
|
6
11
|
class NegNode < BetaNode
|
7
12
|
|
8
|
-
attr_reader :
|
13
|
+
attr_reader :alpha, :tests
|
9
14
|
|
10
15
|
def initialize parent, tests, alpha, unsafe
|
11
16
|
super(parent)
|
@@ -18,36 +23,71 @@ module Wongi
|
|
18
23
|
if matches?( token, wme ) && ( @unsafe || ! token.generated?( wme ) )# feedback loop protection
|
19
24
|
# order matters for proper invalidation
|
20
25
|
make_join_result(token, wme)
|
21
|
-
token.delete_children #if token.neg_join_results.empty? # TODO why was this check here? it seems to break things
|
26
|
+
#token.delete_children #if token.neg_join_results.empty? # TODO why was this check here? it seems to break things
|
27
|
+
children.each do |child|
|
28
|
+
child.tokens.each do |t|
|
29
|
+
if t.parent == token
|
30
|
+
child.beta_deactivate t
|
31
|
+
#token.destroy
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
22
35
|
end
|
23
36
|
end
|
24
37
|
end
|
25
38
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
39
|
+
def alpha_deactivate wme
|
40
|
+
wme.neg_join_results.dup.each do |njr|
|
41
|
+
safe_tokens.each do |token|
|
42
|
+
next unless token == njr.token
|
43
|
+
njr.unlink
|
44
|
+
if token.neg_join_results.empty?
|
45
|
+
children.each do |child|
|
46
|
+
child.beta_activate Token.new( child, token, nil, {} )
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
34
50
|
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def beta_activate token
|
54
|
+
return if @tokens.find { |et| et.duplicate? token }
|
55
|
+
@tokens << token
|
35
56
|
alpha.wmes.each do |wme|
|
36
|
-
if matches?(
|
37
|
-
make_join_result(
|
57
|
+
if matches?( token, wme )
|
58
|
+
make_join_result(token, wme)
|
38
59
|
end
|
39
60
|
end
|
40
|
-
if
|
41
|
-
|
42
|
-
child.beta_activate
|
61
|
+
if token.neg_join_results.empty?
|
62
|
+
children.each do |child|
|
63
|
+
child.beta_activate Token.new( child, token, nil, {} )
|
43
64
|
end
|
44
65
|
end
|
45
66
|
end
|
46
67
|
|
68
|
+
def beta_deactivate token
|
69
|
+
return nil unless tokens.find token
|
70
|
+
@tokens.delete token
|
71
|
+
token.deleted!
|
72
|
+
if token.parent
|
73
|
+
token.parent.children.delete token # should this go into Token#destroy?
|
74
|
+
end
|
75
|
+
token.neg_join_results.each &:unlink
|
76
|
+
children.each do |child|
|
77
|
+
child.tokens.each do |t|
|
78
|
+
if t.parent == token
|
79
|
+
child.beta_deactivate t
|
80
|
+
#token.destroy
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
token
|
85
|
+
end
|
86
|
+
|
47
87
|
def refresh_child child
|
48
88
|
safe_tokens.each do |token|
|
49
89
|
if token.neg_join_results.empty?
|
50
|
-
child.beta_activate token, nil, {}
|
90
|
+
child.beta_activate Token.new( child, token, nil, {} )
|
51
91
|
end
|
52
92
|
end
|
53
93
|
alpha.wmes.each do |wme|
|
@@ -55,13 +95,13 @@ module Wongi
|
|
55
95
|
end
|
56
96
|
end
|
57
97
|
|
58
|
-
def delete_token token
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
98
|
+
# def delete_token token
|
99
|
+
# tokens.delete token
|
100
|
+
# token.neg_join_results.each do |njr|
|
101
|
+
# njr.wme.neg_join_results.delete njr if njr.wme
|
102
|
+
# end
|
103
|
+
# token.neg_join_results.clear
|
104
|
+
# end
|
65
105
|
|
66
106
|
protected
|
67
107
|
|