Sha256: ab2b7b19bf60f6a3649e60477d0ace9ed3eb8569a9ee765dd98a276a171e1c62

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

require 'forwardable'

module Grizzly
  class Enumerator
    extend Forwardable
    include ::Grizzly::Enumerable

    def_delegators :@enum, *%i{
      + first feed to_a
      next next_values
      peek peek_values
      size
    }

    attr_reader :enum, :instantiating_class
    def initialize(enum, instantiating_class: Array)
      @enum = enum
      @instantiating_class = instantiating_class
    end

    def each(*args, &block)
      return self if args.empty? && !block_given?

      unless block_given?
        return new_enumerator(enum.each(*args))
      end

      enum.each(*args, &block)
    end

    def with_index(offset = 0, &block)
      unless block_given?
        return new_enumerator(@enum.with_index(offset))
      end

      enum.with_index(offset, &block)
    end

    def each_with_index(&block)
      with_index(&block)
    end

    def rewind
      enum.rewind && self
    end

    def with_object(object, &block)
      unless block_given?
        return new_enumerator(@enum.with_object(object))
      end

      enum.with_object(object, &block)
    end

    def each_with_object(object, &block)
      with_object(object, &block)
    end

    def inspect
      enum.inspect.gsub(/(?<!Grizzly::)Enumerator/, self.class.to_s)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grizzly-rb-1.1.0 lib/grizzly/enumerator.rb
grizzly-rb-1.0.0 lib/grizzly/enumerator.rb