testMarkdownHighlightsCode

tcmts.content.test.testMarkdownHighlightsCode · #dg2hcuqj · function

import { markdown, shiki } from "#codebase/tcmts/content";
import type { Highlight } from "#codebase/tcmts/content";
import assert from "node:assert/strict";

export const testMarkdownHighlightsCode = async () => {
  const upper: Highlight = (code, lang) =>
    lang === "ts" ? `<pre class="hl">${code.toUpperCase()}</pre>` : undefined;
  assert.equal(
    markdown("```ts x\nlet a\n```", { highlight: upper }),
    '<pre class="hl">LET A</pre>\n',
  );
  assert.equal(
    markdown("```sh\nls\n```", { highlight: upper }),
    '<pre><code class="language-sh">ls\n</code></pre>\n',
  );
  assert.equal(markdown("```\nls\n```", { highlight: upper }), "<pre><code>ls\n</code></pre>\n");
  const hl = await shiki({ langs: ["ts"] });
  const html = markdown("```ts\nconst a = 1\n```", { highlight: hl });
  assert.match(html, /^<pre class="shiki shiki-themes github-light github-dark"/);
  assert.match(html, /style="color:#[0-9A-F]{6};--shiki-dark:#[0-9A-F]{6}"/i);
  assert.equal(hl("x", "lua"), undefined);
  const vars = await shiki({ langs: ["ts"], defaultColor: false });
  assert.match(
    vars("const a = 1", "ts")!,
    /style="--shiki-light:#[0-9A-F]{6};--shiki-dark:#[0-9A-F]{6}"/i,
  );
}

uses