parry
v2.1.0
Published
A structural Node.js validation module
Downloads
2
Readme
parry
A structural Node.js validation module.
This module will protect your application from invalid inputs!
Installation
npm install parry
Or, you can use in browser through the browserify.
Usage
var Field = require('parry').Field;
var Form = require('parry').Form;
var UsernameField = Field.extend()
.type('matches', /[-_a-z0-9]/i)
.type('isLength', [4, 16])
;
var PasswordField = Field.extend()
.type('isAlphanumeric')
.type('isLength', [8, 16])
;
var GenderField = Field.extend({ passIfEmpty: true })
.type('isIn', ['male', 'female'])
;
var UserForm = Form.extend()
.field('username', UsernameField)
.field('password', PasswordField)
.field('gender', GenderField)
;
// Validate inputs
var inputs = {
username: 'my-username@',
password: 'abcd123',
gender: 'man'
};
var userForm = new UserForm(inputs);
userForm.validate(function(err, validationResult) {
console.log(validationResult);
// -> {
// isValid: false,
// errors: {
// username: [ 'Not matched' ],
// password: [ 'String is not in range' ],
// gender: [ 'Unexpected value' ]
// },
// reporter: { ErrorReporter instance }
// }
});
Field
Field.type
You can set the following typical validations.
- validator.js validators
- And own extensions
var SubField = Field.extend();
.type('isEmail');
.type('isLength', [4, 64])
;
Field.specify
Use it, in the case of complex validation.
var SubField = Field.extend()
.specify(function(input, callback) {
if (input === 'good') {
callback(null, { isValid: true });
} else if (input === 'bad') {
callback(null, { isValid: false, errorMessages: ['It is a bad input'] });
} else {
// Error message is 'It is a not good input'
callback(null, { isValid: false });
}
}, 'It is a not good input')
;
Field.passIfEmpty
Pass validation if value is empty.
Default: false
var SubField = Field.extend({ passIfEmpty: true });
Field.shouldValidateAll
Validate all validators already even if error occurs.
Default: false
var SubField = Field.extend({ shouldValidateAll: true });
Field.extend
Create sub class.
var SubField = Field.extend({ passIfEmpty: true, shouldValidateAll: true });
Field.prototype.validate
Validate with input.
field.validate('your input', function(err, { isValid, errorMessages }) {
});
Or, if you use promise:
field.validate('your input').then(..);
Form
Form.field
Set Field sub class with id.
Please see Usage.
Form.extend
Create sub class.
var SubForm = Field.extend({ shouldValidateAll: true });
Form.shouldValidateAll
Validate all fields already even if error occurs
Default: true
var SubForm = Form.extend({ shouldValidateAll: true });
Form.prototype.input
Input a value.
form.input('email', '[email protected]');
Form.prototype.inputs
Input values.
form.inputs({
email: '[email protected]',
username: 'foo'
});
Or,
var form = new SubForm({
email: '[email protected]',
username: 'foo'
});
Form.prototype.validate
Validate fields with inputs.
Please see Usage.
Or, if you use promise:
form.validate().then(..);