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