Sha256: 137caefc3fe0b28cc57ec919a74ca9dd60e90b19b761ec29cbdcc543fbff7ee4
Contents?: true
Size: 950 Bytes
Versions: 1
Compression:
Stored size: 950 Bytes
Contents
require 'transflow/publisher' module Transflow class StepDSL attr_reader :name attr_reader :options attr_reader :handler attr_reader :container attr_reader :steps attr_reader :publish attr_reader :monadic def initialize(name, options, container, steps, &block) @name = name @options = options @handler = options.fetch(:with, name) @publish = options.fetch(:publish, false) @monadic = options.fetch(:monadic, false) @container = container @steps = steps instance_exec(&block) if block end def step(name, new_options = {}, &block) self.class.new(name, options.merge(new_options), container, steps, &block).call end def call operation = container[handler] step = if publish Publisher[name, operation, monadic: monadic] else operation end steps[name] = step end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
transflow-0.3.0 | lib/transflow/step_dsl.rb |