Top Level Namespace
Defined Under Namespace
Modules: Judges Classes: Object
Instance Method Summary collapse
-
#if_absent(fb) {|f| ... } ⇒ Object
Injects a fact if it’s absent in the factbase.
-
#once(fb, judge: $judge) ⇒ Object
Returns a decorated global factbase, which only touches facts once.
Instance Method Details
#if_absent(fb) {|f| ... } ⇒ Object
Injects a fact if it’s absent in the factbase.
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 |