class RuboCop::Cop::Performance::ZipWithoutBlock
- 1, 2, 3].zip
# good
[1, 2, 3].map { |id| [id -
}
# bad
@example
as described in ruby-doc.org/core/Enumerable.html<br>To make your object enumerable, define an ‘each` method
on non-Enumerable objects that do not respond to `zip`.
This cop is unsafe for novel definitions of `map` and `collect`
@safety
Checks for `map { |id| [id] }` and suggests replacing it with `zip`.
def offense_range(node)
def offense_range(node) node.loc.selector.join(node.parent.loc.end) end
def on_send(node)
def on_send(node) return unless map_with_array?(node.parent) register_offense(node) end
def register_offense(node)
def register_offense(node) offense_range = offense_range(node) add_offense(offense_range) do |corrector| corrector.replace(offense_range, 'zip') end end