module Temple::Mixins::Dispatcher
def self.included(base)
def self.included(base) base.class_eval { extend ClassMethods } end
def compile(exp)
def compile(exp) compile!(exp) end
def compile!(exp)
def compile!(exp) type, *args = exp if respond_to?("on_#{type}") send("on_#{type}", *args) else exp end end
def on_capture(name, exp)
def on_capture(name, exp) [:capture, name, compile!(exp)] end
def on_multi(*exps)
def on_multi(*exps) [:multi, *exps.map {|exp| compile!(exp) }] end