Sha256: 49d076f31d794846843f560b56f8b3b7f9dfb0594763f3a31036d763e5f48e11

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 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

        # Is contract check and transformation disabled
        attr_reader :skip_output_contract_flag

        SingletonVarsSetup = Flows::Util::InheritableSingletonVars::DupStrategy.make_module(
          '@success_contracts' => {},
          '@failure_contracts' => {},
          '@skip_output_contract_flag' => false
        )

        include SingletonVarsSetup

        # 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

        # Disables contract check and transformation for current class and children.
        #
        # @param enable [Boolean] if true - contracts are disabled
        def skip_output_contract(enable: true)
          @skip_output_contract_flag = enable
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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