Sha256: 25fa937cadba776d58b549a22ef9c078a6c0a295284f5be059e00a2c567de7fb

Contents?: true

Size: 490 Bytes

Versions: 5

Compression:

Stored size: 490 Bytes

Contents

module Plumbing
  # A pipe that filters events from a source pipe
  class Junction < Pipe
    # Chain multiple sources to this pipe
    # @param sources [Array<Plumbing::Observable>] the sources which will be joined and relayed
    def initialize *sources
      super()
      sources.each { |source| add(source) }
    end

    private

    def add source
      source.as(Observable).add_observer do |event|
        safely do
          dispatch event
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
standard-procedure-plumbing-0.4.5 lib/plumbing/junction.rb
standard-procedure-plumbing-0.4.4 lib/plumbing/junction.rb
standard-procedure-plumbing-0.4.3 lib/plumbing/junction.rb
standard-procedure-plumbing-0.4.2 lib/plumbing/junction.rb
standard-procedure-plumbing-0.4.1 lib/plumbing/junction.rb