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