Class: Wongi::Engine::DSLBuilder

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

Instance Method Summary collapse

Constructor Details

#initializeDSLBuilder

Returns a new instance of DSLBuilder.



4
5
6
7
8
# File 'lib/wongi-engine/dsl/dsl_builder.rb', line 4

def initialize
  @current_section = nil
  @current_clause = nil
  @clauses = []
end

Instance Method Details

#accept(klass) ⇒ Object



37
38
39
40
41
# File 'lib/wongi-engine/dsl/dsl_builder.rb', line 37

def accept klass
  raise "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) ⇒ Object



25
26
27
28
29
# File 'lib/wongi-engine/dsl/dsl_builder.rb', line 25

def action klass = nil, &block
  raise "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) ⇒ Object



31
32
33
34
35
# File 'lib/wongi-engine/dsl/dsl_builder.rb', line 31

def body klass = nil, &block
  raise "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) ⇒ Object



10
11
12
13
14
15
# File 'lib/wongi-engine/dsl/dsl_builder.rb', line 10

def build &definition
  instance_eval &definition
  @clauses.each do |c|
    DSLExtensions.create_extension c
  end
end

#clause(*c) ⇒ Object



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

def clause *c
  @current_clause = c
end

#section(s) ⇒ Object



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

def section s
  @current_section = s
end