Sha256: 92ca6e053e063fd1fff947756bccb4f4d3ad822c9c502c86720a7226c3ef1be8

Contents?: true

Size: 776 Bytes

Versions: 1

Compression:

Stored size: 776 Bytes

Contents

require 'delegate'
require 'transflow'

require 'rodakase/transaction/result'
require 'rodakase/transaction/matcher'

module Rodakase
  module Transaction
    class Flow
      extend Forwardable

      def_delegator :@transaction, :subscribe

      attr_reader :transaction

      def initialize(transaction)
        @transaction = transaction
      end

      def call(*args, &block)
        result = transaction.call(*args)

        if block
          yield(Matcher.new(result))
        else
          result
        end
      end
    end

    class Composer
      attr_reader :container

      def initialize(container)
        @container = container
      end

      def define(&block)
        Flow.new(Transflow(container: container, &block))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rodakase-0.0.1 lib/rodakase/transaction.rb