Class: Factbase::Rules

Inherits:
Object
  • Object
show all
Defined in:
lib/factbase/rules.rb

Overview

A decorator of a Factbase, that checks rules on every set.

Author

Yegor Bugayenko ([email protected])

Copyright

Copyright © 2024 Yegor Bugayenko

License

MIT

Defined Under Namespace

Classes: Blind, Check, Fact, Query

Instance Method Summary collapse

Constructor Details

#initialize(fb, rules, check = Check.new(rules)) ⇒ Rules

Returns a new instance of Rules.



31
32
33
34
35
# File 'lib/factbase/rules.rb', line 31

def initialize(fb, rules, check = Check.new(rules))
  @fb = fb
  @rules = rules
  @check = check
end

Instance Method Details

#dupObject



37
38
39
# File 'lib/factbase/rules.rb', line 37

def dup
  Factbase::Rules.new(@fb.dup, @rules, @check)
end

#exportObject



63
64
65
# File 'lib/factbase/rules.rb', line 63

def export
  @fb.export
end

#import(bytes) ⇒ Object



67
68
69
# File 'lib/factbase/rules.rb', line 67

def import(bytes)
  @fb.import(bytes)
end

#insertObject



45
46
47
# File 'lib/factbase/rules.rb', line 45

def insert
  Fact.new(@fb.insert, @check)
end

#query(query) ⇒ Object



49
50
51
# File 'lib/factbase/rules.rb', line 49

def query(query)
  Query.new(@fb.query(query), @check)
end

#sizeObject



41
42
43
# File 'lib/factbase/rules.rb', line 41

def size
  @fb.size
end

#txn(this = self) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/factbase/rules.rb', line 53

def txn(this = self, &)
  before = @check
  @check = Blind.new
  @fb.txn(this, &)
  @check = before
  @fb.query('(always)').each do |f|
    @check.it(f)
  end
end