sdmx-rest
Version:
SDMX REST API client for JavaScript
118 lines (103 loc) • 3.21 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var ReportingPeriodType, createErrorMessage, validEnum, validIso8601, validMultipleEnum, validPattern, validPeriod,
indexOf = [].indexOf;
({ReportingPeriodType} = require('./sdmx-patterns'));
validEnum = function(input, list, name, errors) {
var found, i, j, len, ref, v;
found = false;
ref = Object.values(list);
for (j = 0, len = ref.length; j < len; j++) {
v = ref[j];
if (v === input) {
found = true;
}
}
if (!found) {
errors.push(`${input} is not in the list of supported ${name} (${(function() {
var k, len1, ref1, results;
ref1 = Object.values(list);
results = [];
for (k = 0, len1 = ref1.length; k < len1; k++) {
i = ref1[k];
results.push(i);
}
return results;
})()})`);
}
return found;
};
validMultipleEnum = function(input, list, name, errors) {
var found, output, r;
found = false;
if (input && input.indexOf("\+") > -1) {
output = (function() {
var j, len, ref, results;
ref = input.split("+");
results = [];
for (j = 0, len = ref.length; j < len; j++) {
r = ref[j];
results.push(validEnum(r, list, name, errors));
}
return results;
})();
found = indexOf.call(output, false) < 0;
} else if (input && input.indexOf(",") > -1) {
output = (function() {
var j, len, ref, results;
ref = input.split(",");
results = [];
for (j = 0, len = ref.length; j < len; j++) {
r = ref[j];
results.push(validEnum(r, list, name, errors));
}
return results;
})();
found = indexOf.call(output, false) < 0;
} else {
found = validEnum(input, list, name, errors);
}
return found;
};
validPattern = function(input, regex, name, errors) {
var valid;
valid = input && input.match(regex);
if (!valid) {
errors.push(`${input} is not compliant with the pattern defined for ${name} (${regex})`);
}
return valid;
};
createErrorMessage = function(errors, type) {
var error, j, len, msg;
msg = `Not a valid ${type}: \n`;
for (j = 0, len = errors.length; j < len; j++) {
error = errors[j];
msg += `- ${error} \n`;
}
return msg;
};
validIso8601 = function(input, name, errors) {
var valid;
valid = true;
if (isNaN(Date.parse(input))) {
errors.push(`${name} must be a valid ISO8601 date`);
valid = false;
}
return valid;
};
validPeriod = function(input, name, errors) {
var valid;
valid = validIso8601(input, name, errors) || validPattern(input, ReportingPeriodType, name, errors);
if (!valid) {
errors.push(`${name} must be a valid SDMX period or a valid ISO8601 date`);
valid = false;
}
return valid;
};
exports.isValidEnum = validEnum;
exports.isValidMultipleEnum = validMultipleEnum;
exports.isValidPattern = validPattern;
exports.createErrorMessage = createErrorMessage;
exports.isValidDate = validIso8601;
exports.isValidPeriod = validPeriod;
}).call(this);