/* * Hunt - A data validation for DLang based on hunt library. * * Copyright (C) 2015-2019, HuntLabs * * Website: https://www.huntlabs.net * * Licensed under the Apache-2.0 License. * */ module hunt.validation.DefaultConstraintValidatorContext; import hunt.validation.ConstraintValidatorContext; import hunt.validation.Validator; import std.json; import std.format; class DefaultConstraintValidatorContext : ConstraintValidatorContext { private Validator[] _validators; private bool _isValid = true; override string toString() { return json().toString; } override string[string] messages() { string[string] msg; foreach (v; _validators) { if (!v.isValid) { msg[v.getPropertyName] = v.getMessage; } } return msg; } JSONValue json() { return JSONValue(messages()); } override ConstraintValidatorContext append(Validator v) { _validators ~= v; if (!v.isValid) _isValid = false; return this; } override bool isValid() { return _isValid; } }