class RuboCop::Cop::Style::PreferredHashMethods

This cop (by default) checks for uses of methods Hash#has_key? and Hash#has_value? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using `verbose` method names also.

@example EnforcedStyle: short (default)

# bad
Hash#has_key?
Hash#has_value?

# good
Hash#key?
Hash#value?

@example EnforcedStyle: verbose

# bad
Hash#key?
Hash#value?

# good
Hash#has_key?
Hash#has_value?

Constants

MSG
OFFENDING_SELECTORS

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 46
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.selector,
                      proper_method_name(node.loc.selector.source))
  end
end
on_csend(node)
Alias for: on_send
on_send(node) click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 38
def on_send(node)
  return unless node.arguments.one? &&
                offending_selector?(node.method_name)

  add_offense(node, location: :selector)
end
Also aliased as: on_csend

Private Instance Methods

message(node) click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 55
def message(node)
  format(MSG,
         prefer: proper_method_name(node.method_name),
         current: node.method_name)
end
offending_selector?(method_name) click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 69
def offending_selector?(method_name)
  OFFENDING_SELECTORS[style].include?(method_name)
end
proper_method_name(method_name) click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 61
def proper_method_name(method_name)
  if style == :verbose
    "has_#{method_name}"
  else
    method_name.to_s.sub(/has_/, '')
  end
end