class RuboCop::Cop::Style::EvenOdd

This cop checks for places where Integer#even? or Integer#odd? should have been used.

@example

# bad
if x % 2 == 0

# good
if x.even?

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/even_odd.rb, line 33
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
on_send(node) click to toggle source
# File lib/rubocop/cop/style/even_odd.rb, line 26
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, replacement_method))
  end
end

Private Instance Methods

replacement_method(arg, method) click to toggle source
# File lib/rubocop/cop/style/even_odd.rb, line 44
def replacement_method(arg, method)
  case arg
  when 0
    method == :== ? :even : :odd
  when 1
    method == :== ? :odd : :even
  end
end