Sha256: 7d730450a8b48f25e59998e70b38b4708c606527945c8c46fbddc508ad643203
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true class BCDD::Result class Context::Error < BCDD::Result::Error InvalidExposure = ::Class.new(self) end class Context::Success < Context include ::BCDD::Result::Success::Methods FetchValues = ->(acc_values, keys) do fetched_values = acc_values.fetch_values(*keys) keys.zip(fetched_values).to_h rescue ::KeyError => e message = "#{e.message}. Available to expose: #{acc_values.keys.map(&:inspect).join(', ')}" raise Context::Error::InvalidExposure, message end def and_expose(type, keys, terminal: true) unless keys.is_a?(::Array) && !keys.empty? && keys.all?(::Symbol) raise ::ArgumentError, 'keys must be an Array of Symbols' end Transitions.tracking.reset_and_then! acc_values = acc.merge(value) value_to_expose = FetchValues.call(acc_values, keys) expectations = type_checker.expectations self.class.new(type: type, value: value_to_expose, source: source, terminal: terminal, expectations: expectations) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bcdd-result-0.13.0 | lib/bcdd/result/context/success.rb |