devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
63 lines (47 loc) • 1.77 kB
JavaScript
var extend = require("./extend").extend,
consoleUtils = require("./console"),
stringUtils = require("./string"),
version = require("../version");
var ERROR_URL = "http://js.devexpress.com/error/" + version.split(".").slice(0, 2).join("_") + "/";
module.exports = function (baseErrors, errors) {
var exports = {
ERROR_MESSAGES: extend(errors, baseErrors),
Error: function Error() {
return makeError([].slice.call(arguments));
},
log: function log(id) {
var method = "log";
if (/^E\d+$/.test(id)) {
method = "error";
} else if (/^W\d+$/.test(id)) {
method = "warn";
}
consoleUtils.logger[method](method === "log" ? id : combineMessage([].slice.call(arguments)));
}
};
var combineMessage = function combineMessage(args) {
var id = args[0];
args = args.slice(1);
return formatMessage(id, formatDetails(id, args));
};
var formatDetails = function formatDetails(id, args) {
args = [exports.ERROR_MESSAGES[id]].concat(args);
return stringUtils.format.apply(this, args).replace(/\.*\s*?$/, '');
};
var formatMessage = function formatMessage(id, details) {
return stringUtils.format.apply(this, ["{0} - {1}. See:\n{2}", id, details, ERROR_URL + id]);
};
var makeError = function makeError(args) {
var id, details, message;
id = args[0];
args = args.slice(1);
details = formatDetails(id, args);
message = formatMessage(id, details);
return extend(new Error(message), {
__id: id,
__details: details
});
};
return exports;
};
;