signet-checker
Version:
Type checker for signet type system
42 lines (32 loc) • 1.02 kB
JavaScript
var signetChecker = (function () {
'use strict';
return function (registrar) {
function checkType(typeDef) {
try {
return typeof registrar.get(typeDef.type) === 'function';
} catch (e) {
return false;
}
}
function concat(resultList, list) {
return resultList.concat(list);
}
function not(predicate) {
return function (value) {
return !predicate(value);
}
}
function checkSignature(ast) {
var failedTypes = ast.reduce(concat, [])
.filter(not(checkType));
return failedTypes.length > 0 ? failedTypes : null;
}
return {
checkSignature: checkSignature,
checkType: checkType
};
}
})();
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = signetChecker;
}