42 lines
1.2 KiB
Plaintext
42 lines
1.2 KiB
Plaintext
import $ from 'jquery';
|
|
import ParsleyUtils from '../utils';
|
|
import ParsleyValidator from '../validator';
|
|
|
|
|
|
var ConstraintFactory = function (parsleyField, name, requirements, priority, isDomConstraint) {
|
|
if (!/ParsleyField/.test(parsleyField.__class__))
|
|
throw new Error('ParsleyField or ParsleyFieldMultiple instance expected');
|
|
|
|
var validatorSpec = window.Parsley._validatorRegistry.validators[name];
|
|
var validator = new ParsleyValidator(validatorSpec);
|
|
|
|
$.extend(this, {
|
|
validator: validator,
|
|
name: name,
|
|
requirements: requirements,
|
|
priority: priority || parsleyField.options[name + 'Priority'] || validator.priority,
|
|
isDomConstraint: true === isDomConstraint
|
|
});
|
|
this._parseRequirements(parsleyField.options);
|
|
};
|
|
|
|
var capitalize = function(str) {
|
|
var cap = str[0].toUpperCase();
|
|
return cap + str.slice(1);
|
|
};
|
|
|
|
ConstraintFactory.prototype = {
|
|
validate: function(value, instance) {
|
|
return this.validator.validate(value, ...this.requirementList, instance);
|
|
},
|
|
|
|
_parseRequirements: function(options) {
|
|
this.requirementList = this.validator.parseRequirements(this.requirements, key => {
|
|
return options[this.name + capitalize(key)];
|
|
});
|
|
}
|
|
};
|
|
|
|
export default ConstraintFactory;
|
|
|