summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/node/polyfills/internal/util/inspect.mjs13
-rw-r--r--tests/unit_node/util_test.ts5
2 files changed, 18 insertions, 0 deletions
diff --git a/ext/node/polyfills/internal/util/inspect.mjs b/ext/node/polyfills/internal/util/inspect.mjs
index 3a61c387c..ae797449b 100644
--- a/ext/node/polyfills/internal/util/inspect.mjs
+++ b/ext/node/polyfills/internal/util/inspect.mjs
@@ -565,6 +565,19 @@ export function stripVTControlCharacters(str) {
export function styleText(format, text) {
validateString(text, "text");
+
+ if (Array.isArray(format)) {
+ for (let i = 0; i < format.length; i++) {
+ const item = format[i];
+ const formatCodes = inspect.colors[item];
+ if (formatCodes == null) {
+ validateOneOf(item, "format", Object.keys(inspect.colors));
+ }
+ text = `\u001b[${formatCodes[0]}m${text}\u001b[${formatCodes[1]}m`;
+ }
+ return text;
+ }
+
const formatCodes = inspect.colors[format];
if (formatCodes == null) {
validateOneOf(format, "format", Object.keys(inspect.colors));
diff --git a/tests/unit_node/util_test.ts b/tests/unit_node/util_test.ts
index a47c231a1..6267018b1 100644
--- a/tests/unit_node/util_test.ts
+++ b/tests/unit_node/util_test.ts
@@ -353,3 +353,8 @@ Deno.test("[util] styleText()", () => {
const redText = util.styleText("red", "error");
assertEquals(redText, "\x1B[31merror\x1B[39m");
});
+
+Deno.test("[util] styleText() with array of formats", () => {
+ const colored = util.styleText(["red", "green"], "error");
+ assertEquals(colored, "\x1b[32m\x1b[31merror\x1b[39m\x1b[39m");
+});