Comparing version 0.0.3 to 0.0.4
0.0.4 / 2013-07-01 | ||
================== | ||
* support isArray and isObject | ||
0.0.3 / 2013-06-26 | ||
@@ -3,0 +8,0 @@ ================== |
@@ -35,5 +35,19 @@ /*! | ||
function checkType(value, valueType, expectType) { | ||
exports.Array = function (value) { | ||
if (!Array.isArray(value)) { | ||
return 'should be an array'; | ||
} | ||
}; | ||
exports.Object = function (value, valueType) { | ||
if (valueType !== 'object' || Array.isArray(value)) { | ||
return 'should be an object'; | ||
} | ||
}; | ||
function checkType(value, valueType, expectType, allowEmpty) { | ||
if (valueType !== expectType) { | ||
return 'expect ' + expectType + ', but got ' + valueType; | ||
} else if (!allowEmpty && expectType === 'string' && value.trim().length === 0) { | ||
return 'should not be empty ' + expectType; | ||
} | ||
@@ -64,2 +78,8 @@ } | ||
* key6: { required: false, type: parameter.Date }, // optional value, if set, must be a date string | ||
* key7: { isArray: true, resourceName: 'User', rules: { name: 'string', age: 'number' } } | ||
* // key7: parameter.Array, | ||
* // key7: { type: parameter.Array, resource: 'User', rules: { name: 'string', age: 'number' } } | ||
* key8: { isObject: true, resourceName: 'User', rules: { name: 'string', age: 'number' } } | ||
* // key8: parameter.Object, | ||
* // key8: { type: parameter.Object, resource: 'User', rules: { name: 'string', age: 'number' } } | ||
* } | ||
@@ -105,3 +125,6 @@ * rules's keys must exists on `data`. If `data.key1` not exists, will got `missing_field` error. | ||
var expectType = rule.__expectType; | ||
var empty = rule.__empty || false; | ||
var checkFunction = rule.__checkFunction; | ||
var childRules = rule.rules; | ||
var childResourceName = rule.resource; | ||
var errorMsg = null; | ||
@@ -111,6 +134,6 @@ | ||
var ruleType = typeof rule; | ||
if (ruleType === 'string') { | ||
// key: 'number' | ||
expectType = rule; | ||
empty = false; | ||
checkFunction = checkType; | ||
@@ -121,2 +144,3 @@ } else if (ruleType === 'function') { | ||
} else { | ||
empty = rule.empty; | ||
if (rule.type) { | ||
@@ -141,2 +165,8 @@ ruleType = typeof rule.type; | ||
checkFunction = exports.DateTime; | ||
} else if (rule.isArray) { | ||
// key: {isArray: true} | ||
checkFunction = exports.Array; | ||
} else if (rule.isObject) { | ||
// key: {isObject: true} | ||
checkFunction = exports.Object; | ||
} | ||
@@ -153,7 +183,10 @@ } | ||
__expectType: expectType, | ||
__oldRule: rule | ||
__oldRule: rule, | ||
__empty: empty, | ||
__childRules: childRules, | ||
__childResourceName: childResourceName, | ||
}; | ||
} | ||
errorMsg = checkFunction(value, valueType, expectType); | ||
errorMsg = checkFunction(value, valueType, expectType, empty); | ||
if (errorMsg) { | ||
@@ -168,2 +201,23 @@ errors.push({ | ||
if (!errors.length) { | ||
if (childRules) { | ||
var errs; | ||
if (checkFunction === exports.Array) { | ||
for (var i = 0; i < value.length; i++) { | ||
var item = value[i]; | ||
errs = exports.verify(item, childRules, childResourceName); | ||
if (errs) { | ||
errors = errors.concat(errs); | ||
break; | ||
} | ||
} | ||
} else if (checkFunction === exports.Object) { | ||
errs = exports.verify(value, childRules, childResourceName); | ||
if (errs) { | ||
errors = errors.concat(errs); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
@@ -170,0 +224,0 @@ |
{ | ||
"name": "parameter", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "A parameter verify tools.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -33,2 +33,8 @@ parameter [![Build Status](https://secure.travis-ci.org/fengmk2/parameter.png)](http://travis-ci.org/fengmk2/parameter) [![Coverage Status](https://coveralls.io/repos/fengmk2/parameter/badge.png)](https://coveralls.io/r/fengmk2/parameter) | ||
* key6: { required: false, type: parameter.Date }, // optional value, if set, must be a date string | ||
* key7: { isArray: true, resourceName: 'User', rules: { name: 'string', age: 'number' } } | ||
* // key7: parameter.Array, | ||
* // key7: { type: parameter.Array, resource: 'User', rules: { name: 'string', age: 'number' } } | ||
* key8: { isObject: true, resourceName: 'User', rules: { name: 'string', age: 'number' } } | ||
* // key8: parameter.Object, | ||
* // key8: { type: parameter.Object, resource: 'User', rules: { name: 'string', age: 'number' } } | ||
* } | ||
@@ -35,0 +41,0 @@ * rules's keys must exists on `data`. If `data.key1` not exists, will got `missing_field` error. |
16707
279
153