factbase 0.19.2 → 0.19.3
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/Gemfile +3 -3
- data/Gemfile.lock +27 -25
- data/LICENSE.txt +1 -1
- data/LICENSES/MIT.txt +1 -1
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/factbase.gemspec +1 -1
- data/lib/factbase/accum.rb +2 -2
- data/lib/factbase/cached/cached_fact.rb +4 -8
- data/lib/factbase/cached/cached_factbase.rb +2 -2
- data/lib/factbase/cached/cached_query.rb +2 -2
- data/lib/factbase/cached/cached_term.rb +2 -2
- data/lib/factbase/churn.rb +2 -2
- data/lib/factbase/fact.rb +2 -2
- data/lib/factbase/fact_as_yaml.rb +2 -2
- data/lib/factbase/flatten.rb +2 -2
- data/lib/factbase/impatient.rb +2 -2
- data/lib/factbase/indexed/indexed_absent.rb +1 -1
- data/lib/factbase/indexed/indexed_and.rb +1 -1
- data/lib/factbase/indexed/indexed_eq.rb +1 -1
- data/lib/factbase/indexed/indexed_exists.rb +1 -1
- data/lib/factbase/indexed/indexed_fact.rb +2 -2
- data/lib/factbase/indexed/indexed_factbase.rb +2 -2
- data/lib/factbase/indexed/indexed_gt.rb +1 -1
- data/lib/factbase/indexed/indexed_lt.rb +1 -1
- data/lib/factbase/indexed/indexed_not.rb +1 -1
- data/lib/factbase/indexed/indexed_one.rb +1 -1
- data/lib/factbase/indexed/indexed_or.rb +1 -1
- data/lib/factbase/indexed/indexed_query.rb +2 -2
- data/lib/factbase/indexed/indexed_term.rb +2 -2
- data/lib/factbase/indexed/indexed_unique.rb +1 -1
- data/lib/factbase/inv.rb +2 -2
- data/lib/factbase/lazy_taped.rb +1 -1
- data/lib/factbase/lazy_taped_array.rb +1 -1
- data/lib/factbase/lazy_taped_hash.rb +1 -1
- data/lib/factbase/light.rb +2 -2
- data/lib/factbase/logged.rb +2 -2
- data/lib/factbase/pre.rb +2 -2
- data/lib/factbase/query.rb +2 -2
- data/lib/factbase/rules.rb +2 -2
- data/lib/factbase/sync/sync_factbase.rb +2 -2
- data/lib/factbase/sync/sync_query.rb +2 -2
- data/lib/factbase/syntax.rb +2 -2
- data/lib/factbase/tallied.rb +2 -2
- data/lib/factbase/taped.rb +2 -2
- data/lib/factbase/tee.rb +2 -2
- data/lib/factbase/term.rb +2 -2
- data/lib/factbase/terms/absent.rb +1 -1
- data/lib/factbase/terms/agg.rb +1 -1
- data/lib/factbase/terms/always.rb +1 -1
- data/lib/factbase/terms/and.rb +1 -1
- data/lib/factbase/terms/arithmetic.rb +1 -1
- data/lib/factbase/terms/as.rb +1 -1
- data/lib/factbase/terms/assert.rb +1 -1
- data/lib/factbase/terms/base.rb +2 -2
- data/lib/factbase/terms/best.rb +1 -1
- data/lib/factbase/terms/boolean.rb +1 -1
- data/lib/factbase/terms/compare.rb +1 -1
- data/lib/factbase/terms/concat.rb +2 -2
- data/lib/factbase/terms/count.rb +1 -1
- data/lib/factbase/terms/defn.rb +3 -3
- data/lib/factbase/terms/div.rb +1 -1
- data/lib/factbase/terms/either.rb +1 -1
- data/lib/factbase/terms/empty.rb +1 -1
- data/lib/factbase/terms/env.rb +1 -1
- data/lib/factbase/terms/eq.rb +1 -1
- data/lib/factbase/terms/exists.rb +1 -1
- data/lib/factbase/terms/first.rb +1 -1
- data/lib/factbase/terms/gt.rb +1 -1
- data/lib/factbase/terms/gte.rb +1 -1
- data/lib/factbase/terms/head.rb +1 -1
- data/lib/factbase/terms/inverted.rb +1 -1
- data/lib/factbase/terms/join.rb +1 -1
- data/lib/factbase/terms/lt.rb +1 -1
- data/lib/factbase/terms/lte.rb +1 -1
- data/lib/factbase/terms/many.rb +1 -1
- data/lib/factbase/terms/matches.rb +2 -2
- data/lib/factbase/terms/max.rb +1 -1
- data/lib/factbase/terms/min.rb +1 -1
- data/lib/factbase/terms/minus.rb +1 -1
- data/lib/factbase/terms/never.rb +1 -1
- data/lib/factbase/terms/nil.rb +1 -1
- data/lib/factbase/terms/not.rb +1 -1
- data/lib/factbase/terms/nth.rb +1 -1
- data/lib/factbase/terms/one.rb +2 -2
- data/lib/factbase/terms/or.rb +1 -1
- data/lib/factbase/terms/plus.rb +1 -1
- data/lib/factbase/terms/prev.rb +1 -1
- data/lib/factbase/terms/simplified.rb +2 -2
- data/lib/factbase/terms/size.rb +1 -1
- data/lib/factbase/terms/sorted.rb +1 -1
- data/lib/factbase/terms/sprintf.rb +2 -2
- data/lib/factbase/terms/sum.rb +1 -1
- data/lib/factbase/terms/times.rb +1 -1
- data/lib/factbase/terms/to_float.rb +1 -1
- data/lib/factbase/terms/to_integer.rb +1 -1
- data/lib/factbase/terms/to_string.rb +1 -1
- data/lib/factbase/terms/to_time.rb +1 -1
- data/lib/factbase/terms/traced.rb +1 -1
- data/lib/factbase/terms/type.rb +1 -1
- data/lib/factbase/terms/undef.rb +2 -2
- data/lib/factbase/terms/unique.rb +1 -1
- data/lib/factbase/terms/when.rb +1 -1
- data/lib/factbase/terms/zero.rb +1 -1
- data/lib/factbase/to_json.rb +2 -2
- data/lib/factbase/to_xml.rb +2 -2
- data/lib/factbase/to_yaml.rb +2 -2
- data/lib/factbase/version.rb +3 -3
- data/lib/factbase.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aba67403ce0d88eedb16e819e8000c675c43e45908d9e937a08394aa27b76ce2
|
|
4
|
+
data.tar.gz: 955fe52ce4c8d8fca527f3471fee46d73f1f56a85b7778440df964e26de2d62f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7fb94faf1459fc521be7d810831c870530898605664f8c2ae74fb15c66846b4c84957e63cb593e9c2f8d6c21f5584227d057a08e51d618994aaeeb3e4e427505
|
|
7
|
+
data.tar.gz: 8ca685bc0115e1bc8ab7aa478218c179eb898cfb6a1fd7d38b8b082c3bfd479f48dd72ef82e06700cd6547bd0673d596d885521f8d43e92da879e9b01ebc2d90
|
data/Gemfile
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
source 'https://rubygems.org'
|
|
7
7
|
gemspec
|
|
8
8
|
|
|
9
9
|
gem 'benchmark', '~>0.5', require: false
|
|
10
|
-
gem 'minitest', '~>
|
|
10
|
+
gem 'minitest', '~>6.0', require: false
|
|
11
11
|
gem 'minitest-reporters', '~>1.7', require: false
|
|
12
12
|
gem 'os', '~>1.1', require: false
|
|
13
13
|
gem 'qbash', '~>0.4', require: false
|
|
14
14
|
gem 'rake', '~>13.2', require: false
|
|
15
|
-
gem 'rdoc', '
|
|
15
|
+
gem 'rdoc', '7.1.0', require: false # GPL
|
|
16
16
|
gem 'rubocop', '~>1.74', require: false
|
|
17
17
|
gem 'rubocop-minitest', '~>0.38', require: false
|
|
18
18
|
gem 'rubocop-performance', '~>1.25', require: false
|
data/Gemfile.lock
CHANGED
|
@@ -21,46 +21,48 @@ GEM
|
|
|
21
21
|
backtrace (0.4.1)
|
|
22
22
|
benchmark (0.5.0)
|
|
23
23
|
builder (3.3.0)
|
|
24
|
-
concurrent-ruby (1.3.
|
|
25
|
-
date (3.5.
|
|
24
|
+
concurrent-ruby (1.3.6)
|
|
25
|
+
date (3.5.1)
|
|
26
26
|
decoor (0.1.0)
|
|
27
27
|
docile (1.4.1)
|
|
28
|
-
elapsed (0.2.
|
|
28
|
+
elapsed (0.2.2)
|
|
29
29
|
loog (~> 0.6)
|
|
30
30
|
tago (~> 0.1)
|
|
31
31
|
ellipsized (0.3.0)
|
|
32
|
-
erb (6.0.
|
|
33
|
-
json (2.
|
|
32
|
+
erb (6.0.1)
|
|
33
|
+
json (2.18.0)
|
|
34
34
|
language_server-protocol (3.17.0.5)
|
|
35
35
|
lint_roller (1.1.0)
|
|
36
36
|
logger (1.7.0)
|
|
37
|
-
loog (0.
|
|
37
|
+
loog (0.7.2)
|
|
38
|
+
ellipsized
|
|
38
39
|
logger (~> 1.0)
|
|
39
|
-
minitest (
|
|
40
|
+
minitest (6.0.1)
|
|
41
|
+
prism (~> 1.5)
|
|
40
42
|
minitest-reporters (1.7.1)
|
|
41
43
|
ansi
|
|
42
44
|
builder
|
|
43
45
|
minitest (>= 5.0)
|
|
44
46
|
ruby-progressbar
|
|
45
|
-
nokogiri (1.
|
|
47
|
+
nokogiri (1.19.0-arm64-darwin)
|
|
46
48
|
racc (~> 1.4)
|
|
47
|
-
nokogiri (1.
|
|
49
|
+
nokogiri (1.19.0-x64-mingw-ucrt)
|
|
48
50
|
racc (~> 1.4)
|
|
49
|
-
nokogiri (1.
|
|
51
|
+
nokogiri (1.19.0-x86_64-darwin)
|
|
50
52
|
racc (~> 1.4)
|
|
51
|
-
nokogiri (1.
|
|
53
|
+
nokogiri (1.19.0-x86_64-linux-gnu)
|
|
52
54
|
racc (~> 1.4)
|
|
53
55
|
os (1.1.4)
|
|
54
56
|
others (0.1.1)
|
|
55
57
|
parallel (1.27.0)
|
|
56
|
-
parser (3.3.10.
|
|
58
|
+
parser (3.3.10.1)
|
|
57
59
|
ast (~> 2.4.1)
|
|
58
60
|
racc
|
|
59
|
-
prism (1.
|
|
60
|
-
psych (5.
|
|
61
|
+
prism (1.8.0)
|
|
62
|
+
psych (5.3.1)
|
|
61
63
|
date
|
|
62
64
|
stringio
|
|
63
|
-
qbash (0.
|
|
65
|
+
qbash (0.6.0)
|
|
64
66
|
backtrace (> 0)
|
|
65
67
|
elapsed (> 0)
|
|
66
68
|
loog (> 0)
|
|
@@ -68,13 +70,13 @@ GEM
|
|
|
68
70
|
racc (1.8.1)
|
|
69
71
|
rainbow (3.1.1)
|
|
70
72
|
rake (13.3.1)
|
|
71
|
-
rdoc (
|
|
73
|
+
rdoc (7.1.0)
|
|
72
74
|
erb
|
|
73
75
|
psych (>= 4.0.0)
|
|
74
76
|
tsort
|
|
75
77
|
regexp_parser (2.11.3)
|
|
76
78
|
rexml (3.4.4)
|
|
77
|
-
rubocop (1.
|
|
79
|
+
rubocop (1.82.1)
|
|
78
80
|
json (~> 2.3)
|
|
79
81
|
language_server-protocol (~> 3.17.0.2)
|
|
80
82
|
lint_roller (~> 1.1.0)
|
|
@@ -82,12 +84,12 @@ GEM
|
|
|
82
84
|
parser (>= 3.3.0.2)
|
|
83
85
|
rainbow (>= 2.2.2, < 4.0)
|
|
84
86
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
85
|
-
rubocop-ast (>= 1.
|
|
87
|
+
rubocop-ast (>= 1.48.0, < 2.0)
|
|
86
88
|
ruby-progressbar (~> 1.7)
|
|
87
89
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
88
|
-
rubocop-ast (1.
|
|
90
|
+
rubocop-ast (1.49.0)
|
|
89
91
|
parser (>= 3.3.7.2)
|
|
90
|
-
prism (~> 1.
|
|
92
|
+
prism (~> 1.7)
|
|
91
93
|
rubocop-minitest (0.38.2)
|
|
92
94
|
lint_roller (~> 1.1)
|
|
93
95
|
rubocop (>= 1.75.0, < 2.0)
|
|
@@ -110,15 +112,15 @@ GEM
|
|
|
110
112
|
simplecov-html (0.13.2)
|
|
111
113
|
simplecov_json_formatter (0.1.4)
|
|
112
114
|
stackprof (0.2.27)
|
|
113
|
-
stringio (3.
|
|
114
|
-
tago (0.
|
|
115
|
+
stringio (3.2.0)
|
|
116
|
+
tago (0.6.0)
|
|
115
117
|
threads (0.5.0)
|
|
116
118
|
backtrace (~> 0)
|
|
117
119
|
concurrent-ruby (~> 1.0)
|
|
118
120
|
tsort (0.2.0)
|
|
119
121
|
unicode-display_width (3.2.0)
|
|
120
122
|
unicode-emoji (~> 4.1)
|
|
121
|
-
unicode-emoji (4.
|
|
123
|
+
unicode-emoji (4.2.0)
|
|
122
124
|
yaml (0.4.0)
|
|
123
125
|
yard (0.9.38)
|
|
124
126
|
|
|
@@ -136,12 +138,12 @@ PLATFORMS
|
|
|
136
138
|
DEPENDENCIES
|
|
137
139
|
benchmark (~> 0.5)
|
|
138
140
|
factbase!
|
|
139
|
-
minitest (~>
|
|
141
|
+
minitest (~> 6.0)
|
|
140
142
|
minitest-reporters (~> 1.7)
|
|
141
143
|
os (~> 1.1)
|
|
142
144
|
qbash (~> 0.4)
|
|
143
145
|
rake (~> 13.2)
|
|
144
|
-
rdoc (=
|
|
146
|
+
rdoc (= 7.1.0)
|
|
145
147
|
rubocop (~> 1.74)
|
|
146
148
|
rubocop-minitest (~> 0.38)
|
|
147
149
|
rubocop-performance (~> 1.25)
|
data/LICENSE.txt
CHANGED
data/LICENSES/MIT.txt
CHANGED
data/README.md
CHANGED
|
@@ -27,7 +27,7 @@ f = fb.insert
|
|
|
27
27
|
f.kind = 'book'
|
|
28
28
|
f.title = 'Object Thinking'
|
|
29
29
|
fb.query('(eq kind "book")').each do |f|
|
|
30
|
-
f.seen =
|
|
30
|
+
f.seen = Time.now
|
|
31
31
|
end
|
|
32
32
|
fb.insert
|
|
33
33
|
fb.query('(not (exists seen))').each do |f|
|
|
@@ -210,7 +210,7 @@ This is the result of the benchmark:
|
|
|
210
210
|
|
|
211
211
|
<!-- benchmark_begin -->
|
|
212
212
|
```text
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
query all facts from an empty factbase 0.00
|
|
215
215
|
insert 20000 facts 0.67
|
|
216
216
|
export 20000 facts 0.02
|
data/Rakefile
CHANGED
data/factbase.gemspec
CHANGED
data/lib/factbase/accum.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'others'
|
|
@@ -9,7 +9,7 @@ require_relative '../factbase'
|
|
|
9
9
|
# Accumulator of props, a decorator of +Factbase::Fact+.
|
|
10
10
|
#
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2024-
|
|
12
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Factbase::Accum
|
|
15
15
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'others'
|
|
@@ -9,17 +9,15 @@ require_relative '../../factbase'
|
|
|
9
9
|
# A single fact in a factbase, which is sensitive to changes.
|
|
10
10
|
#
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2024-
|
|
12
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Factbase::CachedFact
|
|
15
15
|
# Ctor.
|
|
16
16
|
# @param [Factbase::Fact] origin The original fact
|
|
17
17
|
# @param [Hash] cache Cache of queries (to clean it on attribute addition)
|
|
18
|
-
|
|
19
|
-
def initialize(origin, cache, fresh: false)
|
|
18
|
+
def initialize(origin, cache, **)
|
|
20
19
|
@origin = origin
|
|
21
20
|
@cache = cache
|
|
22
|
-
@fresh = fresh
|
|
23
21
|
end
|
|
24
22
|
|
|
25
23
|
def to_s
|
|
@@ -28,9 +26,7 @@ class Factbase::CachedFact
|
|
|
28
26
|
|
|
29
27
|
# When a method is missing, this method is called.
|
|
30
28
|
others do |*args|
|
|
31
|
-
|
|
32
|
-
# Fresh facts are not in the cache yet, so modifications don't affect it
|
|
33
|
-
@cache.clear if args[0].to_s.end_with?('=') && !@fresh
|
|
29
|
+
@cache.clear if args[0].to_s.end_with?('=')
|
|
34
30
|
@origin.send(*args)
|
|
35
31
|
end
|
|
36
32
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'decoor'
|
|
@@ -13,7 +13,7 @@ require_relative 'cached_term'
|
|
|
13
13
|
# A factbase with a cache.
|
|
14
14
|
#
|
|
15
15
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
16
|
-
# Copyright:: Copyright (c) 2024-
|
|
16
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
17
17
|
# License:: MIT
|
|
18
18
|
class Factbase::CachedFactbase
|
|
19
19
|
decoor(:origin)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../../factbase'
|
|
@@ -9,7 +9,7 @@ require_relative 'cached_fact'
|
|
|
9
9
|
# Query with a cache, a decorator of another query.
|
|
10
10
|
#
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2024-
|
|
12
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Factbase::CachedQuery
|
|
15
15
|
include Enumerable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../../factbase'
|
|
@@ -8,7 +8,7 @@ require_relative '../../factbase'
|
|
|
8
8
|
# Term with a cache.
|
|
9
9
|
#
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2024-
|
|
11
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
module Factbase::CachedTerm
|
|
14
14
|
# Does it match the fact?
|
data/lib/factbase/churn.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
# A churn.
|
|
7
7
|
#
|
|
8
8
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
9
|
-
# Copyright:: Copyright (c) 2024-
|
|
9
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
10
10
|
# License:: MIT
|
|
11
11
|
class Factbase::Churn
|
|
12
12
|
attr_reader :inserted, :deleted, :added
|
data/lib/factbase/fact.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'json'
|
|
@@ -25,7 +25,7 @@ require_relative '../factbase'
|
|
|
25
25
|
# It is NOT thread-safe!
|
|
26
26
|
#
|
|
27
27
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
28
|
-
# Copyright:: Copyright (c) 2024-
|
|
28
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
29
29
|
# License:: MIT
|
|
30
30
|
class Factbase::Fact
|
|
31
31
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'ellipsized'
|
|
@@ -17,7 +17,7 @@ require_relative '../factbase'
|
|
|
17
17
|
# puts Factbase::FactAsYaml.new(f).to_s
|
|
18
18
|
#
|
|
19
19
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
20
|
-
# Copyright:: Copyright (c) 2024-
|
|
20
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
21
21
|
# License:: MIT
|
|
22
22
|
class Factbase::FactAsYaml
|
|
23
23
|
# Constructor.
|
data/lib/factbase/flatten.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../factbase'
|
|
@@ -8,7 +8,7 @@ require_relative '../factbase'
|
|
|
8
8
|
# Make maps suitable for printing.
|
|
9
9
|
#
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2024-
|
|
11
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class Factbase::Flatten
|
|
14
14
|
# Constructor.
|
data/lib/factbase/impatient.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'decoor'
|
|
@@ -11,7 +11,7 @@ require_relative 'syntax'
|
|
|
11
11
|
# A decorator of a Factbase, that terminates long-running queries.
|
|
12
12
|
#
|
|
13
13
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
14
|
-
# Copyright:: Copyright (c) 2024-
|
|
14
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
15
15
|
# License:: MIT
|
|
16
16
|
class Factbase::Impatient
|
|
17
17
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'others'
|
|
@@ -9,7 +9,7 @@ require_relative '../../factbase'
|
|
|
9
9
|
# A single fact in a factbase, which is sensitive to changes.
|
|
10
10
|
#
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2024-
|
|
12
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Factbase::IndexedFact
|
|
15
15
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'decoor'
|
|
@@ -13,7 +13,7 @@ require_relative 'indexed_term'
|
|
|
13
13
|
# A factbase with an index.
|
|
14
14
|
#
|
|
15
15
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
16
|
-
# Copyright:: Copyright (c) 2024-
|
|
16
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
17
17
|
# License:: MIT
|
|
18
18
|
class Factbase::IndexedFactbase
|
|
19
19
|
decoor(:origin)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../../factbase'
|
|
@@ -9,7 +9,7 @@ require_relative 'indexed_fact'
|
|
|
9
9
|
# Query with an index, a decorator of another query.
|
|
10
10
|
#
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2024-
|
|
12
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Factbase::IndexedQuery
|
|
15
15
|
include Enumerable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'tago'
|
|
@@ -19,7 +19,7 @@ require_relative '../indexed/indexed_unique'
|
|
|
19
19
|
# Term with an index.
|
|
20
20
|
#
|
|
21
21
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
22
|
-
# Copyright:: Copyright (c) 2024-
|
|
22
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
23
23
|
# License:: MIT
|
|
24
24
|
module Factbase::IndexedTerm
|
|
25
25
|
# Reduces the provided list of facts (maps) to a smaller array, if it's possible.
|
data/lib/factbase/inv.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'others'
|
|
@@ -20,7 +20,7 @@ require_relative '../factbase'
|
|
|
20
20
|
# one is the fact just touched.
|
|
21
21
|
#
|
|
22
22
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
23
|
-
# Copyright:: Copyright (c) 2024-
|
|
23
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
24
24
|
# License:: MIT
|
|
25
25
|
class Factbase::Inv
|
|
26
26
|
decoor(:fb)
|
data/lib/factbase/lazy_taped.rb
CHANGED
data/lib/factbase/light.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../factbase'
|
|
@@ -8,7 +8,7 @@ require_relative '../factbase'
|
|
|
8
8
|
# A decorator of a Factbase, that forbids most of the operations.
|
|
9
9
|
#
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2024-
|
|
11
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class Factbase::Light
|
|
14
14
|
def initialize(fb)
|
data/lib/factbase/logged.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2024-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'decoor'
|
|
@@ -12,7 +12,7 @@ require_relative 'syntax'
|
|
|
12
12
|
# A decorator of a Factbase, that logs all operations.
|
|
13
13
|
#
|
|
14
14
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
15
|
-
# Copyright:: Copyright (c) 2024-
|
|
15
|
+
# Copyright:: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
16
16
|
# License:: MIT
|
|
17
17
|
class Factbase::Logged
|
|
18
18
|
# Ctor.
|