class RuboCop::Cop::Style::EachForSimpleLoop
10.times { }
@good
(0..10).each { }
@bad
@example
This check only applies if the block takes no parameters.
‘Integer#times`.
using a Range literal and `#each`. This can be done more readably using
This cop checks for loops which iterate a constant number of times,
def autocorrect(node)
def autocorrect(node) lambda do |corrector| min, max = bad_each_range(node) corrector.replace(node.children.first.source_range, "#{max - min}.times") end end
def on_block(node)
def on_block(node) if bad_each_range(node) send_node, = *node range = send_node.receiver.source_range.join(send_node.loc.selector) add_offense(node, range, 'Use `Integer#times` for a simple loop ' \ 'which iterates a fixed number of times.') end end