Class: Rubocop::Cop::VariableInspector::NodeScanner

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocop/cop/variable_inspector.rb

Overview

This provides a way to scan all nodes only in current scope.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNodeScanner

Returns a new instance of NodeScanner.



128
129
130
# File 'lib/rubocop/cop/variable_inspector.rb', line 128

def initialize
  @node_index = -1
end

Class Method Details

.scan_nodes_in_scope(origin_node, &block) ⇒ Object



124
125
126
# File 'lib/rubocop/cop/variable_inspector.rb', line 124

def self.scan_nodes_in_scope(origin_node, &block)
  new.scan_nodes_in_scope(origin_node, &block)
end

Instance Method Details

#scan_nodes_in_scope(origin_node, &block) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/rubocop/cop/variable_inspector.rb', line 132

def scan_nodes_in_scope(origin_node, &block)
  origin_node.children.each do |child|
    next unless child.is_a?(Parser::AST::Node)

    node = child
    @node_index += 1

    catch(:skip_children) do
      yield node, @node_index

      # Do not go into inner scope.
      unless SCOPE_TYPES.include?(node.type)
        scan_nodes_in_scope(node, &block)
      end
    end
  end
end