class Plumb::Pipeline
def step(callable = nil, &block)
def step(callable = nil, &block) callable ||= block unless is_a_step?(callable) raise ArgumentError, "#step expects an interface #call(Result) Result, but got #{callable.inspect}" end callable = prepare_step(callable) callable = @around_blocks.reverse.reduce(callable) { |cl, bl| AroundStep.new(cl, bl) } if @around_blocks.any? @type >>= callable self end