///
module formsjs {
export class MinMaxValidator extends AbstractValidator {
/**
* @inheritDoc
* @override
*/
public validate(value:any, formData:any, validatableAttribute:ValidatableAttribute):Array> {
var promises:Array> = [];
var failureMessage:string;
if (validatableAttribute.min) {
if (typeof value === 'string' && value.length < validatableAttribute.min) {
failureMessage = validatableAttribute.minFailureMessage || this.strings.minStringLengthValidationFailed;
} else if (typeof value === 'number' && value < validatableAttribute.min) {
failureMessage = validatableAttribute.minFailureMessage || this.strings.minimumNumberValidationFailed;
} else {
failureMessage = null;
}
if (failureMessage) {
failureMessage = failureMessage
.replace('${value}', value)
.replace('${min}', validatableAttribute.min);
promises.push(Promise.reject(failureMessage));
}
}
if (validatableAttribute.max) {
if (typeof value === 'string' && value.length > validatableAttribute.max) {
failureMessage = validatableAttribute.maxFailureMessage || this.strings.maxStringLengthValidationFailed;
} else if (typeof value === 'number' && value > validatableAttribute.max) {
failureMessage = validatableAttribute.maxFailureMessage || this.strings.maximumNumberValidationFailed;
} else {
failureMessage = null;
}
if (failureMessage) {
failureMessage = failureMessage
.replace('${value}', value)
.replace('${max}', validatableAttribute.max);
promises.push(Promise.reject(failureMessage));
}
}
return promises;
}
}
}