class Yarrow::Process::Workflow
Public Class Methods
new(input)
click to toggle source
# File lib/yarrow/process/workflow.rb, line 4 def initialize(input) @input = input @processors = [] end
Public Instance Methods
connect(processor)
click to toggle source
# File lib/yarrow/process/workflow.rb, line 9 def connect(processor) provided_input = if @processors.any? @processors.last.provides else @input.class.to_s end if processor.can_accept?(provided_input) @processors << processor else raise ArgumentError.new( "`#{processor.class}` accepts `#{processor.accepts}` but was connected to `#{provided_input}`" ) end end
process(&block)
click to toggle source
# File lib/yarrow/process/workflow.rb, line 25 def process(&block) result = @input @processors.each do |processor| result = processor.process(result) end block.call(result) end