Pular para o conteúdo

Derive Validation Rules

Nesta página

typeinfo works on schema declarations too: each field carries .optional, .has_default, and .default metadata. A comptime loop can fold these into a human-readable rule list — the same descriptor that could drive custom validators or error-message generators downstream.

Iterate typeinfo(SignupForm).fields to generate a rule list showing each field's type, whether it is required or optional, and its default value when present.

06-validation.zolo
Playground
// Use case 3 — VALIDATION / PARSING

//

// A `schema` already validates at parse time; here we use `typeinfo` to derive

// a human-readable list of the rules a validator enforces — required vs.

// optional, the declared type, and the default value when present. The same

// descriptor could drive a custom validator or generate error messages.


schema SignupForm {
  email: str,
  age: int = 18,
  nickname: str?,
}

let rules = comptime {
  var s = ""
  for f in typeinfo(SignupForm).fields {
    s = s + "- " + f.name + " (" + f.type.name + "): "
    if f.optional { s = s + "optional" } else { s = s + "required" }
    if f.has_default { s = s + ", default=" + f.default }
    s = s + "\n"
  }
  s
}

print(rules)
// expected:

// - email (str): required

// - age (int): required, default=18

// - nickname (str?): optional

Buscar no Zolo

9 resultados

en