Sha256: caedadbc8532ef0cf7684e3dced21c2d785b2e831c4fbcfc54739ea7121db332

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Flows
  module Plugin
    module OutputContract
      # DSL for OutputContract plugin.
      module DSL
        # Hash of contracts for successful results.
        attr_reader :success_contracts

        # Hash of contracts for failure results.
        attr_reader :failure_contracts

        Flows::Util::InheritableSingletonVars::DupStrategy.call(
          self,
          '@success_contracts' => {},
          '@failure_contracts' => {}
        )

        # Defines a contract for a successful result with specific status.
        #
        # @param status [Symbol] Corresponding result status.
        # @param contract_block [Proc] This block will be passed to {Contract.make} to get a contract.
        def success_with(status, &contract_block)
          success_contracts[status] = Flows::Contract.make(&contract_block)
        end

        # Defines a contract for a failure result with specific status.
        #
        # @param status [Symbol] Corresponding result status.
        # @param contract_block [Proc] This block will be passed to {Contract.make} to get a contract.
        def failure_with(status, &contract_block)
          failure_contracts[status] = Flows::Contract.make(&contract_block)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flows-0.4.0 lib/flows/plugin/output_contract/dsl.rb