class RuboCop::Cop::Performance::RedundantSortBlock
array.sort
# good
array.sort { |a, b| a <=> b }
# bad
@example
can be replaced with ‘sort`.
This cop identifies places where `sort { |a, b| a <=> b }`
def autocorrect(node)
def autocorrect(node) sort_with_block?(node) do |send, _var_a, _var_b, _body| lambda do |corrector| range = sort_range(send, node) corrector.replace(range, 'sort') end end end
def message(var_a, var_b)
def message(var_a, var_b) bad_method = "sort { |#{var_a}, #{var_b}| #{var_a} <=> #{var_b} }" format(MSG, bad_method: bad_method) end
def on_block(node)
def on_block(node) sort_with_block?(node) do |send, var_a, var_b, body| replaceable_body?(body, var_a, var_b) do range = sort_range(send, node) add_offense( node, location: range, message: message(var_a, var_b) ) end end end