module Flows::Plugin::OutputContract::Wrapper::Util
Helper methods for {Wrapper} are extracted to this module as singleton methods to not pollute user classes.
@api private
Public Class Methods
contract_for(klass, result)
click to toggle source
# File lib/flows/plugin/output_contract/wrapper.rb, line 42 def contract_for(klass, result) raise ResultTypeError.new(klass, result) unless result.is_a?(Flows::Result) status = result.status contracts = result.ok? ? klass.success_contracts : klass.failure_contracts contracts[status] || raise(StatusError.new(klass, result, contracts.keys)) end
transform_result(klass, result)
click to toggle source
# File lib/flows/plugin/output_contract/wrapper.rb, line 31 def transform_result(klass, result) contract = Util.contract_for(klass, result) data = result.send(:data) transformed_result = contract.transform(data) raise ContractError.new(klass, result, transformed_result.error) if transformed_result.err? result.send(:'data=', transformed_result.unwrap) end