class RuboCop::Cop::Style::For

This cop looks for uses of the for keyword, or each method. The preferred alternative is set in the EnforcedStyle configuration parameter. An each call with a block on a single line is always allowed, however.

Constants

EACH_LENGTH

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/style/for.rb, line 25
def on_block(node)
  return if node.single_line?

  return unless node.send_node.method?(:each) &&
                !node.send_node.arguments?

  if style == :for
    incorrect_style_detected(node.send_node)
  else
    correct_style_detected
  end
end
on_for(node) click to toggle source
# File lib/rubocop/cop/style/for.rb, line 13
def on_for(node)
  if style == :each
    msg = 'Prefer `each` over `for`.'

    add_offense(node, location: :keyword, message: msg) do
      opposite_style_detected
    end
  else
    correct_style_detected
  end
end

Private Instance Methods

incorrect_style_detected(method) click to toggle source
# File lib/rubocop/cop/style/for.rb, line 40
def incorrect_style_detected(method)
  end_pos = method.source_range.end_pos
  range = range_between(end_pos - EACH_LENGTH, end_pos)
  msg = 'Prefer `for` over `each`.'

  add_offense(range, location: range, message: msg) do
    opposite_style_detected
  end
end