tslog
Version:
Extensible TypeScript Logger for Node.js and Browser.
35 lines (34 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatTemplate = formatTemplate;
const prettyLogStyles_js_1 = require("./prettyLogStyles.js");
function formatTemplate(settings, template, values, hideUnsetPlaceholder = false) {
const templateString = String(template);
const ansiColorWrap = (placeholderValue, code) => `\u001b[${code[0]}m${placeholderValue}\u001b[${code[1]}m`;
const styleWrap = (value, style) => {
if (style != null && typeof style === "string") {
return ansiColorWrap(value, prettyLogStyles_js_1.prettyLogStyles[style]);
}
else if (style != null && Array.isArray(style)) {
return style.reduce((prevValue, thisStyle) => styleWrap(prevValue, thisStyle), value);
}
else {
if (style != null && style[value.trim()] != null) {
return styleWrap(value, style[value.trim()]);
}
else if (style != null && style["*"] != null) {
return styleWrap(value, style["*"]);
}
else {
return value;
}
}
};
const defaultStyle = null;
return templateString.replace(/{{(.+?)}}/g, (_, placeholder) => {
const value = values[placeholder] != null ? String(values[placeholder]) : hideUnsetPlaceholder ? "" : _;
return settings.stylePrettyLogs
? styleWrap(value, settings?.prettyLogStyles?.[placeholder] ?? defaultStyle) + ansiColorWrap("", prettyLogStyles_js_1.prettyLogStyles.reset)
: value;
});
}