Class: Ruleby::Rulebook
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from RuleHelper
#AND, #OR, #__eval__, #b, #c, #m, #method
Constructor Details
#initialize(engine) {|_self| ... } ⇒ Rulebook
Returns a new instance of Rulebook.
22
23
24
25
|
# File 'lib/rulebook.rb', line 22
def initialize(engine, &block)
@engine = engine
yield self if block_given?
end
|
Instance Attribute Details
#engine ⇒ Object
Returns the value of attribute engine.
27
28
29
|
# File 'lib/rulebook.rb', line 27
def engine
@engine
end
|
Instance Method Details
#assert(fact) ⇒ Object
29
30
31
|
# File 'lib/rulebook.rb', line 29
def assert(fact)
@engine.assert fact
end
|
#modify(fact) ⇒ Object
35
36
37
|
# File 'lib/rulebook.rb', line 35
def modify(fact)
@engine.modify fact
end
|
#retract(fact) ⇒ Object
32
33
34
|
# File 'lib/rulebook.rb', line 32
def retract(fact)
@engine.retract fact
end
|
#rule(*args, &block) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/rulebook.rb', line 38
def rule(*args, &block)
unless args.empty?
name = args[0].kind_of?(Symbol) ? args.shift : GeneratedTag.new
end
if args.empty?
r = Steel::RulebookHelper.new @engine
r.rule name, &block
else
i = args[0].kind_of?(Hash) ? 1 : 0
if [Array, Ruleby::Ferrari::OrBuilder, Ruleby::Ferrari::AndBuilder].include? args[i].class
r = Ferrari::RulebookHelper.new @engine
r.rule name, *args, &block
elsif args[i].kind_of? String
r = LeTigre::RulebookHelper.new @engine, self
r.rule name, *args, &block
else
raise 'Rule format not recognized.'
end
end
end
|