Julia field-level input validation collector
Julia
function validate(input, rules)
errors = Dict{String,String}()
for (field, checks) in rules
value = get(input, field, missing)
for (pred, message) in checks
pred(value) && continue
errors[field] = message
break
end
end
return errors
end
rules = Dict(
"name" => [(v -> v isa AbstractString && !isempty(strip(v)), "name is required")],
"age" => [(v -> v isa Integer, "age must be an integer"), (v -> 0 <= v <= 150, "age must be 0-150")],
)
errs = validate(Dict("name" => " ", "age" => 200), rules)
println(join(["$k: $v" for (k, v) in errs], "; "))