class Pyper::Pipeline
Attributes
pipes[R]
Public Class Methods
create(&block)
click to toggle source
Provides an interface for creating a pipeline. The provided block will be called in the context of a newly-created pipeline, to which pipes can be added using add
. @return [Pyper::Pipeline] The created pipeline.
# File lib/pyper/pipeline.rb, line 13 def create(&block) new.tap do |pipeline| if block_given? original_self = eval('self', block.binding) pipeline.instance_variable_set(:@original_self, original_self) pipeline.instance_eval(&block) pipeline.remove_instance_variable(:@original_self) end end end
new(pipes = [])
click to toggle source
# File lib/pyper/pipeline.rb, line 27 def initialize(pipes = []) @pipes = pipes end
Public Instance Methods
<<(pipe)
click to toggle source
@param pipe [#pipe|#call] A pipe to append to the pipeline
# File lib/pyper/pipeline.rb, line 32 def <<(pipe) pipes << pipe self end
Also aliased as: add
method_missing(sym, *args, &block)
click to toggle source
Calls superclass method
# File lib/pyper/pipeline.rb, line 55 def method_missing(sym, *args, &block) @original_self ? @original_self.send(sym, *args, &block) : super end
push(input)
click to toggle source
Insert something into the pipeline to be processed @param input [Object] The original input data to enter the pipeline. This may be mutated by each pipe in the pipeline. @return [PipeStatus] the pipe status, containing both the value and a status hash.
# File lib/pyper/pipeline.rb, line 42 def push(input) status = {} value = pipes.inject(input) do |attributes, p| if p.respond_to?(:call) p.call(attributes, status) else p.pipe(attributes, status) end end PipeStatus.new(value, status) end
respond_to_missing?(sym, include_all = false)
click to toggle source
Calls superclass method
# File lib/pyper/pipeline.rb, line 59 def respond_to_missing?(sym, include_all = false) @original_self ? @original_self.respond_to?(sym, include_all) : super end