fix: preserve inline code in cjk emphasis

This commit is contained in:
shixy
2026-03-14 17:12:03 +08:00
parent 38fc733b99
commit 2aa9790789
8 changed files with 252 additions and 1 deletions
+8
View File
@@ -109,6 +109,13 @@ function parseFrontMatterAndContent(markdownText: string): ParseResult {
}
}
function wrapInlineCode(value: string): string {
const runs = value.match(/`+/g);
const fence = "`".repeat(Math.max(...(runs?.map((run) => run.length) ?? [0])) + 1);
const padding = /^ *$/.test(value) ? "" : " ";
return `${fence}${padding}${value}${padding}${fence}`;
}
export function initRenderer(opts: IOpts = {}): RendererAPI {
const footnotes: [number, string, string][] = [];
let footnoteIndex = 0;
@@ -369,6 +376,7 @@ function preprocessCjkEmphasis(markdown: string): string {
const tree = processor.parse(markdown);
const extractText = (node: any): string => {
if (node.type === "text") return node.value;
if (node.type === "inlineCode") return wrapInlineCode(node.value);
if (node.children) return node.children.map(extractText).join("");
return "";
};