twreporter-react
Version:
React-Redux site for The Reporter Foundation in Taiwan
111 lines (85 loc) • 3.33 kB
JavaScript
;
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _colorsSafe = require('colors/safe');
var _colorsSafe2 = _interopRequireDefault(_colorsSafe);
var Log = (function () {
function Log(preamble, options) {
_classCallCheck(this, Log);
this.options = options;
// is prepended to console output
this.preamble = '[' + preamble + ']';
}
// transforms arguments to text
// outputs info to the log
Log.prototype.info = function info() {
for (var _len = arguments.length, parameters = Array(_len), _key = 0; _key < _len; _key++) {
parameters[_key] = arguments[_key];
}
console.log(this.preamble, generate_log_message(parameters));
};
// outputs debugging info to the log
Log.prototype.debug = function debug() {
if (this.options.debug) {
for (var _len2 = arguments.length, parameters = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
parameters[_key2] = arguments[_key2];
}
console.log(this.preamble, '[debug]', generate_log_message(parameters));
}
};
// outputs minor debugging info to the log
Log.prototype.trace = function trace() {
if (this.options.debug) {
for (var _len3 = arguments.length, parameters = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
parameters[_key3] = arguments[_key3];
}
console.log(_colorsSafe2['default'].gray(this.preamble, '[trace]', generate_log_message(parameters)));
}
};
// outputs a warning to the log
Log.prototype.warning = function warning() {
for (var _len4 = arguments.length, parameters = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
parameters[_key4] = arguments[_key4];
}
console.log(_colorsSafe2['default'].yellow(this.preamble, '[warning]', generate_log_message(parameters)));
};
// outputs an error to the log
Log.prototype.error = function error() {
for (var _len5 = arguments.length, parameters = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
parameters[_key5] = arguments[_key5];
}
console.log(_colorsSafe2['default'].red(this.preamble, '[error]', generate_log_message(parameters)));
};
return Log;
})();
exports['default'] = Log;
function generate_log_message(parameters) {
// преобразовать все аргументы функции в текстовый вид
return parameters.map(function (argument) {
// преобразование объектов в строку
if (typeof argument === 'object') {
// для ошибок - распечатывать стек вызовов
if (argument instanceof Error) {
return argument.stack;
}
// для остальных объектов вызывать JSON.stringify()
return JSON.stringify(argument, null, 2);
}
// если undefined
if (typeof argument === 'undefined') {
return '[undefined]';
}
// прочие переменные - просто .toString()
return argument.toString();
})
// собрать всё это в одну строку через пробел
.reduce(function (message, argument) {
if (message.length > 0) {
message += ' ';
}
return message + argument;
}, '');
}
module.exports = exports['default'];
//# sourceMappingURL=log.js.map