class Wongi::Engine::DSL::Builder
Public Class Methods
new()
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 3 def initialize @current_section = nil @current_clause = nil @clauses = [] end
Public Instance Methods
accept(klass)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 41 def accept(klass) raise DefinitionError, "Cannot create an acceptor without a clause" if @current_clause.nil? @clauses << { section: @current_section, clause: @current_clause, accept: klass } @current_clause = nil end
action(klass = nil, &block)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 27 def action(klass = nil, &block) raise DefinitionError, "Cannot create an action without a clause" if @current_clause.nil? @clauses << { section: @current_section, clause: @current_clause, action: klass || block } @current_clause = nil end
body(klass = nil, &block)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 34 def body(klass = nil, &block) raise DefinitionError, "Cannot create a body without a clause" if @current_clause.nil? @clauses << { section: @current_section, clause: @current_clause, body: klass || block } @current_clause = nil end
build(&definition)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 9 def build(&definition) instance_eval(&definition) @clauses.each do |c| Wongi::Engine::DSL.sections[c[:section]] ||= Class.new do include Generated end Wongi::Engine::DSL.sections[c[:section]].create_dsl_method(c) end end
clause(*c)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 23 def clause(*c) @current_clause = c end
section(s)
click to toggle source
# File lib/wongi-engine/dsl/builder.rb, line 19 def section(s) @current_section = s end