Top Level Namespace

Defined Under Namespace

Modules: Judges Classes: Object

Instance Method Summary collapse

Instance Method Details

#if_absent(fb) {|f| ... } ⇒ Object

Injects a fact if it’s absent in the factbase.

Yields:

  • (f)


26
27
28
29
30
31
32
33
34
35
# File 'lib/judges/fb/if_absent.rb', line 26

def if_absent(fb)
  attrs = {}
  f = Judges::Accumulator.new(attrs)
  yield f
  q = attrs.map { |k, v| "(eq #{k} '#{v}')" }.join(' ')
  return unless fb.query("(and #{q})").each.to_a.empty?
  n = fb.insert
  attrs.each { |k, v| n.send("#{k}=", v) }
  n
end

#once(fb, judge: $judge) ⇒ Object

Returns a decorated global factbase, which only touches facts once



26
27
28
# File 'lib/judges/fb/once.rb', line 26

def once(fb, judge: $judge)
  Judges::Once.new(fb, judge)
end