colorprint
Version:
Print ansi-colored message to stdout/stderr.
55 lines (45 loc) • 4.44 kB
JavaScript
/**
* Format message.
* @memberof module:colorprint/lib
* @function formatMsg
* @param {...string} msg - Messages to format.
* @returns {string} - Formatted message.
*/
;
/** @lends formatMsg */
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
function formatMsg(msg) {
var s = this;
msg = Array.prototype.slice.call(arguments, 0).map(function (msg) {
if ((0, _typeof2["default"])(msg) === 'object') {
try {
return JSON.stringify(msg, null, 2);
} catch (e) {// Do nothing.
}
}
return msg;
}).filter(function (msg) {
return !!msg;
}).map(function (msg) {
return String(msg);
});
if (!msg.length) {
return '';
}
var formatted = msg.shift().replace(/%(.)/g, function ($0, $1) {
switch ($1) {
case 's':
return String(msg.shift());
case 'd':
return parseInt(msg.shift());
case 'f':
return parseFloat(msg.shift());
default:
return $0;
}
});
return [formatted].concat(msg).join(' ');
}
module.exports = formatMsg;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvcm1hdF9tc2cuanMiXSwibmFtZXMiOlsiZm9ybWF0TXNnIiwibXNnIiwicyIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiYXJndW1lbnRzIiwibWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsImUiLCJmaWx0ZXIiLCJTdHJpbmciLCJsZW5ndGgiLCJmb3JtYXR0ZWQiLCJzaGlmdCIsInJlcGxhY2UiLCIkMCIsIiQxIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0IiwiY29uY2F0Iiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBUUE7QUFFQTs7Ozs7O0FBQ0EsU0FBU0EsU0FBVCxDQUFvQkMsR0FBcEIsRUFBeUI7QUFDdkIsTUFBTUMsQ0FBQyxHQUFHLElBQVY7QUFDQUQsRUFBQUEsR0FBRyxHQUFHRSxLQUFLLENBQUNDLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkMsU0FBM0IsRUFBc0MsQ0FBdEMsRUFBeUNDLEdBQXpDLENBQTZDLFVBQUFQLEdBQUcsRUFBSTtBQUN4RCxRQUFJLHlCQUFPQSxHQUFQLE1BQWdCLFFBQXBCLEVBQThCO0FBQzVCLFVBQUk7QUFDRixlQUFPUSxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsR0FBZixFQUFvQixJQUFwQixFQUEwQixDQUExQixDQUFQO0FBQ0QsT0FGRCxDQUVFLE9BQU9VLENBQVAsRUFBVSxDQUNWO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPVixHQUFQO0FBQ0QsR0FUSyxFQVVIVyxNQVZHLENBVUksVUFBQVgsR0FBRztBQUFBLFdBQUksQ0FBQyxDQUFDQSxHQUFOO0FBQUEsR0FWUCxFQVdITyxHQVhHLENBV0MsVUFBQVAsR0FBRztBQUFBLFdBQUlZLE1BQU0sQ0FBQ1osR0FBRCxDQUFWO0FBQUEsR0FYSixDQUFOOztBQVlBLE1BQUksQ0FBQ0EsR0FBRyxDQUFDYSxNQUFULEVBQWlCO0FBQ2YsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsTUFBSUMsU0FBUyxHQUFHZCxHQUFHLENBQUNlLEtBQUosR0FBWUMsT0FBWixDQUFvQixPQUFwQixFQUE2QixVQUFDQyxFQUFELEVBQUtDLEVBQUwsRUFBWTtBQUN2RCxZQUFRQSxFQUFSO0FBQ0UsV0FBSyxHQUFMO0FBQ0UsZUFBT04sTUFBTSxDQUFDWixHQUFHLENBQUNlLEtBQUosRUFBRCxDQUFiOztBQUNGLFdBQUssR0FBTDtBQUNFLGVBQU9JLFFBQVEsQ0FBQ25CLEdBQUcsQ0FBQ2UsS0FBSixFQUFELENBQWY7O0FBQ0YsV0FBSyxHQUFMO0FBQ0UsZUFBT0ssVUFBVSxDQUFDcEIsR0FBRyxDQUFDZSxLQUFKLEVBQUQsQ0FBakI7O0FBQ0Y7QUFDRSxlQUFPRSxFQUFQO0FBUko7QUFVRCxHQVhlLENBQWhCO0FBWUEsU0FBTyxDQUFFSCxTQUFGLEVBQWNPLE1BQWQsQ0FBcUJyQixHQUFyQixFQUEwQnNCLElBQTFCLENBQStCLEdBQS9CLENBQVA7QUFDRDs7QUFFREMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCekIsU0FBakIiLCJzb3VyY2VSb290IjoiLi4vLi4vbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtYXQgbWVzc2FnZS5cbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y29sb3JwcmludC9saWJcbiAqIEBmdW5jdGlvbiBmb3JtYXRNc2dcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfSBtc2cgLSBNZXNzYWdlcyB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAgLSBGb3JtYXR0ZWQgbWVzc2FnZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIlxuXG4vKiogQGxlbmRzIGZvcm1hdE1zZyAqL1xuZnVuY3Rpb24gZm9ybWF0TXNnIChtc2cpIHtcbiAgY29uc3QgcyA9IHRoaXNcbiAgbXNnID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKS5tYXAobXNnID0+IHtcbiAgICBpZiAodHlwZW9mKG1zZykgPT09ICdvYmplY3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobXNnLCBudWxsLCAyKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLlxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbXNnXG4gIH0pXG4gICAgLmZpbHRlcihtc2cgPT4gISFtc2cpXG4gICAgLm1hcChtc2cgPT4gU3RyaW5nKG1zZykpXG4gIGlmICghbXNnLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIGxldCBmb3JtYXR0ZWQgPSBtc2cuc2hpZnQoKS5yZXBsYWNlKC8lKC4pL2csICgkMCwgJDEpID0+IHtcbiAgICBzd2l0Y2ggKCQxKSB7XG4gICAgICBjYXNlICdzJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhtc2cuc2hpZnQoKSlcbiAgICAgIGNhc2UgJ2QnOlxuICAgICAgICByZXR1cm4gcGFyc2VJbnQobXNnLnNoaWZ0KCkpXG4gICAgICBjYXNlICdmJzpcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobXNnLnNoaWZ0KCkpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJDBcbiAgICB9XG4gIH0pXG4gIHJldHVybiBbIGZvcm1hdHRlZCBdLmNvbmNhdChtc2cpLmpvaW4oJyAnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvcm1hdE1zZ1xuIl19