wongi-engine 0.4.0.pre.alpha1 → 0.4.0.pre.alpha2
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/README.md +1 -1
- data/lib/wongi-engine/beta/aggregate_node.rb +2 -1
- data/lib/wongi-engine/beta/beta_node.rb +9 -0
- data/lib/wongi-engine/beta/join_node.rb +3 -2
- data/lib/wongi-engine/beta/neg_node.rb +3 -1
- data/lib/wongi-engine/beta/optional_node.rb +3 -1
- data/lib/wongi-engine/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49eb7efc3f4049b38a7035208884d2078e0e31e68d396fb647deb81add7a030c
|
4
|
+
data.tar.gz: 6916568d628dbfce536001472c224f0fcee9ab580d4d9f2df30f04edb77bb45d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 437466d4256f5ff96bf741e879054f2e5a7499f3876ed73cbd00b155caf6b5f06cfb60378941e36cba6dd912b8d61cbe8b4cdfec58a0b60f121841cdd63c3bd9
|
7
|
+
data.tar.gz: 5e8ca5469c6b20cb63928a0c4c128f3391ae74c29e09608b0a7045d6d979bc03d9d8b95f49f4282898531ee8f69e7bd9abcd8ebb8164aa4d612292e01b509be3
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Ruby >= 2.7 and JRuby are supported. Rubinius should work but isn't actively sup
|
|
11
11
|
|
12
12
|
There is no API documentation, as most of the library's interfaces are for internal use only and would not be safe to use directly.
|
13
13
|
|
14
|
-
Instead, follow the [tutorial](
|
14
|
+
Instead, follow the [tutorial](https://ulfurinn.github.io/wongi-engine/) and stick to the constructs described in it.
|
15
15
|
|
16
16
|
## Upgrading
|
17
17
|
|
@@ -62,7 +62,8 @@ module Wongi::Engine
|
|
62
62
|
# # TODO: optimise: only clean up if the value changed
|
63
63
|
beta_deactivate_children(token: token)
|
64
64
|
|
65
|
-
|
65
|
+
template = specialize(alpha.template, tests, token)
|
66
|
+
candidates = select_wmes(template) { |asserted_wme| matches?(token, asserted_wme) }
|
66
67
|
|
67
68
|
return if candidates.empty?
|
68
69
|
|
@@ -61,6 +61,15 @@ module Wongi::Engine
|
|
61
61
|
rete.current_overlay.select(template)
|
62
62
|
end
|
63
63
|
|
64
|
+
private def specialize(template, tests, token)
|
65
|
+
tests.each_with_object(template.dup) do |test, template|
|
66
|
+
var = test.variable
|
67
|
+
if token.has_var?(var)
|
68
|
+
template.public_send("#{test.field}=", token[var])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
64
73
|
def tokens
|
65
74
|
overlay.node_tokens(self)
|
66
75
|
end
|
@@ -65,7 +65,8 @@ module Wongi
|
|
65
65
|
|
66
66
|
overlay.add_token(token)
|
67
67
|
|
68
|
-
|
68
|
+
template = specialize(alpha.template, tests, token)
|
69
|
+
select_wmes(template).each do |wme|
|
69
70
|
next unless matches?(token, wme)
|
70
71
|
|
71
72
|
assignments = collect_assignments(wme)
|
@@ -93,7 +94,7 @@ module Wongi
|
|
93
94
|
protected
|
94
95
|
|
95
96
|
def matches?(token, wme)
|
96
|
-
|
97
|
+
tests.each do |test|
|
97
98
|
return false unless test.matches?(token, wme)
|
98
99
|
end
|
99
100
|
true
|
@@ -44,7 +44,9 @@ module Wongi
|
|
44
44
|
return if tokens.find { |t| t.duplicate? token }
|
45
45
|
|
46
46
|
overlay.add_token(token)
|
47
|
-
|
47
|
+
|
48
|
+
template = specialize(alpha.template, tests, token)
|
49
|
+
select_wmes(template).each do |wme|
|
48
50
|
overlay.add_neg_join_result(NegJoinResult.new(token, wme)) if matches?(token, wme)
|
49
51
|
end
|
50
52
|
return if overlay.neg_join_results_for(token: token).any?
|
@@ -55,8 +55,10 @@ module Wongi
|
|
55
55
|
return if tokens.find { |t| t.duplicate? token }
|
56
56
|
|
57
57
|
overlay.add_token(token)
|
58
|
+
|
58
59
|
match = false
|
59
|
-
|
60
|
+
template = specialize(alpha.template, tests, token)
|
61
|
+
select_wmes(template).each do |wme|
|
60
62
|
assignments = collect_assignments(wme)
|
61
63
|
next unless matches? token, wme
|
62
64
|
|
data/lib/wongi-engine/version.rb
CHANGED
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.4.0.pre.
|
4
|
+
version: 0.4.0.pre.alpha2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valeri Sokolov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|