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
  # 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
# File lib/backports/2.6.0/enumerable/chain.rb, line 20
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 37
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 42
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 27
def size
  sum = 0
  @enums.each do |enum|
    s = enum.size
    return s if s == nil || s == Float::INFINITY
    sum += s
  end
  sum
end