class RuboCop::Cop::Performance::RedundantSortBlock

This cop identifies places where `sort { |a, b| a <=> b }` can be replaced with `sort`.

@example

# bad
array.sort { |a, b| a <=> b }

# good
array.sort

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/performance/redundant_sort_block.rb, line 22
def on_block(node)
  return unless (send, var_a, var_b, body = sort_with_block?(node))

  replaceable_body?(body, var_a, var_b) do
    range = sort_range(send, node)

    add_offense(range, message: message(var_a, var_b)) do |corrector|
      corrector.replace(range, 'sort')
    end
  end
end

Private Instance Methods

message(var_a, var_b) click to toggle source
# File lib/rubocop/cop/performance/redundant_sort_block.rb, line 36
def message(var_a, var_b)
  bad_method = "sort { |#{var_a}, #{var_b}| #{var_a} <=> #{var_b} }"
  format(MSG, bad_method: bad_method)
end