Class: Wongi::Engine::Ruleset

Inherits:
Object
  • Object
show all
Defined in:
lib/wongi-engine/ruleset.rb

Class Method Summary collapse

Instance Method Summary collapse

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

.resetObject



21
22
23
# File 'lib/wongi-engine/ruleset.rb', line 21

def reset
  @rulesets = { }
end

.rulesetsObject



17
18
19
# File 'lib/wongi-engine/ruleset.rb', line 17

def rulesets
  @rulesets ||= {}
end

Instance Method Details

#inspectObject



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