all files / src/ validate.js

100% Statements 19/19
92.86% Branches 13/14
100% Functions 7/7
100% Lines 18/18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40          13×                                  
class Validate {
    constructor() {}
    validator(data, rules) {
        let errors = {}
        rules.forEach((rule) => {
            errors[rule.key] = {}
            let value = data[rule.key]
            if (rule.required) {
                errors[rule.key].required = this.required(value)
            }
 
            let keys = Object.keys(rule).filter(item => item !== 'key' && item !== 'required')
            keys.forEach(validatorKey => {
                if (this[validatorKey]) {
                    errors[rule.key][validatorKey] = this[validatorKey](value, rule[validatorKey])
                } else {
                    throw `error:没有${validatorKey}这个属性`
                }
 
            })
 
        })
        return errors
    }
    required(value) {
        Eif (!value && value !== 0) {
            return "必填"
        }
    }
    pattern(value, pattern) {
        if (pattern === 'email') {
            pattern = /^.+@.+$/
        }
        if (!pattern.test(value)) {
            return "格式不正确"
        }
    }
}
export default Validate