Sha256: ef3534429027294b74c7e7c8514391edb19a9655a6a6ee26d9a33ac3989d950e

Contents?: true

Size: 630 Bytes

Versions: 3

Compression:

Stored size: 630 Bytes

Contents

# encoding: UTF-8

module Bunch
  class Pipeline
    ENVIRONMENTS = {}

    def self.define(environment, &block)
      ENVIRONMENTS[environment.to_s] = block
    end

    def self.for_environment(config)
      environment = config.fetch(:environment)
      proc = ENVIRONMENTS[environment] ||
        raise("No pipeline defined for #{environment}!")
      new(proc.call(config))
    end

    def initialize(processors)
      @processors = processors
    end

    def process(input_tree)
      tree = input_tree
      @processors.each do |processor|
        tree = processor.new(tree).result
      end
      tree
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bunch-1.0.0pre3 lib/bunch/pipeline.rb
bunch-1.0.0pre2 lib/bunch/pipeline.rb
bunch-1.0.0pre1 lib/bunch/pipeline.rb