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
// Structure types
//////////////////////////////////////////////////////////////////////////////////
/// Returns a Validator that checks a value against a Map eskema that declares a validator for each key.
///
/// Example:
/// ```dart
/// final mapField = all([
/// eskema({
/// 'name': all([isType<String>()]),
/// 'vat': or(
/// isTypeNull(),
/// isGte(0),
/// ),
/// 'age': all([
/// isType<int>(),
/// isGte(0),
/// ]),
/// }),
/// ]);
/// ```
IEskValidator eskema(Map<String, IEskValidator> eskema) {
return EskValidator((value) {
if (value is! Map) return EskResult.invalid('Map', value);
for (final key in eskema.keys) {
final field = eskema[key];
final result = field!.validate(value[key]);
if (result.isNotValid) {
return EskResult.invalid('$key -> ${result.error}', result.value);
}
}
return EskResult.valid(value);
});
}