Sha256: 46c6adc705cad67a80744956354f013487d972f1b55d46a2a05b2a1c159f4ab0

Contents?: true

Size: 761 Bytes

Versions: 1

Compression:

Stored size: 761 Bytes

Contents

require 'transflow/publisher'

module Transflow
  class StepDSL
    attr_reader :name

    attr_reader :handler

    attr_reader :container

    attr_reader :steps

    attr_reader :publish

    def initialize(name, options, container, steps, &block)
      @name = name
      @handler = options.fetch(:with)
      @publish = options.fetch(:publish, false)
      @container = container
      @steps = steps
      instance_exec(&block) if block
    end

    def step(*args, &block)
      self.class.new(*args, container, steps, &block).call
    end

    def call
      operation = container[handler]

      step =
        if publish
          Publisher.new(name, operation)
        else
          operation
        end

      steps[name] = step
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
transflow-0.0.2 lib/transflow/step_dsl.rb