Sha256: 4dba7704fa46c4f1e442265be10f13fb693340ac9afc6ae6665ef7cd3ecd1ed8
Contents?: true
Size: 762 Bytes
Versions: 18
Compression:
Stored size: 762 Bytes
Contents
# typed: strict module Typed module Validations class ValidationResults < T::Struct extend T::Sig const :results, T::Array[ValidationResult] sig { returns(Result[ValidatedParams, ValidationError]) } def combine failing_results = results.select(&:failure?) case failing_results.length when 0 Success.new( results.each_with_object({}) do |result, validated_params| validated_params[result.payload.name] = result.payload.value end ) when 1 Failure.new(T.must(failing_results.first).error) else Failure.new(MultipleValidationError.new(errors: failing_results.map(&:error))) end end end end end
Version data entries
18 entries across 18 versions & 1 rubygems