factbase 0.11.0 → 0.11.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/.github/publish-benchmark.sh +24 -0
- data/.github/workflows/benchmark.yml +1 -17
- data/.rubocop.yml +2 -0
- data/Gemfile +5 -6
- data/Gemfile.lock +13 -15
- data/factbase.gemspec +2 -1
- data/lib/factbase/fact_as_yaml.rb +4 -1
- data/lib/factbase/logged.rb +1 -1
- data/lib/factbase/terms/logical.rb +2 -2
- data/lib/factbase/terms/strings.rb +2 -2
- data/lib/factbase.rb +1 -1
- data/test/factbase/test_fact_as_yaml.rb +15 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e27fe11aa944dcd02303229649c86810bd2585e18c86ec227b113d2a50633ec4
|
4
|
+
data.tar.gz: a3fad9da51b5201a84f71177475a8b768bb037f6f7dc9fbc01f61b076e9a6559
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cef5dbc22c5692f7e3219cfc11802ba7b114cdd5d30ae65e20960186b919ff69b6a5015e7fc5985644713dd852b624e9575784496b62e8155c254871dac9b3d4
|
7
|
+
data.tar.gz: ed05d5bf86469a9c30c7f66c03222b65ec4b3a02ac9a403bda966914538c83e27be9d4ffc6a0e7e8890dc00a57d2e21810cc3b6ac8b98bd66a28d9dcefcbe469
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
3
|
+
# SPDX-License-Identifier: MIT
|
4
|
+
|
5
|
+
set -x
|
6
|
+
|
7
|
+
sum=$(
|
8
|
+
echo '```text'
|
9
|
+
cut -c -71 < stdout.txt
|
10
|
+
echo '```'
|
11
|
+
echo
|
12
|
+
echo "The results were calculated in [this GHA job][benchmark-gha]"
|
13
|
+
echo "on $(date +'%Y-%m-%d') at $(date +'%H:%M'),"
|
14
|
+
echo "on $(uname) with $(nproc --all) CPUs."
|
15
|
+
)
|
16
|
+
|
17
|
+
export sum
|
18
|
+
|
19
|
+
perl -i -0777 -pe 's/(?<=<!-- benchmark_begin -->).*(?=<!-- benchmark_end -->)/\n$ENV{sum}\n/gs;' README.md
|
20
|
+
url=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}
|
21
|
+
|
22
|
+
export url
|
23
|
+
perl -i -0777 -pe 's/(?<=\[benchmark-gha\]: )[^\n]+(?=\n)/$ENV{url}/gs;' README.md
|
24
|
+
rm stdout.txt
|
@@ -24,23 +24,7 @@ jobs:
|
|
24
24
|
- run: bundle config set --global path "$(pwd)/vendor/bundle"
|
25
25
|
- run: bundle install --no-color
|
26
26
|
- run: bundle exec rake benchmark > stdout.txt
|
27
|
-
- run:
|
28
|
-
set -x
|
29
|
-
sum=$(
|
30
|
-
echo '```text'
|
31
|
-
cat stdout.txt | cut -c -71
|
32
|
-
echo '```'
|
33
|
-
echo
|
34
|
-
echo "The results were calculated in [this GHA job][benchmark-gha]"
|
35
|
-
echo "on $(date +'%Y-%m-%d') at $(date +'%H:%M'),"
|
36
|
-
echo "on $(uname) with $(nproc --all) CPUs."
|
37
|
-
)
|
38
|
-
export sum
|
39
|
-
perl -i -0777 -pe 's/(?<=<!-- benchmark_begin -->).*(?=<!-- benchmark_end -->)/\n$ENV{sum}\n/gs;' README.md
|
40
|
-
url=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}
|
41
|
-
export url
|
42
|
-
perl -i -0777 -pe 's/(?<=\[benchmark-gha\]: )[^\n]+(?=\n)/$ENV{url}/gs;' README.md
|
43
|
-
rm stdout.txt
|
27
|
+
- run: .github/publish-benchmark.sh
|
44
28
|
- uses: peter-evans/create-pull-request@v7
|
45
29
|
with:
|
46
30
|
sign-commits: true
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
@@ -8,15 +8,14 @@ gemspec
|
|
8
8
|
|
9
9
|
gem 'minitest', '~>5.25', require: false
|
10
10
|
gem 'minitest-reporters', '~>1.7', require: false
|
11
|
-
gem 'os', '
|
12
|
-
gem 'qbash', '
|
11
|
+
gem 'os', '~>1.1', require: false
|
12
|
+
gem 'qbash', '~>0.4', require: false
|
13
13
|
gem 'rake', '~>13.2', require: false
|
14
14
|
gem 'rdoc', '~>6.13', require: false
|
15
15
|
gem 'rubocop', '~>1.74', require: false
|
16
|
-
gem 'rubocop-minitest', '
|
17
|
-
gem 'rubocop-performance', '
|
18
|
-
gem 'rubocop-rake', '
|
19
|
-
gem 'rubocop-rspec', '>0', require: false
|
16
|
+
gem 'rubocop-minitest', '~>0.38', require: false
|
17
|
+
gem 'rubocop-performance', '~>1.25', require: false
|
18
|
+
gem 'rubocop-rake', '~>0.7', require: false
|
20
19
|
gem 'simplecov', '~>0.22', require: false
|
21
20
|
gem 'simplecov-cobertura', '~>2.1', require: false
|
22
21
|
gem 'threads', '~>0.4', require: false
|
data/Gemfile.lock
CHANGED
@@ -4,6 +4,7 @@ PATH
|
|
4
4
|
factbase (0.0.0)
|
5
5
|
backtrace (~> 0.4)
|
6
6
|
decoor (~> 0.0)
|
7
|
+
ellipsized (~> 0.3)
|
7
8
|
json (~> 2.7)
|
8
9
|
logger (~> 1.0)
|
9
10
|
loog (~> 0.6)
|
@@ -17,7 +18,7 @@ GEM
|
|
17
18
|
specs:
|
18
19
|
ansi (1.5.0)
|
19
20
|
ast (2.4.3)
|
20
|
-
backtrace (0.4.
|
21
|
+
backtrace (0.4.1)
|
21
22
|
builder (3.3.0)
|
22
23
|
concurrent-ruby (1.3.5)
|
23
24
|
date (3.4.1)
|
@@ -26,6 +27,7 @@ GEM
|
|
26
27
|
elapsed (0.0.1)
|
27
28
|
loog (> 0)
|
28
29
|
tago (> 0)
|
30
|
+
ellipsized (0.3.0)
|
29
31
|
erb (5.0.1)
|
30
32
|
json (2.12.2)
|
31
33
|
language_server-protocol (3.17.0.5)
|
@@ -48,7 +50,7 @@ GEM
|
|
48
50
|
nokogiri (1.18.8-x86_64-linux-gnu)
|
49
51
|
racc (~> 1.4)
|
50
52
|
os (1.1.4)
|
51
|
-
others (0.
|
53
|
+
others (0.1.1)
|
52
54
|
parallel (1.27.0)
|
53
55
|
parser (3.3.8.0)
|
54
56
|
ast (~> 2.4.1)
|
@@ -65,12 +67,12 @@ GEM
|
|
65
67
|
racc (1.8.1)
|
66
68
|
rainbow (3.1.1)
|
67
69
|
rake (13.3.0)
|
68
|
-
rdoc (6.14.
|
70
|
+
rdoc (6.14.1)
|
69
71
|
erb
|
70
72
|
psych (>= 4.0.0)
|
71
73
|
regexp_parser (2.10.0)
|
72
74
|
rexml (3.4.1)
|
73
|
-
rubocop (1.
|
75
|
+
rubocop (1.77.0)
|
74
76
|
json (~> 2.3)
|
75
77
|
language_server-protocol (~> 3.17.0.2)
|
76
78
|
lint_roller (~> 1.1.0)
|
@@ -78,10 +80,10 @@ GEM
|
|
78
80
|
parser (>= 3.3.0.2)
|
79
81
|
rainbow (>= 2.2.2, < 4.0)
|
80
82
|
regexp_parser (>= 2.9.3, < 3.0)
|
81
|
-
rubocop-ast (>= 1.
|
83
|
+
rubocop-ast (>= 1.45.1, < 2.0)
|
82
84
|
ruby-progressbar (~> 1.7)
|
83
85
|
unicode-display_width (>= 2.4.0, < 4.0)
|
84
|
-
rubocop-ast (1.
|
86
|
+
rubocop-ast (1.45.1)
|
85
87
|
parser (>= 3.3.7.2)
|
86
88
|
prism (~> 1.4)
|
87
89
|
rubocop-minitest (0.38.1)
|
@@ -95,9 +97,6 @@ GEM
|
|
95
97
|
rubocop-rake (0.7.1)
|
96
98
|
lint_roller (~> 1.1)
|
97
99
|
rubocop (>= 1.72.1)
|
98
|
-
rubocop-rspec (3.6.0)
|
99
|
-
lint_roller (~> 1.1)
|
100
|
-
rubocop (~> 1.72, >= 1.72.1)
|
101
100
|
ruby-progressbar (1.13.0)
|
102
101
|
simplecov (0.22.0)
|
103
102
|
docile (~> 1.1)
|
@@ -132,15 +131,14 @@ DEPENDENCIES
|
|
132
131
|
factbase!
|
133
132
|
minitest (~> 5.25)
|
134
133
|
minitest-reporters (~> 1.7)
|
135
|
-
os (
|
136
|
-
qbash (
|
134
|
+
os (~> 1.1)
|
135
|
+
qbash (~> 0.4)
|
137
136
|
rake (~> 13.2)
|
138
137
|
rdoc (~> 6.13)
|
139
138
|
rubocop (~> 1.74)
|
140
|
-
rubocop-minitest (
|
141
|
-
rubocop-performance (
|
142
|
-
rubocop-rake (
|
143
|
-
rubocop-rspec (> 0)
|
139
|
+
rubocop-minitest (~> 0.38)
|
140
|
+
rubocop-performance (~> 1.25)
|
141
|
+
rubocop-rake (~> 0.7)
|
144
142
|
simplecov (~> 0.22)
|
145
143
|
simplecov-cobertura (~> 2.1)
|
146
144
|
threads (~> 0.4)
|
data/factbase.gemspec
CHANGED
@@ -21,12 +21,13 @@ Gem::Specification.new do |s|
|
|
21
21
|
'An entire factbase may be exported to a binary file and imported back.'
|
22
22
|
s.authors = ['Yegor Bugayenko']
|
23
23
|
s.email = 'yegor256@gmail.com'
|
24
|
-
s.homepage = '
|
24
|
+
s.homepage = 'https://github.com/yegor256/factbase.rb'
|
25
25
|
s.files = `git ls-files`.split($RS)
|
26
26
|
s.rdoc_options = ['--charset=UTF-8']
|
27
27
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
28
28
|
s.add_dependency 'backtrace', '~>0.4'
|
29
29
|
s.add_dependency 'decoor', '~>0.0'
|
30
|
+
s.add_dependency 'ellipsized', '~>0.3'
|
30
31
|
s.add_dependency 'json', '~>2.7'
|
31
32
|
s.add_dependency 'logger', '~>1.0'
|
32
33
|
s.add_dependency 'loog', '~>0.6'
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
4
4
|
# SPDX-License-Identifier: MIT
|
5
5
|
|
6
|
+
require 'ellipsized'
|
6
7
|
require 'yaml'
|
7
8
|
require_relative '../factbase'
|
8
9
|
|
@@ -33,6 +34,8 @@ class Factbase::FactAsYaml
|
|
33
34
|
v = @fact[p]
|
34
35
|
hash[p] = v.is_a?(Array) ? v : [v]
|
35
36
|
end
|
36
|
-
hash.sort.to_h.
|
37
|
+
hash.sort.to_h.map do |k, vv|
|
38
|
+
"#{k}: [#{vv.map { |v| v.is_a?(String) ? v.ellipsized : v }.map(&:inspect).join(', ')}]"
|
39
|
+
end.join("\n")
|
37
40
|
end
|
38
41
|
end
|
data/lib/factbase/logged.rb
CHANGED
@@ -114,7 +114,7 @@ class Factbase::Logged
|
|
114
114
|
v = args[1]
|
115
115
|
s = v.is_a?(Time) ? v.utc.iso8601 : v.to_s
|
116
116
|
s = v.to_s.inspect if v.is_a?(String)
|
117
|
-
s = "#{s[0..MAX_LENGTH / 2]}...#{s[-MAX_LENGTH / 2..]}" if s.length > MAX_LENGTH
|
117
|
+
s = "#{s[0..(MAX_LENGTH / 2)]}...#{s[(-MAX_LENGTH / 2)..]}" if s.length > MAX_LENGTH
|
118
118
|
@tube.say(start, "Set '#{k[0..-2]}' to #{s} (#{v.class})") if k.end_with?('=')
|
119
119
|
r
|
120
120
|
end
|
@@ -43,7 +43,7 @@ module Factbase::Logical
|
|
43
43
|
# @param [Array<Factbase::Fact>] maps All maps available
|
44
44
|
# @return [Boolean] True if any operand evaluates to true, false otherwise
|
45
45
|
def or(fact, maps, fb)
|
46
|
-
(0
|
46
|
+
(0..(@operands.size - 1)).each do |i|
|
47
47
|
return true if _only_bool(_values(i, fact, maps, fb), i)
|
48
48
|
end
|
49
49
|
false
|
@@ -54,7 +54,7 @@ module Factbase::Logical
|
|
54
54
|
# @param [Array<Factbase::Fact>] maps All maps available
|
55
55
|
# @return [Boolean] True if all operands evaluate to true, false otherwise
|
56
56
|
def and(fact, maps, fb)
|
57
|
-
(0
|
57
|
+
(0..(@operands.size - 1)).each do |i|
|
58
58
|
return false unless _only_bool(_values(i, fact, maps, fb), i)
|
59
59
|
end
|
60
60
|
true
|
@@ -12,12 +12,12 @@ require_relative '../../factbase'
|
|
12
12
|
# License:: MIT
|
13
13
|
module Factbase::Strings
|
14
14
|
def concat(fact, maps, fb)
|
15
|
-
(0
|
15
|
+
(0..(@operands.length - 1)).map { |i| _values(i, fact, maps, fb)&.first }.join
|
16
16
|
end
|
17
17
|
|
18
18
|
def sprintf(fact, maps, fb)
|
19
19
|
fmt = _values(0, fact, maps, fb)[0]
|
20
|
-
ops = (1
|
20
|
+
ops = (1..(@operands.length - 1)).map { |i| _values(i, fact, maps, fb)&.first }
|
21
21
|
format(*([fmt] + ops))
|
22
22
|
end
|
23
23
|
|
data/lib/factbase.rb
CHANGED
@@ -82,7 +82,7 @@ require 'yaml'
|
|
82
82
|
# License:: MIT
|
83
83
|
class Factbase
|
84
84
|
# Current version of the gem (changed by .rultor.yml on every release)
|
85
|
-
VERSION = '0.11.
|
85
|
+
VERSION = '0.11.1' unless const_defined?(:VERSION)
|
86
86
|
|
87
87
|
# An exception that may be thrown in a transaction, to roll it back.
|
88
88
|
class Rollback < StandardError; end
|
@@ -13,6 +13,21 @@ require_relative '../test__helper'
|
|
13
13
|
# Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
|
14
14
|
# License:: MIT
|
15
15
|
class TestFactAsYaml < Factbase::Test
|
16
|
+
def test_prints_exactly
|
17
|
+
fb = Factbase.new
|
18
|
+
f = fb.insert
|
19
|
+
f._id = 1
|
20
|
+
f.foo = 42
|
21
|
+
f.foo = 33
|
22
|
+
f.bar = 'hello, world! how are you?'
|
23
|
+
assert_equal(
|
24
|
+
"_id: [1]\n" \
|
25
|
+
"bar: [\"hello, world! how are you?\"]\n" \
|
26
|
+
'foo: [42, 33]',
|
27
|
+
Factbase::FactAsYaml.new(f).to_s
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
16
31
|
def test_simple_rendering
|
17
32
|
fb = Factbase.new
|
18
33
|
f = fb.insert
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
@@ -37,6 +37,20 @@ dependencies:
|
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0.0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: ellipsized
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.3'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.3'
|
40
54
|
- !ruby/object:Gem::Dependency
|
41
55
|
name: json
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,6 +163,7 @@ extra_rdoc_files:
|
|
149
163
|
files:
|
150
164
|
- ".0pdd.yml"
|
151
165
|
- ".gitattributes"
|
166
|
+
- ".github/publish-benchmark.sh"
|
152
167
|
- ".github/workflows/actionlint.yml"
|
153
168
|
- ".github/workflows/benchmark.yml"
|
154
169
|
- ".github/workflows/codecov.yml"
|
@@ -274,7 +289,7 @@ files:
|
|
274
289
|
- test/factbase/test_to_yaml.rb
|
275
290
|
- test/test__helper.rb
|
276
291
|
- test/test_factbase.rb
|
277
|
-
homepage:
|
292
|
+
homepage: https://github.com/yegor256/factbase.rb
|
278
293
|
licenses:
|
279
294
|
- MIT
|
280
295
|
metadata:
|