class RuboCop::Cop::EachToForCorrector
This class autocorrects ‘#each` enumeration to `for` iteration.
def call(corrector)
def call(corrector) corrector.replace(offending_range, correction) end
def correction
def correction if block_node.arguments? format(CORRECTION_WITH_ARGUMENTS, collection: collection_node.source, variables: argument_node.children.first.source) else format(CORRECTION_WITHOUT_ARGUMENTS, enumerable: collection_node.source) end end
def initialize(block_node)
def initialize(block_node) @block_node = block_node @collection_node = block_node.receiver @argument_node = block_node.arguments end
def offending_range
def offending_range if block_node.arguments? replacement_range(argument_node.source_range.end_pos) else replacement_range(block_node.loc.begin.end_pos) end end
def replacement_range(end_pos)
def replacement_range(end_pos) Parser::Source::Range.new(block_node.source_range.source_buffer, block_node.source_range.begin_pos, end_pos) end