class RuboCop::Cop::Style::EvenOdd
end
if x.even?
# good
end
if x % 2 == 0
# bad
@example
can be used.
This cop checks for places where ‘Integer#even?` or `Integer#odd?`
def autocorrect(node)
def autocorrect(node) even_odd_candidate?(node) do |base_number, method, arg| replacement_method = replacement_method(arg, method) correction = "#{base_number.source}.#{replacement_method}?" ->(corrector) { corrector.replace(node.source_range, correction) } end end
def on_send(node)
def on_send(node) even_odd_candidate?(node) do |_base_number, method, arg| replacement_method = replacement_method(arg, method) add_offense(node, message: format(MSG, method: replacement_method)) end end
def replacement_method(arg, method)
def replacement_method(arg, method) case arg when 0 method == :== ? :even : :odd when 1 method == :== ? :odd : :even end end