fbe 0.3.0 → 0.4.0

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: dff1d56c36768072e8e672002eefa283724df96d4db1e262ff145d34d1153dce
4
- data.tar.gz: e1b28cf129ff6e857ada51074289433c4089dd017d63d95819cf05974e44018b
3
+ metadata.gz: bcae083c116fe7dba6cf632dd55fdf3a65e3d88b3c32afe4f39dda17e6cfd055
4
+ data.tar.gz: b69a33a628245a01b72cec23b21bb4b4dc3df15ac3f6a49920c7edad11446d80
5
5
  SHA512:
6
- metadata.gz: dc6ac0aacf0bf3c3f75cc4634018724c7dd1a7704c67507893fd97a9ec76866a24a83bd4727b11cbdc2fbcc662bde1eda4ee45d0e17b0fbbda25df6c578161c1
7
- data.tar.gz: 45671fe422b0ae541ce4782e7f012dcf5dfef257a67ab1f943f6b59c4d458753bd5809fa6972f207e6ae9c297cb98ae1821da2a52a47fb59b5e3eea5f99f0b03
6
+ metadata.gz: bf2b5de5a2b4ff2916c63c2b4124deb742edd79338d37b7e2b0377bd42c26f80556a3ee0b70e21bcbc711ea76dbf3bb11e52bc885afec27d3627f7c8b91f8099
7
+ data.tar.gz: f29473025b68679a241a4fe594fbe684cfeab25f4bb1b7ab973d181ede994a8d5a54943dc7be751cd53ef126a41ebbc95734c5297b511254554b8eac2fe3e216
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gemspec
8
8
 
9
9
  gem 'minitest', '~>5.25', require: false
10
10
  gem 'minitest-reporters', '>=1.7', require: false
11
+ gem 'os', '>0', require: false
11
12
  gem 'qbash', '>0', require: false
12
13
  gem 'rake', '>=13', require: false
13
14
  gem 'rubocop', '~>1.75', require: false
data/Gemfile.lock CHANGED
@@ -41,7 +41,7 @@ GEM
41
41
  ast (2.4.3)
42
42
  backtrace (0.4.0)
43
43
  base64 (0.2.0)
44
- baza.rb (0.0.11)
44
+ baza.rb (0.1.0)
45
45
  backtrace (> 0)
46
46
  elapsed (> 0)
47
47
  faraday (> 0)
@@ -69,14 +69,15 @@ GEM
69
69
  tago (> 0)
70
70
  ethon (0.16.0)
71
71
  ffi (>= 1.15.0)
72
- factbase (0.9.5)
73
- backtrace (>= 0.4.0)
74
- decoor (>= 0.0.1)
72
+ factbase (0.9.10)
73
+ backtrace (~> 0.4)
74
+ decoor (~> 0.0)
75
75
  json (~> 2.7)
76
- loog (>= 0.6.0)
76
+ logger (~> 1.0)
77
+ loog (~> 0.6)
77
78
  nokogiri (~> 1.10)
78
- others (>= 0.0.3)
79
- tago (>= 0.0.2)
79
+ others (~> 0.0)
80
+ tago (~> 0.0)
80
81
  yaml (~> 0.3)
81
82
  faraday (2.12.2)
82
83
  faraday-net_http (>= 2.0, < 3.5)
@@ -88,7 +89,7 @@ GEM
88
89
  multipart-post (~> 2.0)
89
90
  faraday-net_http (3.4.0)
90
91
  net-http (>= 0.5.0)
91
- faraday-retry (2.2.1)
92
+ faraday-retry (2.3.1)
92
93
  faraday (~> 2.0)
93
94
  ffi (1.17.1-arm64-darwin)
94
95
  ffi (1.17.1-x64-mingw-ucrt)
@@ -97,7 +98,7 @@ GEM
97
98
  fiber-storage (1.0.0)
98
99
  gli (2.22.2)
99
100
  ostruct
100
- graphql (2.4.15)
101
+ graphql (2.5.1)
101
102
  base64
102
103
  fiber-storage
103
104
  logger
@@ -109,12 +110,12 @@ GEM
109
110
  concurrent-ruby (~> 1.0)
110
111
  iri (0.10.0)
111
112
  json (2.10.2)
112
- judges (0.38.1)
113
+ judges (0.39.2)
113
114
  backtrace (~> 0)
114
115
  baza.rb (~> 0)
115
116
  concurrent-ruby (~> 1.2)
116
117
  elapsed (~> 0)
