import { NumberParseFloat, NumberParseInt, String, TypeError, } from "ext:core/primordials"; import { inspect } from "./inspect.js"; function format(args: readonly unknown[], colors = false): string { if (args.length === 0) return ""; let text = ""; let consumed = 0; if (typeof args[0] === "string" && args.length > 1) { const template = args[0]; consumed = 1; for (let index = 0; index < template.length; index++) { const character = template[index]; const token = template[index + 1]; if (character === "%" && token === "%") { text += "%"; index++; continue; } if ( character !== "%" || consumed === args.length || !(token === "s" || token === "d" || token === "i" || token === "f" || token === "o" || token === "O" || token === "c") ) { text += character; continue; } const value = args[consumed++]; index++; if (token === "s") text += String(value); else if (token === "d" || token === "i") { text += typeof value === "symbol" ? "NaN" : String(NumberParseInt(value, 10)); } else if (token === "f") { text += typeof value === "symbol" ? "NaN" : String(NumberParseFloat(value)); } else if (token !== "c") { text += inspect(value, { depth: token === "o" ? 3 : 2, colors }); } } } for (; consumed < args.length; consumed++) { if (consumed > 0) text += " "; const value = args[consumed]; text += typeof value === "string" ? value : inspect(value, { colors }); } return text; } function labelString(value: unknown): string { if (typeof value === "symbol") { throw new TypeError("Cannot convert a Symbol value to a string"); } return String(value); } export { format, labelString };