Sha256: bade33f57500f9cec14843debb148d7b92d76257a964bc9505bd85950185e62d

Contents?: true

Size: 892 Bytes

Versions: 2

Compression:

Stored size: 892 Bytes

Contents

class Datapipes
  # Tube takes effect data which passes through pipe.
  #
  # Build your own tube logic in `run` method.
  class Tube
    # _>>_ is used to compose tubes. See usage in examples.
    #
    # Tube composition satisfies associative law. See more in spec.
    def >>(op2)
      op1 = self
      Tube.new.tap do |o|
        o.define_singleton_method(:run) do |data|
          op2.run(op1.run(data))
        end
      end
    end

    # Override this in sub class.
    #
    # _run_ recieves any data, so you have to ignore
    # unexpected data.
    #
    #   def run(data)
    #     if accept? data
    #       [data, data, data]
    #     else
    #       data
    #     end
    #   end
    #
    #    def accept?(data)
    #      data.is_a? Integer and data > 3
    #    end
    #
    # Don't forget to return data in else clause.
    def run(data)
      data
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
datapipes-0.1.5 lib/datapipes/tube.rb
datapipes-0.1.4 lib/datapipes/tube.rb