Sha256: b5ee91bd7b3ae3eb7c3a07cd7ca36850ba284d389585659b418f2ec054f6fe6e

Contents?: true

Size: 606 Bytes

Versions: 1

Compression:

Stored size: 606 Bytes

Contents

module Reek
  module Source
    #
    # Locates references to the current object within a portion
    # of an abstract syntax tree.
    #
    class ReferenceCollector
      STOP_NODES = [:class, :module, :defn, :defs]

      def initialize(ast)
        @ast = ast
      end

      def num_refs_to_self
        result = 0
        [:self, :zsuper, :ivar, :iasgn].each do |node_type|
          @ast.look_for(node_type, STOP_NODES) { result += 1 }
        end
        @ast.look_for(:call, STOP_NODES) do |call|
          result += 1 unless call.receiver
        end
        result
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reek-1.4.0 lib/reek/source/reference_collector.rb