Class: LazierData::Processor::RootEachSlice

Inherits:
Object
  • Object
show all
Defined in:
lib/lazier_data/processor/root_each_slice.rb

Instance Method Summary collapse

Constructor Details

#initialize(upstream, downstream, batch_size, &block) ⇒ RootEachSlice

Returns a new instance of RootEachSlice.



6
7
8
9
10
11
# File 'lib/lazier_data/processor/root_each_slice.rb', line 6

def initialize(upstream, downstream, batch_size, &block)
  @upstream = upstream
  @downstream = downstream
  @batch_size = batch_size
  @block = block
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
21
22
# File 'lib/lazier_data/processor/root_each_slice.rb', line 13

def call
  slicer.each_slice(batch_size) do |raw_yielded|
    root_items = raw_yielded.map(&:first)
    yielders = raw_yielded.last[2]
    @block.call(root_items, *yielders)
    raw_yielded.each do |root_item, item_store, _|
      downstream << [root_item, item_store]
    end
  end
end