class PhaseShift::Builder

Create a pipeline by building up stages

Attributes

stages[R]

Public Class Methods

new(default_stage = nil, &block) click to toggle source
# File lib/phase_shift/builder.rb, line 12
def initialize(default_stage = nil, &block)
  @default_stage = default_stage || proc { [] }
  @stages = []
  instance_eval(&block) if block_given?
end
parse_file(config, file = '(phase_shift)') click to toggle source
# File lib/phase_shift/builder.rb, line 6
def self.parse_file(config, file = '(phase_shift)')
  builder_script = ::File.read(config)
  code = "PhaseShift::Builder.new {\n" + builder_script + "\n}.pipeline"
  eval code, TOPLEVEL_BINDING, file, 0
end

Public Instance Methods

pipeline() click to toggle source
# File lib/phase_shift/builder.rb, line 22
def pipeline
  stages.inject(@default_stage) { |a, e| e[a] }
end
run() click to toggle source
# File lib/phase_shift/builder.rb, line 26
def run
  pipeline.call
end
use(stage, *args) click to toggle source
# File lib/phase_shift/builder.rb, line 18
def use(stage, *args)
  @stages << proc { |pipeline| stage.new(pipeline, *args) }
end