Module: Babl::Operators::Switch::DSL

Included in:
Template
Defined in:
lib/babl/operators/switch.rb

Instance Method Summary collapse

Instance Method Details

#switch(conds = Utils::Hash::EMPTY) ⇒ Object

Conditional switching between different templates



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/babl/operators/switch.rb', line 10

def switch(conds = Utils::Hash::EMPTY)
    construct_node(continue: nil) { |node, context|
        nodes = conds.map { |cond, value|
            cond_node = unscoped.call(cond).builder
                .precompile(Nodes::InternalValue.instance, context.merge(continue: nil))

            value_node = unscoped.call(value).builder
                .precompile(Nodes::TerminalValue.instance, context.merge(continue: node))

            [cond_node, value_node]
        }

        Nodes::Switch.new(nodes)
    }
end