module Temple::Mixins::CompiledDispatcher

def replace_dispatcher(exp)

def replace_dispatcher(exp)
  tree = DispatchNode.new
  dispatched_methods.each do |method|
    method.split('_')[1..-1].inject(tree) {|node, type| node[type.to_sym] }.method = method
  end
  self.class.class_eval %{def dispatcher(exp)
rn replace_dispatcher(exp) if self.class != #{self.class}
ee.compile.gsub("\n", "\n  ")}
  dispatcher(exp)
end