117
- factbase (>= 0.9.1)
118
+ factbase (~> 0.9)
118
119
  gli (~> 2.21)
119
120
  iri (~> 0)
120
121
  loog (~> 0)
@@ -141,22 +142,23 @@ GEM
141
142
  multipart-post (2.4.1)
142
143
  net-http (0.6.0)
143
144
  uri
144
- nokogiri (1.18.6-arm64-darwin)
145
+ nokogiri (1.18.7-arm64-darwin)
145
146
  racc (~> 1.4)
146
- nokogiri (1.18.6-x64-mingw-ucrt)
147
+ nokogiri (1.18.7-x64-mingw-ucrt)
147
148
  racc (~> 1.4)
148
- nokogiri (1.18.6-x86_64-darwin)
149
+ nokogiri (1.18.7-x86_64-darwin)
149
150
  racc (~> 1.4)
150
- nokogiri (1.18.6-x86_64-linux-gnu)
151
+ nokogiri (1.18.7-x86_64-linux-gnu)
151
152
  racc (~> 1.4)
152
- obk (0.3.1)
153
+ obk (0.3.2)
153
154
  octokit (9.2.0)
154
155
  faraday (>= 1, < 3)
155
156
  sawyer (~> 0.9)
157
+ os (1.1.4)
156
158
  ostruct (0.6.1)
157
159
  others (0.0.3)
158
160
  parallel (1.26.3)
159
- parser (3.3.7.3)
161
+ parser (3.3.7.4)
160
162
  ast (~> 2.4.1)
161
163
  racc
162
164
  prism (1.4.0)
@@ -172,7 +174,7 @@ GEM
172
174
  regexp_parser (2.10.0)
173
175
  retries (0.0.5)
174
176
  rexml (3.4.1)
175
- rubocop (1.75.1)
177
+ rubocop (1.75.2)
176
178
  json (~> 2.3)
177
179
  language_server-protocol (~> 3.17.0.2)
178
180
  lint_roller (~> 1.1.0)
@@ -180,19 +182,19 @@ GEM
180
182
  parser (>= 3.3.0.2)
181
183
  rainbow (>= 2.2.2, < 4.0)
182
184
  regexp_parser (>= 2.9.3, < 3.0)
183
- rubocop-ast (>= 1.43.0, < 2.0)
185
+ rubocop-ast (>= 1.44.0, < 2.0)
184
186
  ruby-progressbar (~> 1.7)
185
187
  unicode-display_width (>= 2.4.0, < 4.0)
186
- rubocop-ast (1.43.0)
188
+ rubocop-ast (1.44.0)
187
189
  parser (>= 3.3.7.2)
188
190
  prism (~> 1.4)
189
- rubocop-minitest (0.37.1)
191
+ rubocop-minitest (0.38.0)
190
192
  lint_roller (~> 1.1)
191
- rubocop (>= 1.72.1, < 2.0)
193
+ rubocop (>= 1.75.0, < 2.0)
192
194
  rubocop-ast (>= 1.38.0, < 2.0)
193
- rubocop-performance (1.24.0)
195
+ rubocop-performance (1.25.0)
194
196
  lint_roller (~> 1.1)
195
- rubocop (>= 1.72.1, < 2.0)
197
+ rubocop (>= 1.75.0, < 2.0)
196
198
  rubocop-ast (>= 1.38.0, < 2.0)
197
199
  rubocop-rake (0.7.1)
198
200
  lint_roller (~> 1.1)
@@ -248,6 +250,7 @@ DEPENDENCIES
248
250
  fbe!
249
251
  minitest (~> 5.25)
250
252
  minitest-reporters (>= 1.7)
253
+ os (> 0)
251
254
  qbash (> 0)
252
255
  rake (>= 13)
253
256
  rubocop (~> 1.75)
data/lib/fbe/delete.rb ADDED
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
+ # SPDX-License-Identifier: MIT
5
+
6
+ require_relative '../fbe'
7
+ require_relative 'fb'
8
+
9
+ # Delete a few properties from the fact.
10
+ #
11
+ # @param [Factbase::Fact] source The source
12
+ # @param [Array<String>] props List of properties to delete
13
+ # @param [Factbase] fb The factbase
14
+ # @param [String] id The unique ID of the fact
15
+ # @return [Factbase::Fact] New fact
16
+ def Fbe.delete(fact, *props, fb: Fbe.fb, id: '_id')
17
+ raise 'The fact is nil' if fact.nil?
18
+ i = fact[id]
19
+ raise "There is no #{id.inspect} in the fact" if i.nil?
20
+ i = i.first
21
+ before = {}
22
+ fact.all_properties.each do |k|
23
+ next if props.include?(k)
24
+ fact[k].each do |v|
25
+ before[k] = v
26
+ end
27
+ end
28
+ fb.query("(eq #{id} #{i})").delete!
29
+ c = fb.insert
30
+ before.each do |k, v|
31
+ c.send(:"#{k}=", v)
32
+ end
33
+ c
34
+ end
data/lib/fbe/fb.rb CHANGED
@@ -28,10 +28,9 @@ require_relative '../fbe'
28
28
  def Fbe.fb(fb: $fb, global: $global, options: $options, loog: $loog)
