class RuboCop::Cop::Style::MinMax

This cop checks for potential uses of `Enumerable#minmax`.

@example

# bad
bar = [foo.min, foo.max]
return foo.min, foo.max

# good
bar = foo.minmax
return foo.minmax

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/min_max.rb, line 30
def autocorrect(node)
  receiver = node.children.first.receiver

  lambda do |corrector|
    corrector.replace(offending_range(node),
                      "#{receiver.source}.minmax")
  end
end
on_array(node) click to toggle source
# File lib/rubocop/cop/style/min_max.rb, line 20
def on_array(node)
  min_max_candidate(node) do |receiver|
    offender = offending_range(node)

    add_offense(node, location: offender,
                      message: message(offender, receiver))
  end
end
Also aliased as: on_return
on_return(node)
Alias for: on_array

Private Instance Methods

argument_range(node) click to toggle source
# File lib/rubocop/cop/style/min_max.rb, line 59
def argument_range(node)
  first_argument_range = node.children.first.loc.expression
  last_argument_range  = node.children.last.loc.expression

  first_argument_range.join(last_argument_range)
end
message(offender, receiver) click to toggle source
# File lib/rubocop/cop/style/min_max.rb, line 45
def message(offender, receiver)
  format(MSG, offender: offender.source,
              receiver: receiver.source)
end
offending_range(node) click to toggle source
# File lib/rubocop/cop/style/min_max.rb, line 50
def offending_range(node)
  case node.type
  when :return
    argument_range(node)
  else
    node.loc.expression
  end
end