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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56a6a221e2344538c324a601f49ad655f4d5e3b6682b5e717e8f798a6eb46030
4
- data.tar.gz: 94bb595173fbea968c4a8e8af2b8d6cf08689127e2dfd2c2c296420659da5304
3
+ metadata.gz: 19ec04ca7c6bf83d50a09c6325e396685e6eb0d2590a4ffca5ccee1fcafa45f1
4
+ data.tar.gz: 3550dd7bff7f9ad854689b5c78571211454bf34c09ec0b32fd4b240fc509939c
5
5
  SHA512:
6
- metadata.gz: fe4eb95604ae3ba22d24ef01a4c86b1dcdf4c9b3ff38969cbc459653a6a72a201d317bdf86f71c22206c771deebb5511ba1c64ce014c77fdf995e18926646fa2
7
- data.tar.gz: b48c9c7243f74713bcf5b9fbad3f0ef901aa79d107d7be78e3d08d9970e898a21f9bb4938cfaac5057edc11c53150b0934a46b125019c132906114a702c90d89
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.3)
14
- actionview (= 7.1.3.3)
15
- activesupport (= 7.1.3.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.3)
24
- activesupport (= 7.1.3.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.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.2.4)
43
- concurrent-ruby (1.2.3)
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.24.0)
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.11)
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.3)
95
- actionpack (= 7.1.3.3)
96
- activesupport (= 7.1.3.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.7)
108
+ reline (0.5.8)
108
109
  io-console (~> 0.5)
109
- rexml (3.2.8)
110
- strscan (>= 3.0.9)
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.20.0)
142
+ rubocop-capybara (2.21.0)
142
143
  rubocop (~> 1.41)
143
- rubocop-factory_bot (2.25.1)
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.28.3)
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', '~> 2.7'
45
+ s.add_runtime_dependency 'json', '~>2.7'
46
46
  s.add_runtime_dependency 'loog', '~>0.2'
47
- s.add_runtime_dependency 'nokogiri', '~> 1.10'
48
- s.add_runtime_dependency 'yaml', '~> 0.3'
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
@@ -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 #{format('%.2f', (Time.now - start) * 1000)}ms"
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.48'
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)
@@ -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.48
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