Sha256: 64b2d230affda06cd8827781316e4a527c8954b865b97eb20d8b33924a47e7e2

Contents?: true

Size: 898 Bytes

Versions: 8

Compression:

Stored size: 898 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:))
        elsif field.required? && value.nil?
          Failure.new(RequiredFieldError.new(field_name: field.name))
        elsif field.optional? && value.nil?
          if field.default.nil?
            Success.new(ValidatedValue.new(name: field.name, value:))
          else
            Success.new(ValidatedValue.new(name: field.name, value: field.default))
          end
        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

8 entries across 8 versions & 1 rubygems

Version Path
sorbet-schema-0.9.2 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.9.1 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.9.0 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.8.0 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.7.2 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.7.1 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.7.0 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.6.0 lib/typed/validations/field_type_validator.rb