Class: Pull::Reduce

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

Constant Summary collapse

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

Instance Method Summary collapse

Constructor Details

#initialize(accumulator, &block) ⇒ Reduce



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

def initialize(accumulator, &block)
  @accumulator = accumulator
  @block = block
end

Instance Method Details

#call(read, done = DEFAULT_DONE_CALLBACK) ⇒ Object

Raises:

  • (TypeError)


14
15
16
17
18
19
20
# File 'lib/pull/sink/reduce.rb', line 14

def call(read, done = DEFAULT_DONE_CALLBACK)
  raise TypeError unless read.respond_to?(:call)
  drained = Pull::Drain.new do |value|
    @accumulator = block.call(@accumulator, value)
  end
  drained.(read)
end