class Enumerator::Chain
Public Class Methods
new(*enums)
click to toggle source
rubocop:disable Lint/MissingSuper
# File lib/backports/2.6.0/enumerable/chain.rb, line 12 def initialize(*enums) @enums = enums @rewindable = -1 # This self is necessary to pass RubySpec, # See rubyspec/core/enumerator/chain/initialize_spec.rb # ...it checks what call of #initialize on non-initalized object returns self # rubocop:disable Lint/Void end
Public Instance Methods
each(*args, &block)
click to toggle source
rubocop:enable Lint/MissingSuper
# File lib/backports/2.6.0/enumerable/chain.rb, line 22 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 39 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 44 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 29 def size sum = 0 @enums.each do |enum| s = enum.size return s if s == nil || s == Float::INFINITY sum += s end sum end