Sha256: 15abb02dddb9f026f634d12d5cf4931f7ce5b3c4740f0893c78adea4fadde508
Contents?: true
Size: 913 Bytes
Versions: 2
Compression:
Stored size: 913 Bytes
Contents
module Gisele module Language class Rewriter class Helper attr_accessor :next_in_chain def self.install_on(rewriter) methods = const_get(:Methods) rewriter.module_eval do include methods end rewriter.add_helper(new) end def call(rw, node, &bl) meth = :"on_#{node.first}" meth = :"on_missing" unless respond_to?(meth) send(meth, rw, node) do |r,n| next_call(r, n, bl) end end def on_missing(rw, node) yield(rw, node) end private def next_call(rw, node, toplevel) if nic = next_in_chain nic.call(rw, node, &toplevel) else toplevel.call(rw, node) end end end # class Helper end # class Rewriter end # module Language end # module Gisele
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
gisele-0.4.0 | lib/gisele/language/rewriter/helper.rb |
gisele-0.3.0 | lib/gisele/language/rewriter/helper.rb |