From b5cb8284ba502cbd5d80f35f5ec892496468f4ff Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 27 Mar 2014 14:35:07 +0900 Subject: Enumerable#zip to use enumerator if mruby-enumerator gem is available --- mrbgems/mruby-enumerator/mrblib/enumerator.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index 17a650d6c..1494c02c5 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -607,3 +607,28 @@ module Kernel end alias :enum_for :to_enum end + +module Enumerable + # use Enumerator to use inifite sequence + def zip(*arg) + ary = [] + arg = arg.map{|a|a.each} + i = 0 + self.each do |*val| + a = [] + a.push(val.__svalue) + idx = 0 + while idx < arg.size + begin + a.push(arg[idx].next) + rescue StopIteration + a.push(nil) + end + idx += 1 + end + ary.push(a) + i += 1 + end + ary + end +end -- cgit v1.2.3