diff --git a/src/lib/processHtml.ts b/src/lib/processHtml.ts
index 5ea4b32..0544e2e 100644
--- a/src/lib/processHtml.ts
+++ b/src/lib/processHtml.ts
@@ -1,5 +1,5 @@
-import { JSDOM } from "jsdom";
-import { createHighlighter } from "shiki";
+import {JSDOM} from "jsdom";
+import {createHighlighter} from "shiki";
const DEFAULT_THEME = "github-dark-dimmed";
@@ -35,6 +35,15 @@ const loadedLangs = new Set(["text"]);
const supportedSet = new Set(SUPPORTED_LANGS);
+const LANG_MAP: Record = {
+ markup: "html",
+ html: "html",
+};
+
+const normalizeLang = (lang: string): string => {
+ return LANG_MAP[lang] || lang;
+};
+
const ensureLangLoaded = async (lang: string): Promise => {
if (lang === "text" || loadedLangs.has(lang)) return lang;
if (!supportedSet.has(lang)) return "text";
@@ -55,18 +64,20 @@ async function processCodeBlocks(document: Document) {
if (!preEl || preEl.tagName !== "PRE") continue;
const codeContent = codeBlock.textContent || "";
- let lang = "text";
- for (const cls of codeBlock.classList) {
+ let rawLang = "text";
+ for (const cls of preEl.classList) {
if (cls.startsWith("language-")) {
- lang = cls.slice("language-".length);
+ rawLang = cls.slice("language-".length);
break;
}
}
- lang = await ensureLangLoaded(lang);
+ const lang = normalizeLang(rawLang);
+
+ const loadedLang = await ensureLangLoaded(lang);
const highlighted = highlighter.codeToHtml(codeContent, {
- lang,
+ lang: loadedLang,
theme: DEFAULT_THEME,
});