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(definition) ⇒ Refs

Returns a new instance of Refs.



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

def initialize(definition)
  @node = definition
end

Instance Method Details

#egoObject



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

def ego = lines(:self).size

#enviousObject



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

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



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

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