class RuboCop::Cop::Style::CollectionMethods

This cop enforces the use of consistent method names from the Enumerable module.

Unfortunately we cannot actually know if a method is from Enumerable or not (static analysis limitation), so this cop can yield some false positives.

You can customize the mapping from undesired method to desired method.

e.g. to use `detect` over `find`:

Style/CollectionMethods:
  PreferredMethods:
    find: detect

The default mapping for `PreferredMethods` behaves as follows.

@example

# bad
items.collect
items.collect!
items.inject
items.detect
items.find_all

# good
items.map
items.map!
items.reduce
items.find
items.select

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/collection_methods.rb, line 54
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.selector,
                      preferred_method(node.loc.selector.source))
  end
end
on_block(node) click to toggle source
# File lib/rubocop/cop/style/collection_methods.rb, line 43
def on_block(node)
  check_method_node(node.send_node)
end
on_send(node) click to toggle source
# File lib/rubocop/cop/style/collection_methods.rb, line 47
def on_send(node)
  return unless node.arguments.one? &&
                node.first_argument.block_pass_type?

  check_method_node(node)
end

Private Instance Methods

check_method_node(node) click to toggle source
# File lib/rubocop/cop/style/collection_methods.rb, line 69
def check_method_node(node)
  return unless preferred_methods[node.method_name]

  add_offense(node, location: :selector)
end
message(node) click to toggle source
# File lib/rubocop/cop/style/collection_methods.rb, line 63
def message(node)
  format(MSG,
         prefer: preferred_method(node.method_name),
         current: node.method_name)
end