module Kernel

Private Instance Methods

iterate(*iteratables) { |e| ... } click to toggle source
# File lib/iterate.rb, line 6
def iterate(*iteratables)
  raise ArgumentError, "wrong number of arguments (0)" if iteratables.empty?
  first, rest = iteratables[0], iteratables[1..-1]
  if rest.empty?
    block_given? ? first.map{ |e| yield e } : first.map.to_enum
  else
    padding = iteratables.max_by(&:size).size - first.size
    iter = (first.to_a + [nil]*padding).zip(*rest)
    block_given? ? iter.map{|es| yield(*es) } : iter.map.to_enum
  end
end