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