class Temple::Mixins::CompiledDispatcher::DispatchNode
def compile(level = 0, parent = nil)
def compile(level = 0, parent = nil) if empty? if method (' ' * level) + "#{method}(*exp[#{level}..-1])" elsif !parent 'exp' else raise 'Invalid dispatcher node' end else code = [(' ' * level) + "case(exp[#{level}])"] each do |key, child| code << (' ' * level) + "when #{key.inspect}" code << child.compile(level + 1, parent || method) end if method || !parent code << (' ' * level) + "else" if method code << (' ' * level) + " #{method}(*exp[#{level}..-1])" else code << (' ' * level) + " exp" end end code << (' ' * level) + "end" code.join("\n") end end