factbase 0.9.6 → 0.9.7

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: ab2bcf895fa6934620163134f67815a20126515fcc163bdf7a232752a474bfcd
4
- data.tar.gz: 2b96185e57e1ffa3176d34839940cff0a025b4cef8c7cd49b99bf9bdc79ab05c
3
+ metadata.gz: e7d1b649fb808d571609f3231f90dbd57ba57683993d52ee2eaddd674e2aeb65
4
+ data.tar.gz: 717ea095ae2e1092d71509b39f1581cfc4b65d47ca9f39cb704d694eabbd91d9
5
5
  SHA512:
6
- metadata.gz: ac68811b7e3fd879a0a19079c537d5718095e0f8786de51b9fa949a1541f518dbd0f93ea9aedd749b41e90c965a9f81ec1fdd75b24e1959c0adc818d899f8017
7
- data.tar.gz: dd39f0a82dc183b2c324660f1a9bb3ba6bf95cb2fa37c528d2684197aa96167dc62d6ee4797efd20c705a8c530c6e8ae09f332954023b1791c4dcb806f7b9a54
6
+ metadata.gz: 9f6955bdf61ad153a2cf956935310fbd1d59782a34e479ae94e48c70ab8a1002dfdf61f2384e968bbdedb0be58d19ea556841d7b7300aa110927f78f1fdabaf9
7
+ data.tar.gz: 2364a4421fcf35c42b6e316e33f11afaf4abc69b33502b475fa08fc28e2e45b8dbe138cf72d26b8938212d2807dfd8c3b50aa40b166e481e15f363d2cf5629c8
data/Rakefile CHANGED
@@ -33,7 +33,7 @@ end
33
33
  desc 'Run them via Ruby, one by one'
34
34
  task :picks do
35
35
  next if OS.windows?
36
- %w[text lib].each do |d|
36
+ %w[test lib].each do |d|
37
37
  Dir["#{d}/**/*.rb"].each do |f|
38
38
  qbash("bundle exec ruby #{Shellwords.escape(f)}", log: $stdout)
39
39
  end
@@ -36,9 +36,12 @@ class Factbase::CachedQuery
36
36
  key = "each #{@origin}" # params are ignored!
37
37
  before = @cache[key]
38
38
  @cache[key] = @origin.each(fb, params).to_a if before.nil?
39
+ c = 0
39
40
  @cache[key].each do |f|
41
+ c += 1
40
42
  yield Factbase::CachedFact.new(f, @cache)
41
43
  end
44
+ c
42
45
  end
43
46
 
44
47
  # Read a single value.
@@ -33,9 +33,11 @@ class Factbase::IndexedQuery
33
33
  # @return [Integer] Total number of facts yielded
34
34
  def each(fb = @fb, params = {})
35
35
  return to_enum(__method__, fb, params) unless block_given?
36
- @origin.each(fb, params).to_a.each do |f|
36
+ a = @origin.each(fb, params).to_a
37
+ a.each do |f|
37
38
  yield Factbase::IndexedFact.new(f, @idx)
38
39
  end
40
+ a.size
39
41
  end
40
42
 
41
43
  # Read a single value.
@@ -138,13 +138,14 @@ class Factbase::Logged
138
138
  def each(fb = @fb, params = {}, &)
139
139
  return to_enum(__method__, fb, params) unless block_given?
140
140
  start = Time.now
141
- q = Factbase::Syntax.new(@term).to_term.to_s
142
141
  r = nil
142
+ qry = @fb.query(@term, @maps)
143
143
  tail =
144
144
  Factbase::Logged.elapsed do
145
- r = @fb.query(@term, @maps).each(fb, params, &)
145
+ r = qry.each(fb, params, &)
146
146
  end
147
- raise ".each of #{@term.class} returned #{r.class}" unless r.is_a?(Integer)
147
+ raise ".query(#{@term.to_s.inspect}).each() of #{qry.class} returned #{r.class}" unless r.is_a?(Integer)
148
+ q = Factbase::Syntax.new(@term).to_term.to_s
148
149
  if r.zero?
149
150
  @tube.say(start, "Zero/#{@fb.size} facts found by '#{q}' #{tail}")
150
151
  else
@@ -39,7 +39,7 @@ class Factbase::Query
39
39
  # @param [Factbase] fb The factbase
40
40
  # @param [Hash] params Optional params accessible in the query via the "$" symbol
41
41
  # @yield [Fact] Facts one-by-one
42
- # @return [Integer] Total number of facts yielded
42
+ # @return [Integer] Total number of facts yielded (if block given), otherwise enumerator
43
43
  def each(fb = @fb, params = {})
44
44
  return to_enum(__method__, fb, params) unless block_given?
45
45
  yielded = 0
data/lib/factbase.rb CHANGED
@@ -82,7 +82,7 @@ require 'yaml'
82
82
  # License:: MIT
83
83
  class Factbase
84
84
  # Current version of the gem (changed by .rultor.yml on every release)
85
- VERSION = '0.9.6' unless const_defined?(:VERSION)
85
+ VERSION = '0.9.7' unless const_defined?(:VERSION)
86
86
 
87
87
  # An exception that may be thrown in a transaction, to roll it back.
88
88
  class Rollback < StandardError; end
@@ -7,6 +7,7 @@ require_relative '../test__helper'
7
7
  require 'loog'
8
8
  require_relative '../../lib/factbase'
9
9
  require_relative '../../lib/factbase/logged'
10
+ require_relative '../../lib/factbase/cached/cached_factbase'
10
11
 
11
12
  # Test.
12
13
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
@@ -36,6 +37,18 @@ class TestLogged < Factbase::Test
36
37
  assert_equal([42], fb.query('(agg (exists bar) (first bar))').one)
37
38
  end
38
39
 
40
+ def test_avoid_inner_logging
41
+ buf = Loog::Buffer.new
42
+ fb = Factbase.new
43
+ fb.insert
44
+ fb.insert.bar = 42
45
+ fb = Factbase::Logged.new(Factbase::CachedFactbase.new(fb), buf)
46
+ fb.query('(agg (exists bar) (count))').one
47
+ fb.query('(join "foo<=bar" (exists bar))').each.to_a
48
+ refute_includes(buf.to_s, '\'(count)\'')
49
+ refute_includes(buf.to_s, '\'(exists bar)\'')
50
+ end
51
+
39
52
  def test_with_txn
40
53
  log = Loog::Buffer.new
41
54
  fb = Factbase::Logged.new(Factbase.new, log)
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.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko