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

Version Path
sorbet-schema-0.5.1 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.4.2 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.4.1 lib/typed/validations/field_type_validator.rb
sorbet-schema-0.4.0 lib/typed/validations/field_type_validator.rb