@zoranwong/acc-engine.js
Version:
A javascript framework to accelerate your applicatin developement
49 lines (46 loc) • 1.51 kB
JavaScript
import {each, isString, map} from 'underscore';
export default class Validator {
app;
validateRules = {};
errors = {};
constructor (app, validateRules) {
this.app = app;
this.validateRules = validateRules;
}
validate (request) {
let rules = request.rules();
let messages = request.messages();
let params = request.data;
let passed = true;
each(rules, (rule, attribute) => {
let value = params[attribute];
let attributeValidateRules = this.parseRule(rule);
each(attributeValidateRules, (ruleValidator, rule) => {
// console.log(attribute, rule)
if(!ruleValidator.validate(value, attribute, messages, rules, params)) {
passed = false;
this.errors[attribute + '.' + rule] = ruleValidator.message;
}
});
});
return passed;
}
parseRule (rule) {
let rules = rule;
if (isString(rule)) {
rules = rule.split('|');
}
let validators = {};
each(rules, (value) => {
let key, parameters;
if (isString(value)) {
[key, parameters] = value.split(':');
} else {
key = value['rule'];
parameters = value['values'];
}
validators[key] = new this.validateRules[key](key, parameters);
});
return validators;
}
}