Sha256: 4bedb80fb0c78f98a9a5e13caf4c924b6ea7f255f5fedd23917fce9b0f5a4823

Contents?: true

Size: 559 Bytes

Versions: 2

Compression:

Stored size: 559 Bytes

Contents

module Frappuccino
  class Zip < Stream
    def initialize(left, right)
      @left_buffer = []
      @right_buffer = []
      left.add_observer(self, :left_update)
      right.add_observer(self, :right_update)
    end

    def left_update(event)
      if @right_buffer.length > 0
        occur([event, @right_buffer.shift])
      else
        @left_buffer << event
      end
    end

    def right_update(event)
      if @left_buffer.length > 0
        occur([@left_buffer.shift, event])
      else
        @right_buffer << event
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
frappuccino-0.3.0 lib/frappuccino/stream/zip.rb
frappuccino-0.2.0 lib/frappuccino/stream/zip.rb