wongi-engine 0.2.6 → 0.2.7
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/.travis.yml +1 -0
- data/lib/wongi-engine/beta/ncc_node.rb +0 -4
- data/lib/wongi-engine/beta/ncc_partner.rb +5 -3
- data/lib/wongi-engine/version.rb +1 -1
- data/spec/bug_specs/issue_4_spec.rb +1 -1
- data/spec/generation_spec.rb +1 -1
- data/spec/rule_specs/assign_spec.rb +1 -1
- data/spec/rule_specs/maybe_rule_spec.rb +1 -1
- data/spec/rule_specs/ncc_spec.rb +51 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51fa3bdb2ee8d509f179b467564af30d9922b13a
|
4
|
+
data.tar.gz: 1736ff23ea8708629ef21ed3eb877fa39116f250
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40b30715a6e2b89e9a2a6ea4ce52a40ce48f3fc78860bd2ada3431ad45228c953590b8be25d3cdff66280bdd201837da8eaeb48934da0111a315d6fe7f6b6f91
|
7
|
+
data.tar.gz: bfc4f7e1d7e2b22cb8dac7d1845fcabdf069b3f0ba4786a2f9d8a9df5738d154b82cedb2f1ec1868690ecc12c1675bd46cfb46c54408d48ea9b1879e99df0e77
|
data/.travis.yml
CHANGED
@@ -42,16 +42,12 @@ module Wongi
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def ncc_activate token
|
45
|
-
token.deleted = false
|
46
|
-
token.overlay.add_token(token, self)
|
47
45
|
children.each do |child|
|
48
46
|
child.beta_activate Token.new( child, token, nil, { } )
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
52
50
|
def ncc_deactivate token
|
53
|
-
token.overlay.remove_token(token, self)
|
54
|
-
token.deleted!
|
55
51
|
children.each do |beta|
|
56
52
|
beta.tokens.select { |t| t.parent == token }.each do |t|
|
57
53
|
beta.beta_deactivate t
|
@@ -21,9 +21,11 @@ module Wongi
|
|
21
21
|
token = tokens.find { |tok| tok.parent == t }
|
22
22
|
return unless token
|
23
23
|
token.overlay.remove_token(token, self)
|
24
|
-
token.owner
|
25
|
-
|
26
|
-
|
24
|
+
if owner = token.owner
|
25
|
+
owner.ncc_results.delete token
|
26
|
+
if owner.ncc_results.empty?
|
27
|
+
ncc.ncc_activate owner
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
data/lib/wongi-engine/version.rb
CHANGED
data/spec/generation_spec.rb
CHANGED
@@ -47,7 +47,7 @@ describe Wongi::Engine::DSL::Action::StatementGenerator do
|
|
47
47
|
engine << %w( Claire relative Dwight )
|
48
48
|
end
|
49
49
|
|
50
|
-
it 'should be created'
|
50
|
+
it 'should be created' do
|
51
51
|
expect( production ).to have(2).tokens
|
52
52
|
expect( engine.find *%w( Alice relative Dwight ) ).not_to be_nil
|
53
53
|
end
|
data/spec/rule_specs/ncc_spec.rb
CHANGED
@@ -209,4 +209,55 @@ describe Wongi::Engine::NccNode do
|
|
209
209
|
|
210
210
|
end
|
211
211
|
|
212
|
+
it 'should ncc-deactivate without destroying tokens' do
|
213
|
+
engine << rule {
|
214
|
+
forall {
|
215
|
+
has :Student, :is_a, :student
|
216
|
+
has :Course, :is_a, :course
|
217
|
+
none {
|
218
|
+
has :Requirement, :is_a, :requirement
|
219
|
+
has :Course, :Requirement, :RequiredGrade
|
220
|
+
any {
|
221
|
+
option {
|
222
|
+
neg :Student, :Requirement, :_
|
223
|
+
}
|
224
|
+
option {
|
225
|
+
has :Student, :Requirement, :ReceivedGrade
|
226
|
+
less :ReceivedGrade, :RequiredGrade
|
227
|
+
}
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
make {
|
232
|
+
gen :Student, :passes_for, :Course
|
233
|
+
}
|
234
|
+
}
|
235
|
+
|
236
|
+
File.open "rete.dot", "w" do |io|
|
237
|
+
Wongi::Engine::Graph.new( engine ).dot( io )
|
238
|
+
end
|
239
|
+
|
240
|
+
|
241
|
+
%w( math science english bio ).each { |req| engine << [ req, :is_a, :requirement ] }
|
242
|
+
%w( CourseA CourseB CourseC ).each { |course| engine << [ course, :is_a, :course ] }
|
243
|
+
engine << [ "StudentA", :is_a, :student ]
|
244
|
+
|
245
|
+
engine << ["CourseA", "math", 50]
|
246
|
+
engine << ["CourseA", "science", 50]
|
247
|
+
|
248
|
+
engine << ["CourseB", "math", 50]
|
249
|
+
engine << ["CourseB", "english", 50]
|
250
|
+
|
251
|
+
engine << ["CourseC", "math", 50]
|
252
|
+
engine << ["CourseC", "bio", 50]
|
253
|
+
|
254
|
+
engine << ["StudentA", "math", 60]
|
255
|
+
engine << ["StudentA", "science", 60]
|
256
|
+
engine << ["StudentA", "bio", 40]
|
257
|
+
|
258
|
+
expect(engine.find "StudentA", :passes_for, "CourseA").not_to be_nil
|
259
|
+
expect(engine.find "StudentA", :passes_for, "CourseB").to be_nil
|
260
|
+
expect(engine.find "StudentA", :passes_for, "CourseC").to be_nil
|
261
|
+
end
|
262
|
+
|
212
263
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wongi-engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valeri Sokolov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
184
|
version: '0'
|
185
185
|
requirements: []
|
186
186
|
rubyforge_project:
|
187
|
-
rubygems_version: 2.
|
187
|
+
rubygems_version: 2.5.1
|
188
188
|
signing_key:
|
189
189
|
specification_version: 4
|
190
190
|
summary: A forward-chaining rule engine in pure Ruby.
|