wongi-engine 0.0.17 → 0.1.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|