constrainSchemaObject method Null safety

void constrainSchemaObject(
  1. APIDocumentContext context,
  2. APISchemaObject object
)

Adds constraints to an APISchemaObject imposed by this validator.

Used during documentation process. When creating custom validator subclasses, override this method to modify object for any constraints the validator imposes.

Implementation

void constrainSchemaObject(
  APIDocumentContext context,
  APISchemaObject object,
) {
  switch (type!) {
    case ValidateType.regex:
      {
        object.pattern = _value as String?;
      }
      break;
    case ValidateType.comparison:
      {
        if (_greaterThan is num) {
          object.exclusiveMinimum = true;
          object.minimum = _greaterThan as num?;
        } else if (_greaterThanEqualTo is num) {
          object.exclusiveMinimum = false;
          object.minimum = _greaterThanEqualTo as num?;
        }

        if (_lessThan is num) {
          object.exclusiveMaximum = true;
          object.maximum = _lessThan as num?;
        } else if (_lessThanEqualTo is num) {
          object.exclusiveMaximum = false;
          object.maximum = _lessThanEqualTo as num?;
        }
      }
      break;
    case ValidateType.length:
      {
        if (_equalTo != null) {
          object.maxLength = _equalTo as int?;
          object.minLength = _equalTo as int?;
        } else {
          if (_greaterThan is int) {
            object.minLength = 1 + (_greaterThan! as int);
          } else if (_greaterThanEqualTo is int) {
            object.minLength = _greaterThanEqualTo as int?;
          }

          if (_lessThan is int) {
            object.maxLength = (-1) + (_lessThan! as int);
          } else if (_lessThanEqualTo != null) {
            object.maximum = _lessThanEqualTo as int?;
          }
        }
      }
      break;
    case ValidateType.present:
      {}
      break;
    case ValidateType.absent:
      {}
      break;
    case ValidateType.oneOf:
      {
        object.enumerated = _value as List<dynamic>?;
      }
      break;
  }
}