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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf15effd33cba1faca7c6b2a6ce8b8a4730981a9b778fb5d41e11b4dce7803f8
4
- data.tar.gz: 8d3cc0c99061e7097747b4339c55a83c11e79bb0edfbba4a0c95e4c850301595
3
+ metadata.gz: 49eb7efc3f4049b38a7035208884d2078e0e31e68d396fb647deb81add7a030c
4
+ data.tar.gz: 6916568d628dbfce536001472c224f0fcee9ab580d4d9f2df30f04edb77bb45d
5
5
  SHA512:
6
- metadata.gz: 7140c583e23389df8f5c959b7ed31220782d72afcbd10f0883ba7314f24534656f1ca3fed33ed9d49a7962da8cbe7535f48bf160be88eef86d3798efe7ccece5
7
- data.tar.gz: 3f0e9957b8497666a25c3ac933bcfe93495ed2c4cdac2f4eb27468c95401a107139f6a23840816241f94c0811edf69ab373818dd33def938d3ae9450505c68b5
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](http://ulfurinn.github.io/wongi-engine/) and stick to the constructs described in it.
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
- candidates = select_wmes(alpha.template) { |asserted_wme| matches?(token, asserted_wme) }
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
- select_wmes(alpha.template).each do |wme|
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
- @tests.each do |test|
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
- select_wmes(alpha.template).each do |wme|
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
- select_wmes(alpha.template).each do |wme|
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
 
@@ -1,5 +1,5 @@
1
1
  module Wongi
2
2
  module Engine
3
- VERSION = "0.4.0-alpha1".freeze
3
+ VERSION = "0.4.0-alpha2".freeze
4
4
  end
5
5
  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.4.0.pre.alpha1
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-14 00:00:00.000000000 Z
11
+ date: 2022-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry