annotate method

  1. @override
AnnotationResult annotate(
  1. bool cached,
  2. dynamic value,
  3. DogEngine engine
)
override

Annotates value with this validator returning an AnnotationResult. This mechanic is used to provide more information about the validation error.

Implementation

@override
AnnotationResult annotate(bool cached, value, DogEngine engine) {
  final isValid = validate(cached, value, engine);
  if (isValid) return AnnotationResult.empty();
  AnnotationMessage result;
  if (min != null && max == null) {
    result =
        AnnotationMessage(id: messageId, message: "Must be more than %min% (%minExclusive%).");
  } else if (min == null && max != null) {
    result =
        AnnotationMessage(id: messageId, message: "Must be less than %max% (%maxExclusive%)");
  } else {
    result = AnnotationMessage(
        id: messageId,
        message: "Must be between %min%(%minExclusive%) and %max%(%maxExclusive%).");
  }

  return AnnotationResult(messages: [result]).withVariables({
    "min": min.toString(),
    "max": max.toString(),
    "minExclusive": minExclusive ? "exclusive" : "inclusive",
    "maxExclusive": maxExclusive ? "exclusive" : "inclusive",
  });
}