Sha256: 725ef5f49a73c600a3d31f94cc345a952598f853201f524f825102f2227154f0
Contents?: true
Size: 867 Bytes
Versions: 1
Compression:
Stored size: 867 Bytes
Contents
# frozen_string_literal: true module SlowEnumeratorTools module Batcher def self.batch(enum) q = Queue.new stop = Object.new t = Thread.new do enum.each do |e| q << e end q << stop end Enumerator.new do |y| loop do res = [] ended = false # pop first elem = q.pop break if stop.equal?(elem) res << elem loop do # pop remaining begin elem = q.pop(true) rescue ThreadError break end if stop.equal?(elem) ended = true break end res << elem end y << res break if ended end t.join end.lazy end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slow_enumerator_tools-1.0.0 | lib/slow_enumerator_tools/batcher.rb |