class RuboCop::Cop::Lint::RedundantWithIndex
Checks for redundant ‘with_index`.
@example
# bad ary.each_with_index do |v| v end # good ary.each do |v| v end # bad ary.each.with_index do |v| v end # good ary.each do |v| v end
Constants
- MSG_EACH_WITH_INDEX
- MSG_WITH_INDEX
Public Instance Methods
Source
# File lib/rubocop/cop/lint/redundant_with_index.rb, line 37 def on_block(node) return unless node.receiver return if node.method?(:with_index) && !node.receiver.receiver 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
rubocop:disable Metrics/AbcSize
Also aliased as: on_numblock, on_itblock
Private Instance Methods
Source
# File lib/rubocop/cop/lint/redundant_with_index.rb, line 73 def message(node) if node.method?(:each_with_index) MSG_EACH_WITH_INDEX else MSG_WITH_INDEX end end
Source
# File lib/rubocop/cop/lint/redundant_with_index.rb, line 81 def with_index_range(send) range_between(send.loc.selector.begin_pos, send.source_range.end_pos) end