module Babl::Operators::Switch::DSL
Public Instance Methods
switch(conds = Utils::Hash::EMPTY)
click to toggle source
Conditional switching between different templates
# File lib/babl/operators/switch.rb, line 10 def switch(conds = Utils::Hash::EMPTY) conds = conds.map { |cond, value| [unscoped.reset_continue.call(cond), unscoped.call(value)] } construct_node { |node, context| nodes = conds.map { |cond, value| cond_node = cond.builder.precompile( Nodes::InternalValue.instance, context ) value_node = value.builder.precompile( Nodes::TerminalValue.instance, context.merge(continue: node) ) [cond_node, value_node] } Nodes::Switch.new(nodes) }.reset_continue end