Sha256: 2df80af488fbafb202bb34fc91e67db63a7bcd620b103402ed387ddaab0fa67d

Contents?: true

Size: 564 Bytes

Versions: 4

Compression:

Stored size: 564 Bytes

Contents

module NxtPipeline
  class Step
    def initialize(constructor, **opts)
      define_attr_readers(opts)
      @opts = opts
      @constructor = constructor
    end

    attr_accessor :constructor

    def execute(arg)
      constructor.call(self, arg)
      # instance_exec(arg, &constructor)
    end

    def to_s
      "#{self.class} opts => #{opts}"
    end

    private

    attr_reader :opts

    def define_attr_readers(opts)
      opts.each do |key, value|
        define_singleton_method key.to_s do
          value
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nxt_pipeline-0.2.4 lib/nxt_pipeline/step.rb
nxt_pipeline-0.2.3 lib/nxt_pipeline/step.rb
nxt_pipeline-0.2.2 lib/nxt_pipeline/step.rb
nxt_pipeline-0.2.1 lib/nxt_pipeline/step.rb