Class: Wongi::Engine::Ruleset
- Inherits:
-
Object
- Object
- Wongi::Engine::Ruleset
- Defined in:
- lib/wongi-engine/ruleset.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(name = nil) ⇒ Ruleset
constructor
A new instance of Ruleset.
- #inspect ⇒ Object
- #install(rete) ⇒ Object
- #name(name = nil) ⇒ Object
- #query(name, &definition) ⇒ Object
-
#rule(name, &definition) ⇒ Object
def uri uri = nil @uri = uri if uri @uri end.
Constructor Details
#initialize(name = nil) ⇒ Ruleset
Returns a new instance of Ruleset.
27 28 29 30 |
# File 'lib/wongi-engine/ruleset.rb', line 27 def initialize name = nil @rules = [] self.name( name ) if name end |
Class Method Details
.[](name) ⇒ Object
7 8 9 10 |
# File 'lib/wongi-engine/ruleset.rb', line 7 def [] name raise "undefined ruleset #{name}" unless rulesets.has_key?( name ) rulesets[ name ] end |
.register(name, ruleset) ⇒ Object
12 13 14 15 |
# File 'lib/wongi-engine/ruleset.rb', line 12 def register name, ruleset raise "ruleset #{name} already exists" if rulesets.has_key?( name ) rulesets[ name ] = ruleset end |
.reset ⇒ Object
21 22 23 |
# File 'lib/wongi-engine/ruleset.rb', line 21 def reset @rulesets = { } end |
.rulesets ⇒ Object
17 18 19 |
# File 'lib/wongi-engine/ruleset.rb', line 17 def rulesets @rulesets ||= {} end |
Instance Method Details
#inspect ⇒ Object
32 33 34 |
# File 'lib/wongi-engine/ruleset.rb', line 32 def inspect "<Ruleset #{name}>" end |
#install(rete) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/wongi-engine/ruleset.rb', line 36 def install rete # puts "Installing ruleset #{name}" @rules.each { |rule| rete << rule } rescue Exception => e e1 = Exception.new "error installing ruleset '#{name||'<unnamed>'}': #{e}" e1.set_backtrace e.backtrace raise e1 end |
#name(name = nil) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/wongi-engine/ruleset.rb', line 45 def name name = nil if name && ! @name self.class.register name, self @name = name end @name end |
#query(name, &definition) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/wongi-engine/ruleset.rb', line 65 def query name, &definition r = Query.new name r.instance_eval &definition @rules << r r end |
#rule(name, &definition) ⇒ Object
def uri uri = nil
@uri = uri if uri
@uri
end
58 59 60 61 62 63 |
# File 'lib/wongi-engine/ruleset.rb', line 58 def rule name, &definition r = ProductionRule.new name r.instance_eval &definition @rules << r r end |