class Pull::Drain

Constants

DEFAULT_DONE_CALLBACK

Attributes

block[R]

Public Class Methods

new(&block) click to toggle source
# File lib/pull/sink/drain.rb, line 9
def initialize(&block)
  @block = block
  @continuing = true
end

Public Instance Methods

call(read, done = DEFAULT_DONE_CALLBACK) click to toggle source
# File lib/pull/sink/drain.rb, line 14
def call(read, done = DEFAULT_DONE_CALLBACK)
  raise TypeError unless read.respond_to?(:call)
  while @continuing
    return done.() && break if !@continuing
    @continuing = read.(nil, -> (value) {
      block.call(value)
    })
  end
end