refactor: 适配tinymce编辑器获取到的数据

This commit is contained in:
2026-08-29 22:53:19 +08:00
parent 0e917adc3b
commit a4850e708f

View File

@@ -35,6 +35,15 @@ const loadedLangs = new Set<string>(["text"]);
const supportedSet = new Set<string>(SUPPORTED_LANGS);
const LANG_MAP: Record<string, string> = {
markup: "html",
html: "html",
};
const normalizeLang = (lang: string): string => {
return LANG_MAP[lang] || lang;
};
const ensureLangLoaded = async (lang: string): Promise<string> => {
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,
});