Sha256: 7b548f9688eeb3af7fe771e2e49984a075da7a8333d31c6247b1fc4ebdc43c15

Contents?: true

Size: 903 Bytes

Versions: 4

Compression:

Stored size: 903 Bytes

Contents

# encoding: utf-8

module Synvert
  class Rewriter::Scope
    def initialize(instance, options, &block)
      @instance = instance
      @options = options
      @block = block
    end

    def process
      current_node = @instance.current_node
      return unless current_node
      process_with_node current_node do
        matching_nodes = []
        matching_nodes << current_node if current_node.match? @instance, @options
        current_node.recursive_children do |child_node|
          matching_nodes << child_node if child_node.match? @instance, @options
        end
        matching_nodes.each do |matching_node|
          process_with_node matching_node do
            @instance.instance_eval &@block
          end
        end
      end
    end

  private

    def process_with_node(node)
      @instance.current_node = node
      yield
      @instance.current_node = node
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
synvert-0.0.7 lib/synvert/rewriter/scope.rb
synvert-0.0.6 lib/synvert/rewriter/scope.rb
synvert-0.0.5 lib/synvert/rewriter/scope.rb
synvert-0.0.4 lib/synvert/rewriter/scope.rb