Class: Pull::Drain

Inherits:
Object
  • Object
show all
Defined in:
lib/pull/sink/drain.rb

Constant Summary collapse

DEFAULT_DONE_CALLBACK =
-> () {
  puts "DONE"
}

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Drain



9
10
11
12
# File 'lib/pull/sink/drain.rb', line 9

def initialize(&block)
  @block = block
  @continuing = true
end

Instance Method Details

#call(read, done = DEFAULT_DONE_CALLBACK) ⇒ Object

Raises:

  • (TypeError)


14
15
16
17
18
19
20
21
22
# 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