Class: Hashira::Smells::Refs

Inherits:
Object
  • Object
show all
Defined in:
lib/hashira/smells/refs.rb

Constant Summary collapse

SELVES =
[
  Prism::SelfNode, Prism::SuperNode, Prism::ForwardingSuperNode,
  Prism::InstanceVariableReadNode, Prism::InstanceVariableWriteNode,
  Prism::InstanceVariableOrWriteNode, Prism::InstanceVariableAndWriteNode,
  Prism::InstanceVariableOperatorWriteNode, Prism::InstanceVariableTargetNode
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(def_node) ⇒ Refs

Returns a new instance of Refs.



13
14
15
16
# File 'lib/hashira/smells/refs.rb', line 13

def initialize(def_node)
  @tallies = {}
  Hashira::Smells::Scope.inside(def_node).each { record(it) }
end

Instance Method Details

#egoObject



18
# File 'lib/hashira/smells/refs.rb', line 18

def ego = lines(:self).size

#enviousObject



22
23
24
25
26
# File 'lib/hashira/smells/refs.rb', line 22

def envious
  peak = @tallies.values.map(&:size).max
  names = @tallies.filter_map { |name, sightings| name if sightings.size == peak }
  names.include?(:self) ? [] : names
end

#lines(name) ⇒ Object



20
# File 'lib/hashira/smells/refs.rb', line 20

def lines(name) = @tallies.fetch(name, [])