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