Sha256: 5f78450392aaa359544f7934be82c93f807fafb53df741c1d2e6cfd33e40a006
Contents?: true
Size: 763 Bytes
Versions: 4
Compression:
Stored size: 763 Bytes
Contents
# typed: strict module Typed module Validations class FieldTypeValidator extend T::Sig include FieldValidator sig { override.params(field: Field, value: Value).returns(ValidationResult) } def validate(field:, value:) if field.works_with?(value) Success.new(ValidatedValue.new(name: field.name, value: value)) elsif field.required? && value.nil? Failure.new(RequiredFieldError.new(field_name: field.name)) elsif field.optional? && value.nil? Success.new(ValidatedValue.new(name: field.name, value: value)) else Failure.new(TypeMismatchError.new(field_name: field.name, field_type: field.type, given_type: value.class)) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems