From a4850e708faca9ce21a12fc69491068538ab9110 Mon Sep 17 00:00:00 2001 From: xy <10816187@qq.com> Date: Sat, 29 Aug 2026 22:53:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=80=82=E9=85=8Dtinymce=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/processHtml.ts | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) 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, });