Sha256: 621af0a193e66d0d529e494c8fddf07b72c956eb2ca8ce0bab4675e765907351

Contents?: true

Size: 802 Bytes

Versions: 6

Compression:

Stored size: 802 Bytes

Contents

class ::Enumerator
  class self::Chain < self
    def initialize(*enums)
      @enums = enums
      @iterated = []
      @object = self
    end

    def each(*args, &block)
      return to_enum(:each, *args) { size } unless block_given?

      @enums.each do |enum|
        @iterated << enum
        enum.each(*args, &block)
      end

      self
    end

    def size(*args)
      accum = 0
      @enums.each do |enum|
        size = enum.size(*args)
        return size if [nil, ::Float::INFINITY].include? size
        accum += size
      end
      accum
    end

    def rewind
      @iterated.reverse_each do |enum|
        enum.rewind if enum.respond_to? :rewind
      end
      @iterated = []
      self
    end

    def inspect
      "#<Enumerator::Chain: #{@enums.inspect}>"
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
opal-1.5.1 opal/corelib/enumerator/chain.rb
opal-1.5.0 opal/corelib/enumerator/chain.rb
opal-1.5.0.rc1 opal/corelib/enumerator/chain.rb
opal-1.4.1 opal/corelib/enumerator/chain.rb
opal-1.4.0 opal/corelib/enumerator/chain.rb
opal-1.4.0.alpha1 opal/corelib/enumerator/chain.rb