@tsed/logger
Version:
A multi channel logger written in TypeScript.
41 lines • 1.21 kB
JavaScript
export function format(fmt, ...args) {
const re = /(%?)(%([ojds]))/g;
if (typeof fmt === "object") {
fmt = JSON.stringify(fmt, null, 2);
}
if (args.length) {
const replacer = (match, escaped, ptn, flag) => {
let arg = args.shift();
switch (flag) {
case "o":
if (Array.isArray(arg)) {
arg = JSON.stringify(arg);
break;
}
case "s":
arg = "" + arg;
break;
case "d":
arg = Number(arg);
break;
case "j":
arg = JSON.stringify(arg);
break;
}
if (!escaped) {
return arg;
}
args.unshift(arg);
return match;
};
fmt = String(fmt).replace(re, replacer);
}
// arguments remain after formatting
if (args.length) {
fmt += " " + args.join(" ");
}
// update escaped %% values
fmt = String(fmt).replace(/%{2,2}/g, "%");
return "" + fmt;
}
//# sourceMappingURL=format.js.map