class Synvert::Core::Rewriter::GotoScope

Go to and change its scope to a child node.

Public Class Methods

new(instance, child_node_name, &block) click to toggle source

Initialize a scope

@param instance [Synvert::Core::Rewriter::Instance] @param child_node_name [Symbol|string] @param block [Block]

# File lib/synvert/core/rewriter/scope/goto_scope.rb, line 11
def initialize(instance, child_node_name, &block)
  @instance = instance
  @child_node_name = child_node_name
  @block = block
end

Public Instance Methods

process() click to toggle source

Go to a child now, then run the block code with the the child node.

# File lib/synvert/core/rewriter/scope/goto_scope.rb, line 18
def process
  current_node = @instance.current_node
  return unless current_node

  child_node = current_node
  @child_node_name.to_s.split('.').each do |child_node_name|
    child_node = child_node_name.is_a?(Parser::AST::Node) ? child_node_name : child_node.send(child_node_name)
  end
  @instance.process_with_other_node child_node do
    @instance.instance_eval(&@block)
  end
end