wongi-engine 0.2.0 → 0.2.1
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 +4 -5
- data/README.md +4 -0
- data/lib/wongi-engine/dsl/action/statement_generator.rb +3 -2
- data/lib/wongi-engine/network.rb +10 -3
- data/lib/wongi-engine/token.rb +1 -1
- data/lib/wongi-engine/version.rb +1 -1
- data/spec/overlay_spec.rb +39 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ae02e0d5aacdbab891830af73becded445cda3c2
|
|
4
|
+
data.tar.gz: 7410f6c1af9a8899d2b67f9e07815348e20b0248
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d30014e3145febf0ed88ff363dfc019392572917413d398015e66a7290ec37ac2906f1fe1a9ea8b1c441f89afc4cfa8fc49f4db6e7ac365a70dbdf9b71dc23c6
|
|
7
|
+
data.tar.gz: 86b5e6adfe13f547001413ff898207f64f3e94eadaae80dc11744141dbd9dd916a34d55f23abd435114378f324f4af8a281650b678cb13a6c0baafa1d1e33bdd
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -12,6 +12,7 @@ module Wongi::Engine
|
|
|
12
12
|
# link to rete here to ensure proper linking with token
|
|
13
13
|
wme = WME.new subject, predicate, object, rete
|
|
14
14
|
wme.manual = false
|
|
15
|
+
wme.overlay = token.overlay
|
|
15
16
|
|
|
16
17
|
production.tracer.trace( action: self, wme: wme ) if production.tracer
|
|
17
18
|
if existing = rete.exists?( wme )
|
|
@@ -25,7 +26,7 @@ module Wongi::Engine
|
|
|
25
26
|
wme.generating_tokens << token
|
|
26
27
|
# this MUST be done after we link the wme and the token
|
|
27
28
|
# in order for neg rule invalidation to work
|
|
28
|
-
|
|
29
|
+
wme.overlay.assert wme
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
end
|
|
@@ -37,7 +38,7 @@ module Wongi::Engine
|
|
|
37
38
|
l << wme if wme.generating_tokens.empty?
|
|
38
39
|
end
|
|
39
40
|
end.each do |wme|
|
|
40
|
-
|
|
41
|
+
wme.overlay.retract wme, automatic: true
|
|
41
42
|
end
|
|
42
43
|
end
|
|
43
44
|
end
|
data/lib/wongi-engine/network.rb
CHANGED
|
@@ -100,6 +100,11 @@ module Wongi::Engine
|
|
|
100
100
|
overlays.delete(o) unless o == default_overlay
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
+
# @private
|
|
104
|
+
def current_overlay
|
|
105
|
+
overlays.last
|
|
106
|
+
end
|
|
107
|
+
|
|
103
108
|
# @private
|
|
104
109
|
def overlays
|
|
105
110
|
@overlays ||= []
|
|
@@ -312,14 +317,16 @@ module Wongi::Engine
|
|
|
312
317
|
end
|
|
313
318
|
no_check = s == :_ && p == :_ && o == :_
|
|
314
319
|
template = Template.new(s, p, o).import_into self
|
|
315
|
-
|
|
320
|
+
source = best_alpha(template)
|
|
321
|
+
current_overlay.wmes(source).each do |wme|
|
|
316
322
|
yield wme if (no_check || wme =~ template)
|
|
317
323
|
end
|
|
318
324
|
end
|
|
319
325
|
|
|
320
326
|
def select s, p, o
|
|
321
327
|
template = Template.new(s, p, o)
|
|
322
|
-
|
|
328
|
+
source = best_alpha(template)
|
|
329
|
+
matching = current_overlay.wmes(source).select { |wme| wme =~ template }
|
|
323
330
|
if block_given?
|
|
324
331
|
matching.each { |st| yield st.subject, st.predicate, st.object }
|
|
325
332
|
end
|
|
@@ -330,7 +337,7 @@ module Wongi::Engine
|
|
|
330
337
|
template = Template.new(s, p, o)
|
|
331
338
|
source = best_alpha(template)
|
|
332
339
|
# puts "looking for #{template} among #{source.wmes.size} triples of #{source.template}"
|
|
333
|
-
|
|
340
|
+
current_overlay.wmes(source).find { |wme| wme =~ template }
|
|
334
341
|
end
|
|
335
342
|
|
|
336
343
|
protected
|
data/lib/wongi-engine/token.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Wongi::Engine
|
|
|
18
18
|
|
|
19
19
|
def initialize node, token, wme, assignments
|
|
20
20
|
@node, @parent, @wme, @assignments = node, token, wme, assignments
|
|
21
|
-
@overlay = wme ? wme.overlay.highest(token.overlay) : node.rete.default_overlay
|
|
21
|
+
@overlay = wme ? wme.overlay.highest(token.overlay) : (token ? token.overlay : node.rete.default_overlay)
|
|
22
22
|
@children = []
|
|
23
23
|
@deleted = false
|
|
24
24
|
@neg_join_results = []
|
data/lib/wongi-engine/version.rb
CHANGED
data/spec/overlay_spec.rb
CHANGED
|
@@ -16,7 +16,46 @@ describe Wongi::Engine::DataOverlay do
|
|
|
16
16
|
expect(production).to have(1).token
|
|
17
17
|
}
|
|
18
18
|
expect(production).to have(0).tokens
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'should generate into correct overlays' do
|
|
22
|
+
production = engine << rule {
|
|
23
|
+
forall {
|
|
24
|
+
has 1, 2, :X
|
|
25
|
+
}
|
|
26
|
+
make {
|
|
27
|
+
gen :X, 4, 5
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
engine.with_overlay { |overlay|
|
|
31
|
+
overlay << [1,2,3]
|
|
32
|
+
expect(production).to have(1).token
|
|
33
|
+
expect(engine.find(3, 4, 5)).not_to be_nil
|
|
34
|
+
}
|
|
35
|
+
expect(production).to have(0).tokens
|
|
36
|
+
expect(engine.find(3, 4, 5)).to be_nil
|
|
37
|
+
end
|
|
19
38
|
|
|
39
|
+
it 'works with assignments' do
|
|
40
|
+
production = engine << rule {
|
|
41
|
+
forall {
|
|
42
|
+
has 1, 2, :X
|
|
43
|
+
assign(:Something) { 6 }
|
|
44
|
+
}
|
|
45
|
+
make {
|
|
46
|
+
collect :Something, :stuff
|
|
47
|
+
gen :person, 'stuff', :Something
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
engine.with_overlay { |overlay|
|
|
52
|
+
overlay << [1,2,3]
|
|
53
|
+
expect(production).to have(1).token
|
|
54
|
+
expect(engine.find(:_, :_, :_)).not_to be_nil
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
expect(production).to have(0).tokens
|
|
58
|
+
expect(engine.find(:_, :_, :_)).to be_nil
|
|
20
59
|
end
|
|
21
60
|
|
|
22
61
|
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.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Valeri Sokolov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-12-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|