Class: Wongi::Engine::DSLBuilder
- Inherits:
-
Object
- Object
- Wongi::Engine::DSLBuilder
- Defined in:
- lib/wongi-engine/dsl/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 ⇒ DSLBuilder
constructor
A new instance of DSLBuilder.
- #section(s) ⇒ Object
Constructor Details
#initialize ⇒ DSLBuilder
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 |