Class: Temple::CoffeeScript::Filters::ControlFlow
- Defined in:
- lib/temple/coffee_script/filters/control_flow.rb
Instance Method Summary collapse
- #on_block(code, exp) ⇒ Object
- #on_case(arg, *cases) ⇒ Object
- #on_cond(*cases) ⇒ Object
- #on_if(condition, yes, no = nil) ⇒ Object
Methods included from Mixins::IndentDispatcher
Instance Method Details
#on_block(code, exp) ⇒ Object
29 30 31 32 33 |
# File 'lib/temple/coffee_script/filters/control_flow.rb', line 29 def on_block(code, exp) [:multi, [:code, code], [:indent, compile(exp)]] end |
#on_case(arg, *cases) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/temple/coffee_script/filters/control_flow.rb', line 15 def on_case(arg, *cases) result = [:multi, [:code, arg ? "switch (#{arg})" : 'switch'], [:indent, [:multi]]] cases.map do |c| condition, *exps = c result[2][1] << [:code, condition == :else ? 'else' : "when #{condition}"] exps.each {|e| result[2][1] << [:indent, compile(e)] } end result end |
#on_cond(*cases) ⇒ Object
25 26 27 |
# File 'lib/temple/coffee_script/filters/control_flow.rb', line 25 def on_cond(*cases) on_case(nil, *cases) end |
#on_if(condition, yes, no = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/temple/coffee_script/filters/control_flow.rb', line 5 def on_if(condition, yes, no = nil) result = [:multi, [:code, "if #{condition}"], [:indent, compile(yes)]] while no && no.first == :if result << [:code, "else if #{no[1]}"] << [:indent, compile(no[2])] no = no[3] end result << [:code, 'else'] << [:indent, compile(no)] if no result end |