Class: Wongi::Engine::DSL::Builder
- Inherits:
-
Object
- Object
- Wongi::Engine::DSL::Builder
- Defined in:
- lib/wongi-engine/dsl/builder.rb
Instance Method Summary collapse
- #accept(klass) ⇒ Object
- #action(klass = nil, &block) ⇒ Object
- #body(klass = nil, &block) ⇒ Object
- #build(&definition) ⇒ Object
- #clause(*c) ⇒ Object
-
#initialize ⇒ Builder
constructor
A new instance of Builder.
- #section(s) ⇒ Object
Constructor Details
#initialize ⇒ Builder
Returns a new instance of Builder.
4 5 6 7 8 |
# File 'lib/wongi-engine/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/builder.rb', line 37 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) ⇒ Object
25 26 27 28 29 |
# File 'lib/wongi-engine/dsl/builder.rb', line 25 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) ⇒ Object
31 32 33 34 35 |
# File 'lib/wongi-engine/dsl/builder.rb', line 31 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) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/wongi-engine/dsl/builder.rb', line 10 def build &definition instance_eval &definition @clauses.each do |c| Generated.create_dsl_method c end end |
#clause(*c) ⇒ Object
21 22 23 |
# File 'lib/wongi-engine/dsl/builder.rb', line 21 def clause *c @current_clause = c end |
#section(s) ⇒ Object
17 18 19 |
# File 'lib/wongi-engine/dsl/builder.rb', line 17 def section s @current_section = s end |