module Temple::Mixins::CompiledDispatcher

def case_statement(types)

def case_statement(types)
  code = "type, *args = args\ncase type\n"
  types.each do |name, method|
    code << "when #{name.to_sym.inspect}\n" <<
      (Hash === method ? case_statement(method) : "#{method}(*args)\n")
  end
  code << "else\nexp\nend\n"
end