eskema function
Returns a Validator that checks a value against a Map eskema that declares a validator for each key.
Example:
final mapField = all([
eskema({
'name': all([isType<String>()]),
'vat': or(
isTypeNull(),
isGte(0),
),
'age': all([
isType<int>(),
isGte(0),
]),
}),
]);
Implementation
Validator eskema(Map<String, Validator> eskema) {
return (value) {
if (value is! Map) return Result.invalid('Map', value);
for (final key in eskema.keys) {
final field = eskema[key] as Validator;
final result = field.call(value[key]);
if (result.isNotValid) {
return Result.invalid('$key -> ${result.expected}', result.value);
}
}
return Result.valid;
};
}