class RuboCop::Cop::Lint::RedundantWithIndex
end
v
ary.each do |v|
# good
end
v
ary.each.with_index do |v|
# bad
end
v
ary.each do |v|
# good
end
v
ary.each_with_index do |v|
# bad
@example
Checks for redundant ‘with_index`.
def message(node)
def message(node) if node.method?(:each_with_index) MSG_EACH_WITH_INDEX else MSG_WITH_INDEX end end
def on_block(node)
def on_block(node) return unless (send = redundant_with_index?(node)) range = with_index_range(send) add_offense(range, message: message(send)) do |corrector| if send.method?(:each_with_index) corrector.replace(send.loc.selector, 'each') else corrector.remove(range) corrector.remove(send.loc.dot) end end end
def with_index_range(send)
def with_index_range(send) range_between(send.loc.selector.begin_pos, send.source_range.end_pos) end