factbase 0.0.47 → 0.0.48

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: 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