29
29
  global[:fb] ||=
30
30
  begin
31
- fbe = Factbase::Logged.new(fb, loog)
32
31
  rules = Dir.glob(File.join('rules', '*.fe')).map { |f| File.read(f) }
33
32
  fbe = Factbase::Rules.new(
34
- fbe,
33
+ fb,
35
34
  "(and \n#{rules.join("\n")}\n)",
36
35
  uid: '_id'
37
36
  )
@@ -43,12 +42,15 @@ def Fbe.fb(fb: $fb, global: $global, options: $options, loog: $loog)
43
42
  f._version = "#{Factbase::VERSION}/#{Judges::VERSION}/#{options.action_version}"
44
43
  f._job = options.job_id unless options.job_id.nil?
45
44
  end
46
- Factbase::SyncFactbase.new(
47
- Factbase::IndexedFactbase.new(
48
- Factbase::CachedFactbase.new(
49
- fbe
45
+ Factbase::Logged.new(
46
+ Factbase::SyncFactbase.new(
47
+ Factbase::IndexedFactbase.new(
48
+ Factbase::CachedFactbase.new(
49
+ fbe
50
+ )
50
51
  )
51
- )
52
+ ),
53
+ loog
52
54
  )
53
55
  end
54
56
  end
data/lib/fbe.rb CHANGED
@@ -10,5 +10,5 @@
10
10
  # License:: MIT
11
11
  module Fbe
12
12
  # Current version of the gem (changed by +.rultor.yml+ on every release)
13
- VERSION = '0.3.0' unless const_defined?(:VERSION)
13
+ VERSION = '0.4.0' unless const_defined?(:VERSION)
14
14
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
+ # SPDX-License-Identifier: MIT
5
+
6
+ require 'factbase'
7
+ require_relative '../test__helper'
8
+ require_relative '../../lib/fbe/delete'
9
+
10
+ # Test.
11
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
12
+ # Copyright:: Copyright (c) 2024-2025 Zerocracy
13
+ # License:: MIT
14
+ class TestDelete < Minitest::Test
15
+ def test_deletes_one_property
16
+ fb = Factbase.new
17
+ f = fb.insert
18
+ f.foo = 42
19
+ f.hey = 4
20
+ f._id = 555
21
+ Fbe.delete(f, 'foo', 'bar', fb:)
22
+ assert_equal(1, fb.size)
23
+ assert_equal(1, fb.query('(exists hey)').each.to_a.size)
24
+ assert_equal(4, fb.query('(exists hey)').each.first.hey)
25
+ end
26
+
27
+ def test_deletes_two_properties
28
+ fb = Factbase.new
29
+ f = fb.insert
30
+ f.foo = 42
31
+ f.hey = 4
32
+ f._id = 555
33
+ Fbe.delete(f, 'foo', 'hey', fb:)
34
+ assert_equal(1, fb.size)
35
+ assert_equal(0, fb.query('(exists hey)').each.to_a.size)
36
+ end
37
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-29 00:00:00.000000000 Z
10
+ date: 2025-04-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: backtrace
@@ -281,6 +281,7 @@ files:
281
281
  - lib/fbe/bylaws.rb
282
282
  - lib/fbe/conclude.rb
283
283
  - lib/fbe/copy.rb
284
+ - lib/fbe/delete.rb
284
285
  - lib/fbe/enter.rb
285
286
  - lib/fbe/fb.rb
286
287
  - lib/fbe/github_graph.rb
@@ -307,6 +308,7 @@ files:
307
308
  - test/fbe/test_bylaws.rb
308
309
  - test/fbe/test_conclude.rb
309
310
  - test/fbe/test_copy.rb
311
+ - test/fbe/test_delete.rb
310
312
  - test/fbe/test_enter.rb
311
313
  - test/fbe/test_fb.rb
312
314
  - test/fbe/test_github_graph.rb