mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
34 lines
721 B
Ruby
34 lines
721 B
Ruby
|
module REXML
|
||
|
class SyncEnumerator
|
||
|
include Enumerable
|
||
|
|
||
|
# Creates a new SyncEnumerator which enumerates rows of given
|
||
|
# Enumerable objects.
|
||
|
def initialize(*enums)
|
||
|
@gens = enums
|
||
|
@biggest = @gens[0]
|
||
|
@gens.each {|x| @biggest = x if x.size > @biggest.size }
|
||
|
end
|
||
|
|
||
|
# Returns the number of enumerated Enumerable objects, i.e. the size
|
||
|
# of each row.
|
||
|
def size
|
||
|
@gens.size
|
||
|
end
|
||
|
|
||
|
# Returns the number of enumerated Enumerable objects, i.e. the size
|
||
|
# of each row.
|
||
|
def length
|
||
|
@gens.length
|
||
|
end
|
||
|
|
||
|
# Enumerates rows of the Enumerable objects.
|
||
|
def each
|
||
|
@biggest.zip( *@gens ) {|a|
|
||
|
yield(*a[1..-1])
|
||
|
}
|
||
|
self
|
||
|
end
|
||
|
end
|
||
|
end
|