parameter-interface v0.0.1
parameter
A parameter verify tools.
Install
$ npm install parameter --saveUsage
API
Parameter Class
constructor([options])- new ClassParameterinstanceoptions.translate- translate function
validate(rule, value)- validate thevalueconforms torule. return an array of errors if break rule.addRule(type, check)- add custom rules.type- rule type, required and must be string type.check- check handler. can be afunctionor aRegExp.
Example
var Parameter = require('parameter');
var parameter = new Parameter({
translate: function() {
var args = Array.prototype.slice.call(arguments);
// Assume there have I18n.t method for convert language.
return I18n.t.apply(I18n, args);
}
});
var data = {
name: 'foo',
age: 24,
gender: 'male'
};
var rule = {
name: 'string',
age: 'int',
gender: ['male', 'female', 'unknown']
};
var errors = parameter.validate(rule, data);complex example
Rule
common rule
required- ifrequiredis set to false, this property can be empty. default totrue.type- The type of property, every type has it's own rule for the validate.
int
If type is int, there has tow addition rules:
max- The maximum of the value,valuemust <=max.min- The minimum of the value,valuemust >=min.
integer
Alias to int.
number
If type is number, there has tow addition rules:
max- The maximum of the value,valuemust <=max.min- The minimum of the value,valuemust >=min.
date
The date type want to match YYYY-MM-DD type date string.
dateTime
The dateTime type want to match YYYY-MM-DD HH:mm:ss type date string.
datetime
Alias to dateTime.
id
The id type want to match /^\d+$/ type date string.
boolean
Match boolean type value.
bool
Alias to boolean
string
If type is string, there has four addition rules:
allowEmpty(alias toempty) - allow empty string, default to false.format- ARegExpto check string's format.max- The maximum length of the string.min- The minimum length of the string.
The email type want to match RFC 5322 email address.
allowEmpty- allow empty string, default is false.
password
The password type want to match /^$/ type string.
compare- Compare field to check equal, default null, not check.max- The maximum length of the password.min- The minimum length of the password, default is 6.
url
The url type want to match web url.
enum
If type is enum, it requires an addition rule:
values- An array of data,valuemust be one on them. this rule is required.
object
If type is object, there has one addition rule:
rule- An object that validate the properties ot the object.
array
If type is array, there has four addition rule:
itemType- The type of every item in this array.rule- An object that validate the items of the array. Only work withitemType.max- The maximun length of the array.min- The minimun lenght of the array.
abbr
'int'=>{type: 'int', required: true}'integer'=>{type: 'integer', required: true}'number'=>{type: 'number', required: true}'date'=>{type: 'date', required: true}'dateTime'=>{type: 'dateTime', required: true}'id'=>{type: 'id', required: true}'boolean'=>{type: 'boolean', required: true}'bool'=>{type: 'bool', required: true}'string'=>{type: 'string', required: true, allowEmpty: false}'email'=>{type: 'email', required: true, allowEmpty: false, format: EMAIL_RE}'password'=>{type: 'password', required: true, allowEmpty: false, format: PASSWORD_RE, min: 6}'object'=>{type: 'object', required: true}'array'=>{type: 'array', required: true}[1, 2]=>{type: 'enum', values: [1, 2]}/\d+/=>{type: 'string', required: true, allowEmpty: false, format: /\d+/}
errors examples
code: missing_field
{
code: 'missing_field',
field: 'name',
message: 'required'
}code: invalid
{
code: 'invalid',
field: 'age',
message: 'should be an integer'
}Release process
We're using semantic-release to run npm publish after every commit on master.
See Default Commit Message Format for details.
License
8 years ago