parameter-interface
v0.0.1
Published
A parameter verify tools.
Downloads
4
Readme
parameter
A parameter verify tools.
Install
$ npm install parameter --save
Usage
API
Parameter
Class
constructor([options])
- new ClassParameter
instanceoptions.translate
- translate function
validate(rule, value)
- validate thevalue
conforms 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 afunction
or 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
- ifrequired
is 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,value
must <=max
.min
- The minimum of the value,value
must >=min
.
integer
Alias to int
.
number
If type is number
, there has tow addition rules:
max
- The maximum of the value,value
must <=max
.min
- The minimum of the value,value
must >=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
- ARegExp
to 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,value
must 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.