UNPKG

tslog

Version:

Extensible TypeScript Logger for Node.js and Browser.

35 lines (34 loc) 1.58 kB
"use strict"; 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; }); }