factbase 0.0.47 → 0.0.48

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: 3b16ed7e90c154dfde3992d7a812c124caf6492c4f3600da01e93069e82be50f
4
- data.tar.gz: 8cc18bca8d1a1eb3b52fdb314b38f87818796faf93d05395764d5968aa615a93
3
+ metadata.gz: 56a6a221e2344538c324a601f49ad655f4d5e3b6682b5e717e8f798a6eb46030
4
+ data.tar.gz: 94bb595173fbea968c4a8e8af2b8d6cf08689127e2dfd2c2c296420659da5304
5
5
  SHA512:
6
- metadata.gz: 9376cb5f9cecf2fc5fb47296512285b8105b08fbe9683f3722995aac7bab5440a417d443f378dfc62c300f3b79d136f6365835843aabb3559eaf09f203404880
7
- data.tar.gz: 59f4f461487d02b604b0614d571bbc10405a15c4d86ec92dedd8633d5b12a01bd92d546622aad23bd3d4caf65ff4a27ce7a18a6b1a65c6e2d54cbc0874f41d91
6
+ metadata.gz: fe4eb95604ae3ba22d24ef01a4c86b1dcdf4c9b3ff38969cbc459653a6a72a201d317bdf86f71c22206c771deebb5511ba1c64ce014c77fdf995e18926646fa2
7
+ data.tar.gz: b48c9c7243f74713bcf5b9fbad3f0ef901aa79d107d7be78e3d08d9970e898a21f9bb4938cfaac5057edc11c53150b0934a46b125019c132906114a702c90d89
@@ -29,8 +29,9 @@ require_relative '../factbase'
29
29
  # License:: MIT
30
30
  class Factbase::Flatten
31
31
  # Constructor.
32
- def initialize(maps)
32
+ def initialize(maps, sorter = '_id')
33
33
  @maps = maps
34
+ @sorter = sorter
34
35
  end
35
36
 
36
37
  # Improve the maps.
data/lib/factbase/term.rb CHANGED
@@ -260,6 +260,7 @@ class Factbase::Term
260
260
  assert_args(1)
261
261
  v = by_symbol(0, fact)
262
262
  return 'nil' if v.nil?
263
+ v = v[0] if v.is_a?(Array) && v.size == 1
263
264
  v.class.to_s
264
265
  end
265
266
 
@@ -45,6 +45,6 @@ class Factbase::ToJSON
45
45
  # Convert the entire factbase into JSON.
46
46
  # @return [String] The factbase in JSON format
47
47
  def json
48
- Factbase::Flatten.new(Marshal.load(@fb.export)).it.to_json
48
+ Factbase::Flatten.new(Marshal.load(@fb.export), @sorter).it.to_json
49
49
  end
50
50
  end
@@ -53,7 +53,7 @@ class Factbase::ToXML
53
53
  }
54
54
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
55
55
  xml.fb(meta) do
56
- Factbase::Flatten.new(Marshal.load(bytes)).it.each do |m|
56
+ Factbase::Flatten.new(Marshal.load(bytes), @sorter).it.each do |m|
57
57
  xml.f_ do
58
58
  m.sort.to_h.each do |k, vv|
59
59
  if vv.is_a?(Array)
@@ -45,6 +45,6 @@ class Factbase::ToYAML
45
45
  # Convert the entire factbase into YAML.
46
46
  # @return [String] The factbase in YAML format
47
47
  def yaml
48
- YAML.dump(Factbase::Flatten.new(Marshal.load(@fb.export)).it)
48
+ YAML.dump(Factbase::Flatten.new(Marshal.load(@fb.export), @sorter).it)
49
49
  end
50
50
  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.47'
82
+ VERSION = '0.0.48'
83
83
 
84
84
  # An exception that may be thrown in a transaction, to roll it back.
85
85
  class Rollback < StandardError; end
@@ -46,7 +46,7 @@ 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 }
49
+ maps << { 'time' => Time.now - 100, 'num' => 0, 'hi' => [4] }
50
50
  {
51
51
  '(eq num 444)' => 0,
52
52
  '(eq time 0)' => 0,
@@ -56,6 +56,7 @@ class TestQuery < Minitest::Test
56
56
  '(eq pi +3.14)' => 1,
57
57
  '(not (exists hello))' => 3,
58
58
  '(eq "Integer" (type num))' => 2,
59
+ '(eq "Integer" (type hi))' => 1,
59
60
  '(when (eq num 0) (exists time))' => 2,
60
61
  '(unique num)' => 2,
61
62
  '(unique name)' => 2,
@@ -120,6 +120,7 @@ class TestTerm < Minitest::Test
120
120
  def test_type_matching
121
121
  t = Factbase::Term.new(:type, [:foo])
122
122
  assert_equal('Integer', t.evaluate(fact('foo' => 42), []))
123
+ assert_equal('Integer', t.evaluate(fact('foo' => [42]), []))
123
124
  assert_equal('Array', t.evaluate(fact('foo' => [1, 2, 3]), []))
124
125
  assert_equal('String', t.evaluate(fact('foo' => 'Hello, world!'), []))
125
126
  assert_equal('Float', t.evaluate(fact('foo' => 3.14), []))
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.47
4
+ version: 0.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko