factbase 0.0.48 → 0.0.49
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.lock +21 -19
- data/factbase.gemspec +4 -3
- data/lib/factbase/looged.rb +5 -1
- data/lib/factbase.rb +1 -1
- data/test/factbase/test_flatten.rb +2 -2
- data/test/factbase/test_looged.rb +8 -0
- data/test/factbase/test_query.rb +4 -1
- metadata +15 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 19ec04ca7c6bf83d50a09c6325e396685e6eb0d2590a4ffca5ccee1fcafa45f1
|
|
4
|
+
data.tar.gz: 3550dd7bff7f9ad854689b5c78571211454bf34c09ec0b32fd4b240fc509939c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d2aa256c677f5d93fb9d41cfbe2548d83ebce3490da521d4a920f06ec774305c5850dc4dea71c76df2e2cda827db3c0292b21f0dae8dc9cee136e6e4cdfb3d3
|
|
7
|
+
data.tar.gz: 0e96d7968129d750e5e71940ff5f114bdd920b7ae417ad87cbcea1ef7746c66142c9f1e312980a08cdf2e4ec259747ea6da7f268b6f70c4292225a3b4e6d775d
|
data/Gemfile.lock
CHANGED
|
@@ -5,14 +5,15 @@ PATH
|
|
|
5
5
|
json (~> 2.7)
|
|
6
6
|
loog (~> 0.2)
|
|
7
7
|
nokogiri (~> 1.10)
|
|
8
|
+
tago (~> 0.0)
|
|
8
9
|
yaml (~> 0.3)
|
|
9
10
|
|
|
10
11
|
GEM
|
|
11
12
|
remote: https://rubygems.org/
|
|
12
13
|
specs:
|
|
13
|
-
actionpack (7.1.3.
|
|
14
|
-
actionview (= 7.1.3.
|
|
15
|
-
activesupport (= 7.1.3.
|
|
14
|
+
actionpack (7.1.3.4)
|
|
15
|
+
actionview (= 7.1.3.4)
|
|
16
|
+
activesupport (= 7.1.3.4)
|
|
16
17
|
nokogiri (>= 1.8.5)
|
|
17
18
|
racc
|
|
18
19
|
rack (>= 2.2.4)
|
|
@@ -20,13 +21,13 @@ GEM
|
|
|
20
21
|
rack-test (>= 0.6.3)
|
|
21
22
|
rails-dom-testing (~> 2.2)
|
|
22
23
|
rails-html-sanitizer (~> 1.6)
|
|
23
|
-
actionview (7.1.3.
|
|
24
|
-
activesupport (= 7.1.3.
|
|
24
|
+
actionview (7.1.3.4)
|
|
25
|
+
activesupport (= 7.1.3.4)
|
|
25
26
|
builder (~> 3.1)
|
|
26
27
|
erubi (~> 1.11)
|
|
27
28
|
rails-dom-testing (~> 2.2)
|
|
28
29
|
rails-html-sanitizer (~> 1.6)
|
|
29
|
-
activesupport (7.1.3.
|
|
30
|
+
activesupport (7.1.3.4)
|
|
30
31
|
base64
|
|
31
32
|
bigdecimal
|
|
32
33
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
@@ -39,8 +40,8 @@ GEM
|
|
|
39
40
|
ast (2.4.2)
|
|
40
41
|
base64 (0.2.0)
|
|
41
42
|
bigdecimal (3.1.8)
|
|
42
|
-
builder (3.
|
|
43
|
-
concurrent-ruby (1.
|
|
43
|
+
builder (3.3.0)
|
|
44
|
+
concurrent-ruby (1.3.3)
|
|
44
45
|
connection_pool (2.4.1)
|
|
45
46
|
crass (1.0.6)
|
|
46
47
|
diff-lcs (1.5.1)
|
|
@@ -69,14 +70,14 @@ GEM
|
|
|
69
70
|
racc (~> 1.4)
|
|
70
71
|
nokogiri (1.16.5-x86_64-linux)
|
|
71
72
|
racc (~> 1.4)
|
|
72
|
-
parallel (1.
|
|
73
|
+
parallel (1.25.1)
|
|
73
74
|
parser (3.3.2.0)
|
|
74
75
|
ast (~> 2.4.1)
|
|
75
76
|
racc
|
|
76
77
|
psych (5.1.2)
|
|
77
78
|
stringio
|
|
78
79
|
racc (1.8.0)
|
|
79
|
-
rack (3.0
|
|
80
|
+
rack (3.1.0)
|
|
80
81
|
rack-session (2.0.0)
|
|
81
82
|
rack (>= 3.0.0)
|
|
82
83
|
rack-test (2.1.0)
|
|
@@ -91,9 +92,9 @@ GEM
|
|
|
91
92
|
rails-html-sanitizer (1.6.0)
|
|
92
93
|
loofah (~> 2.21)
|
|
93
94
|
nokogiri (~> 1.14)
|
|
94
|
-
railties (7.1.3.
|
|
95
|
-
actionpack (= 7.1.3.
|
|
96
|
-
activesupport (= 7.1.3.
|
|
95
|
+
railties (7.1.3.4)
|
|
96
|
+
actionpack (= 7.1.3.4)
|
|
97
|
+
activesupport (= 7.1.3.4)
|
|
97
98
|
irb
|
|
98
99
|
rackup (>= 1.0.0)
|
|
99
100
|
rake (>= 12.2)
|
|
@@ -104,10 +105,10 @@ GEM
|
|
|
104
105
|
rdoc (6.7.0)
|
|
105
106
|
psych (>= 4.0.0)
|
|
106
107
|
regexp_parser (2.9.2)
|
|
107
|
-
reline (0.5.
|
|
108
|
+
reline (0.5.8)
|
|
108
109
|
io-console (~> 0.5)
|
|
109
|
-
rexml (3.
|
|
110
|
-
strscan
|
|
110
|
+
rexml (3.3.0)
|
|
111
|
+
strscan
|
|
111
112
|
rspec-core (3.13.0)
|
|
112
113
|
rspec-support (~> 3.13.0)
|
|
113
114
|
rspec-expectations (3.13.0)
|
|
@@ -138,9 +139,9 @@ GEM
|
|
|
138
139
|
unicode-display_width (>= 2.4.0, < 3.0)
|
|
139
140
|
rubocop-ast (1.31.3)
|
|
140
141
|
parser (>= 3.3.1.0)
|
|
141
|
-
rubocop-capybara (2.
|
|
142
|
+
rubocop-capybara (2.21.0)
|
|
142
143
|
rubocop (~> 1.41)
|
|
143
|
-
rubocop-factory_bot (2.
|
|
144
|
+
rubocop-factory_bot (2.26.0)
|
|
144
145
|
rubocop (~> 1.41)
|
|
145
146
|
rubocop-performance (1.21.0)
|
|
146
147
|
rubocop (>= 1.48.1, < 2.0)
|
|
@@ -150,7 +151,7 @@ GEM
|
|
|
150
151
|
rubocop-capybara (~> 2.17)
|
|
151
152
|
rubocop-factory_bot (~> 2.22)
|
|
152
153
|
rubocop-rspec_rails (~> 2.28)
|
|
153
|
-
rubocop-rspec_rails (2.
|
|
154
|
+
rubocop-rspec_rails (2.29.0)
|
|
154
155
|
rubocop (~> 1.40)
|
|
155
156
|
ruby-progressbar (1.13.0)
|
|
156
157
|
simplecov (0.22.0)
|
|
@@ -164,6 +165,7 @@ GEM
|
|
|
164
165
|
simplecov_json_formatter (0.1.4)
|
|
165
166
|
stringio (3.1.0)
|
|
166
167
|
strscan (3.1.0)
|
|
168
|
+
tago (0.0.1)
|
|
167
169
|
thor (1.3.1)
|
|
168
170
|
tzinfo (2.0.6)
|
|
169
171
|
concurrent-ruby (~> 1.0)
|
data/factbase.gemspec
CHANGED
|
@@ -42,9 +42,10 @@ Gem::Specification.new do |s|
|
|
|
42
42
|
s.files = `git ls-files`.split($RS)
|
|
43
43
|
s.rdoc_options = ['--charset=UTF-8']
|
|
44
44
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
|
45
|
-
s.add_runtime_dependency 'json', '~>
|
|
45
|
+
s.add_runtime_dependency 'json', '~>2.7'
|
|
46
46
|
s.add_runtime_dependency 'loog', '~>0.2'
|
|
47
|
-
s.add_runtime_dependency 'nokogiri', '~>
|
|
48
|
-
s.add_runtime_dependency '
|
|
47
|
+
s.add_runtime_dependency 'nokogiri', '~>1.10'
|
|
48
|
+
s.add_runtime_dependency 'tago', '~>0.0'
|
|
49
|
+
s.add_runtime_dependency 'yaml', '~>0.3'
|
|
49
50
|
s.metadata['rubygems_mfa_required'] = 'true'
|
|
50
51
|
end
|
data/lib/factbase/looged.rb
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
require 'time'
|
|
24
24
|
require 'loog'
|
|
25
|
+
require 'tago'
|
|
25
26
|
require_relative 'syntax'
|
|
26
27
|
|
|
27
28
|
# A decorator of a Factbase, that logs all operations.
|
|
@@ -59,6 +60,9 @@ class Factbase::Looged
|
|
|
59
60
|
tail = Factbase::Looged.elapsed do
|
|
60
61
|
yield fbt
|
|
61
62
|
end
|
|
63
|
+
rescue Factbase::Rollback => e
|
|
64
|
+
@loog.debug('Txn rolled back')
|
|
65
|
+
raise e
|
|
62
66
|
end
|
|
63
67
|
@loog.debug("Txn #{r ? 'modified' : 'didn\'t touch'} #{before} facts #{tail}")
|
|
64
68
|
r
|
|
@@ -172,6 +176,6 @@ class Factbase::Looged
|
|
|
172
176
|
def self.elapsed
|
|
173
177
|
start = Time.now
|
|
174
178
|
yield
|
|
175
|
-
"in #{
|
|
179
|
+
"in #{start.ago}"
|
|
176
180
|
end
|
|
177
181
|
end
|
data/lib/factbase.rb
CHANGED
|
@@ -79,7 +79,7 @@ require 'yaml'
|
|
|
79
79
|
# License:: MIT
|
|
80
80
|
class Factbase
|
|
81
81
|
# Current version of the gem (changed by .rultor.yml on every release)
|
|
82
|
-
VERSION = '0.0.
|
|
82
|
+
VERSION = '0.0.49'
|
|
83
83
|
|
|
84
84
|
# An exception that may be thrown in a transaction, to roll it back.
|
|
85
85
|
class Rollback < StandardError; end
|
|
@@ -30,8 +30,8 @@ require_relative '../../lib/factbase/flatten'
|
|
|
30
30
|
# License:: MIT
|
|
31
31
|
class TestFlatten < Minitest::Test
|
|
32
32
|
def test_mapping
|
|
33
|
-
maps = [{ 'b' => [42] }, { 'a' => 33 }, { 'c' => %w[hey you] }]
|
|
34
|
-
to = Factbase::Flatten.new(maps).it
|
|
33
|
+
maps = [{ 'b' => [42], 'i' => 1 }, { 'a' => 33, 'i' => 0 }, { 'c' => %w[hey you], 'i' => 2 }]
|
|
34
|
+
to = Factbase::Flatten.new(maps, 'i').it
|
|
35
35
|
assert(33, to[0]['a'])
|
|
36
36
|
assert(42, to[1]['b'])
|
|
37
37
|
assert(2, to[2]['c'].size)
|
|
@@ -57,6 +57,14 @@ class TestLooged < Minitest::Test
|
|
|
57
57
|
assert(log.to_s.include?('modified'), log)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
+
def test_with_txn_rollback
|
|
61
|
+
log = Loog::Buffer.new
|
|
62
|
+
fb = Factbase::Looged.new(Factbase.new, log)
|
|
63
|
+
assert(!fb.txn { raise Factbase::Rollback })
|
|
64
|
+
assert_equal(0, fb.size)
|
|
65
|
+
assert(log.to_s.include?('rolled back'), log)
|
|
66
|
+
end
|
|
67
|
+
|
|
60
68
|
def test_with_modifying_txn
|
|
61
69
|
log = Loog::Buffer.new
|
|
62
70
|
fb = Factbase::Looged.new(Factbase.new, log)
|
data/test/factbase/test_query.rb
CHANGED
|
@@ -46,11 +46,13 @@ class TestQuery < Minitest::Test
|
|
|
46
46
|
maps = []
|
|
47
47
|
maps << { 'num' => 42, 'name' => 'Jeff' }
|
|
48
48
|
maps << { 'pi' => 3.14, 'num' => [42, 66, 0], 'name' => 'peter' }
|
|
49
|
-
maps << { 'time' => Time.now - 100, 'num' => 0, 'hi' => [4] }
|
|
49
|
+
maps << { 'time' => Time.now - 100, 'num' => 0, 'hi' => [4], 'nome' => ['Walter'] }
|
|
50
50
|
{
|
|
51
51
|
'(eq num 444)' => 0,
|
|
52
|
+
'(eq hi 4)' => 1,
|
|
52
53
|
'(eq time 0)' => 0,
|
|
53
54
|
'(gt num 60)' => 1,
|
|
55
|
+
'(gt hi 3)' => 1,
|
|
54
56
|
"(and (lt pi 100) \n\n (gt num 1000))" => 0,
|
|
55
57
|
'(exists pi)' => 1,
|
|
56
58
|
'(eq pi +3.14)' => 1,
|
|
@@ -70,6 +72,7 @@ class TestQuery < Minitest::Test
|
|
|
70
72
|
'(and (one pi) (eq pi (div -6.28 -2)))' => 1,
|
|
71
73
|
'(gt (size num) 2)' => 1,
|
|
72
74
|
'(matches name "^[a-z]+$")' => 1,
|
|
75
|
+
'(matches nome "^Walter$")' => 1,
|
|
73
76
|
'(lt (size num) 2)' => 2,
|
|
74
77
|
'(eq (size _hello) 0)' => 3,
|
|
75
78
|
'(eq num pi)' => 0,
|
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.0.
|
|
4
|
+
version: 0.0.49
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yegor Bugayenko
|
|
@@ -52,6 +52,20 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '1.10'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: tago
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0.0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0.0'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: yaml
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|