anchor
Version:
High-level validation library for Node.js (used in Waterline)
42 lines (31 loc) • 864 B
JavaScript
/**
* Module dependencies
*/
var _ = require('@sailshq/lodash');
var rules = require('./rules');
/**
* Match a miscellaneous rule
* Returns an empty list on success,
* or a list of errors if things go wrong
*/
module.exports = function matchRule (data, ruleName, args) {
var self = this;
// if args is an array we need to make it a nested array
if (Array.isArray(args) && ruleName !== 'len') {
args = [args];
}
// Ensure args is a list, then prepend it with data
if (!_.isArray(args)) {
args = [args];
}
// push data on to front
args.unshift(data);
// Lookup rule and determine outcome
var rule = rules[ruleName];
if (!rule) {
throw new Error('Unknown rule: ' + ruleName);
}
var errorMessage = rule.apply(self, args);
if (errorMessage) { return [{rule: ruleName, message: errorMessage}]; }
return [];
};