refactor: 适配tinymce编辑器获取到的数据
This commit is contained in:
@@ -35,6 +35,15 @@ const loadedLangs = new Set<string>(["text"]);
|
|||||||
|
|
||||||
const supportedSet = new Set<string>(SUPPORTED_LANGS);
|
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> => {
|
const ensureLangLoaded = async (lang: string): Promise<string> => {
|
||||||
if (lang === "text" || loadedLangs.has(lang)) return lang;
|
if (lang === "text" || loadedLangs.has(lang)) return lang;
|
||||||
if (!supportedSet.has(lang)) return "text";
|
if (!supportedSet.has(lang)) return "text";
|
||||||
@@ -55,18 +64,20 @@ async function processCodeBlocks(document: Document) {
|
|||||||
if (!preEl || preEl.tagName !== "PRE") continue;
|
if (!preEl || preEl.tagName !== "PRE") continue;
|
||||||
|
|
||||||
const codeContent = codeBlock.textContent || "";
|
const codeContent = codeBlock.textContent || "";
|
||||||
let lang = "text";
|
let rawLang = "text";
|
||||||
for (const cls of codeBlock.classList) {
|
for (const cls of preEl.classList) {
|
||||||
if (cls.startsWith("language-")) {
|
if (cls.startsWith("language-")) {
|
||||||
lang = cls.slice("language-".length);
|
rawLang = cls.slice("language-".length);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lang = await ensureLangLoaded(lang);
|
const lang = normalizeLang(rawLang);
|
||||||
|
|
||||||
|
const loadedLang = await ensureLangLoaded(lang);
|
||||||
|
|
||||||
const highlighted = highlighter.codeToHtml(codeContent, {
|
const highlighted = highlighter.codeToHtml(codeContent, {
|
||||||
lang,
|
lang: loadedLang,
|
||||||
theme: DEFAULT_THEME,
|
theme: DEFAULT_THEME,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user