Sha256: 9fb82832f4b905012134a64ffbc0cf094a5e132b9c46f4510ff2b76a86bf61b2

Contents?: true

Size: 688 Bytes

Versions: 2

Compression:

Stored size: 688 Bytes

Contents

module Gisele
  module Language
    class Rewriter
      class Scoping < Helper

        module Methods

          def scope_stack
            @scope_stack ||= []
          end

          def with_scope(scope)
            scope_stack.push(scope)
            result = yield
            scope_stack.pop
            result
          end

        end # module Methods

        def on_missing(rw, node)
          if node.rule_name.to_s =~ /_def/
            rw.with_scope(node) do
              yield(rw, node)
            end
          else
            yield(rw, node)
          end
        end

      end # module Scoping
    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/scoping.rb
gisele-0.3.0 lib/gisele/language/rewriter/scoping.rb