factbase 0.0.53 → 0.0.55

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1a97c8ab8b636aead2a98c980db09739120d98be8be0bc57f666a3c74ab5ef2
4
- data.tar.gz: 595422041561719af19046aceef46e7a15c5ec2e6702edb0e1b8e4e22ddece0f
3
+ metadata.gz: f23a2ee8985f8912a626f1c74153b90f6a6c6f19f60c271c582e7227a7c3cde2
4
+ data.tar.gz: 5142b0ebef7e0475e7a4c1f7344decf6e3cdb421d47f7174dea4dcb19aeecd44
5
5
  SHA512:
6
- metadata.gz: 30a0906b9c5846728ae7430502c4267d167637220b2c96e7c36ea3a0455044438d478fb2f59db84fa17d9ccae0bad73dff1025d3b70d8f54316faf59dc11e323
7
- data.tar.gz: 9807c7818a2ead9bfc3dda9fc83435ea13c37da0cc802acf1798de5e0473660e3d747f50a4da0cd584fe5758e9827b64a20fb3991efaeefad21e83bf92c0dece
6
+ metadata.gz: 618aeddaa9b2a25c10f11cc9a4eb070bf5469b8e3d79d94135401166f5e42c0b7161365e4bc8b6eb6b2853a7f8cb57a873d77de3f3b83b0913d9c6e10d4cc07e
7
+ data.tar.gz: f6666996b7b015706fda6aea48ab15dcf8bcbb130259f80983890551be9c58253a4c8cd499850d4b79700a52c2e524fde9a66d2f053a65b962987e9e77fd0e40
@@ -38,7 +38,7 @@ class Factbase::Flatten
38
38
  # @return [Array<HashMap>] The hashmaps, but improved
39
39
  def it
40
40
  @maps
41
- .sort_by { |m| m[@sorter] }
41
+ .sort_by { |m| m[@sorter] || [] }
42
42
  .map { |m| m.sort.to_h }
43
43
  .map { |m| m.transform_values { |v| v.size == 1 ? v[0] : v } }
44
44
  end
@@ -20,6 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
+ require 'decoor'
23
24
  require 'others'
24
25
  require 'time'
25
26
  require 'loog'
data/lib/factbase.rb CHANGED
@@ -81,7 +81,7 @@ require 'yaml'
81
81
  # License:: MIT
82
82
  class Factbase
83
83
  # Current version of the gem (changed by .rultor.yml on every release)
84
- VERSION = '0.0.53'
84
+ VERSION = '0.0.55'
85
85
 
86
86
  # An exception that may be thrown in a transaction, to roll it back.
87
87
  class Rollback < StandardError; end
@@ -214,6 +214,7 @@ class Factbase
214
214
  #
215
215
  # @param [Bytes] bytes Byte array to import
216
216
  def import(bytes)
217
+ raise 'Empty input, cannot load a factbase' if bytes.empty?
217
218
  @maps += Marshal.load(bytes)
218
219
  end
219
220
  end
@@ -36,4 +36,10 @@ class TestFlatten < Minitest::Test
36
36
  assert(42, to[1]['b'])
37
37
  assert(2, to[2]['c'].size)
38
38
  end
39
+
40
+ def test_without_sorter
41
+ maps = [{ 'b' => [42], 'i' => [44] }, { 'a' => 33 }]
42
+ to = Factbase::Flatten.new(maps, 'i').it
43
+ assert(33, to[0]['a'])
44
+ end
39
45
  end
@@ -90,6 +90,18 @@ class TestFactbase < Minitest::Test
90
90
  assert_equal(1, f2.query('(eq foo 42)').each.to_a.count)
91
91
  end
92
92
 
93
+ def test_reads_from_empty_file
94
+ fb = Factbase.new
95
+ Tempfile.open do |f|
96
+ File.binwrite(f.path, '')
97
+ assert(
98
+ assert_raises do
99
+ fb.import(File.binread(f.path))
100
+ end.message.include?('cannot load a factbase')
101
+ )
102
+ end
103
+ end
104
+
93
105
  def test_empty_or_not
94
106
  fb = Factbase.new
95
107
  assert_equal(0, fb.size)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.53
4
+ version: 0.0.55
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-24 00:00:00.000000000 Z
11
+ date: 2024-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace