class Enumerator::Chain
Public Class Methods
new(*enums)
click to toggle source
# File lib/backports/2.6.0/enumerable/chain.rb, line 11 def initialize(*enums) @enums = enums @rewindable = -1 self end
Public Instance Methods
each(*args, &block)
click to toggle source
# File lib/backports/2.6.0/enumerable/chain.rb, line 17 def each(*args, &block) @enums.each_with_index do |enum, i| @rewindable = i enum.each(*args, &block) end end
inspect()
click to toggle source
# File lib/backports/2.6.0/enumerable/chain.rb, line 34 def inspect detail = @enums.map(&:inspect).join(', ') "#<Enumerator::Chain: [#{detail}]>" end
rewind()
click to toggle source
# File lib/backports/2.6.0/enumerable/chain.rb, line 39 def rewind @rewindable.downto(0) do |i| enum = @enums[i] enum.rewind if enum.respond_to? :rewind end self end
size()
click to toggle source
# File lib/backports/2.6.0/enumerable/chain.rb, line 24 def size sum = 0 @enums.each do |enum| s = enum.size return s if s == nil || s == Float::INFINITY sum += s end sum end