Sha256: 4fea7857355c9dc69cdd4dd37ff2664a74e52aa15f3c32e42cea65d16a2a225b

Contents?: true

Size: 605 Bytes

Versions: 14

Compression:

Stored size: 605 Bytes

Contents

# frozen_string_literal: true

RubyNext::Core.patch Enumerator.singleton_class, method: :produce, singleton: Enumerator, version: "2.7" do
  <<~'RUBY'
    # Based on https://github.com/zverok/enumerator_generate
    def produce(*rest, &block)
      raise ArgumentError, "wrong number of arguments (given #{rest.size}, expected 0..1)" if rest.size > 1
      raise ArgumentError, "No block given" unless block

      Enumerator.new(Float::INFINITY) do |y|
        val = rest.empty? ? yield() : rest.pop

        loop do
          y << val
          val = yield(val)
        end
      end
    end
  RUBY
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
ruby-next-core-0.9.2 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.9.1 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.9.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.9.0.pre lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.8.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.7.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.6.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.5.3 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.5.2 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.5.1 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.5.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.4.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-0.3.0 lib/ruby-next/core/enumerator/produce.rb
ruby-next-core-0.3.0 lib/ruby-next/core/enumerator/produce.rb