Gazebo_simulation-Frontend/node_modules/skema/lib/parser.js
2020-12-21 10:29:31 -05:00

48 lines
963 B
JavaScript

'use strict';
var parser = exports;
var node_util = require('util');
var makeArray = require('make-array');
parser.parse = function(rule) {
var parsed = {};
// undefined -> []
parsed.validate = parser._parse_validators(rule.validate);
parsed.set = parser._parse_funcs(rule.set);
parsed.get = parser._parse_funcs(rule.get);
return parsed;
};
// See "schema design"
parser._parse_validators = function(validators) {
return makeArray(validators).map(function(validator) {
return parser._parse_validator(validator);
}).filter(Boolean);
};
parser._parse_validator = function(validator) {
if (typeof validator === 'function') {
return validator;
} else if (node_util.isRegExp(validator)) {
return function(v) {
return validator.test(v);
};
} else {
return false;
}
};
parser._parse_funcs = function(funcs) {
return makeArray(funcs).filter(function(func) {
return typeof func === 'function';
});
};