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 50 def autocorrect(node) lambda do |corrector| corrector.replace(node.loc.selector, proper_method_name(node.loc.selector.source)) end end
on_send(node)
click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 43 def on_send(node) return unless node.arguments.one? && offending_selector?(node.method_name) add_offense(node, location: :selector) end
Private Instance Methods
message(node)
click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 59 def message(node) format(MSG, proper_method_name(node.method_name), node.method_name) end
offending_selector?(method_name)
click to toggle source
# File lib/rubocop/cop/style/preferred_hash_methods.rb, line 71 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 63 def proper_method_name(method_name) if style == :verbose "has_#{method_name}" else method_name.to_s.sub(/has_/, '') end end