1test("widthInTerminal", () => {
2 assert.equal(
3 ansi.widthInTerminal("snowmobile"),
4 10,
5 );
6 assert.equal(
7 ansi.widthInTerminal("🏳️‍⚧️ " + ansi.style(ansi.bold, "rights")),
8 9,
9 );
10});
11test("trimForTerminal", () => {
12 assert.equal(
13 ansi.trimForTerminal("snowmobile", 6),
14 "snowmo",
15 );
16 assert.equal(
17 ansi.trimForTerminal("🏳️‍⚧️ " + ansi.style(ansi.bold, "rights"), 5),
18 "🏳️‍⚧️ " + ansi.bold + "ri" + ansi.reset,
19 );
20});
21test("toHtml", () => {
22 assert.equal(
23 ansi.toHtml(`${ansi.fgRed}<a>\nb${ansi.fgReset} c`),
24 "<span style=\"color:var(--ansi1);\">&lt;a&gt;</span>\n<span style=\"color:var(--ansi1);\">b</span> c",
25 );
26 // bold and dim are separate, and inverse swaps colors, the default ones too
27 assert.equal(ansi.toHtml("\x1b[1;2mx"), "<span style=\"font-weight:bold;opacity:.65;\">x</span>");
28 assert.equal(
29 ansi.toHtml(`${ansi.inverse}a${ansi.fgRed}b${ansi.resetInverse}c`),
30 "<span style=\"color:Canvas;background:CanvasText;\">a</span>"
31 + "<span style=\"color:Canvas;background:var(--ansi1);\">b</span><span style=\"color:var(--ansi1);\">c</span>",
32 );
33});
34
35import assert from "node:assert";
36import { test } from "vitest";
37import * as ansi from "./ansi.ts";