feat: Enhance markdown's anti-shake

This commit is contained in:
Henry Li
2025-05-11 00:06:07 +08:00
committed by Willem Jiang
parent 69d6e16111
commit 28b65d7a93
2 changed files with 61 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
export function autoFixMarkdown(markdown: string): string {
return autoCloseTrailingLink(markdown);
}
function autoCloseTrailingLink(markdown: string): string {
// Fix unclosed Markdown links or images
let fixedMarkdown: string = markdown;
// Fix unclosed image syntax ![...](...)
fixedMarkdown = fixedMarkdown.replace(
/!\[([^\]]*)\]\(([^)]*)$/g,
(match: string, altText: string, url: string): string => {
return `![${altText}](${url})`;
},
);
// Fix unclosed link syntax [...](...)
fixedMarkdown = fixedMarkdown.replace(
/\[([^\]]*)\]\(([^)]*)$/g,
(match: string, linkText: string, url: string): string => {
return `[${linkText}](${url})`;
},
);
// Fix unclosed image syntax ![...]
fixedMarkdown = fixedMarkdown.replace(
/!\[([^\]]*)$/g,
(match: string, altText: string): string => {
return `![${altText}]`;
},
);
// Fix unclosed link syntax [...]
fixedMarkdown = fixedMarkdown.replace(
/\[([^\]]*)$/g,
(match: string, linkText: string): string => {
return `[${linkText}]`;
},
);
// Fix unclosed images or links missing ")"
fixedMarkdown = fixedMarkdown.replace(
/!\[([^\]]*)\]\(([^)]*)$/g,
(match: string, altText: string, url: string): string => {
return `![${altText}](${url})`;
},
);
fixedMarkdown = fixedMarkdown.replace(
/\[([^\]]*)\]\(([^)]*)$/g,
(match: string, linkText: string, url: string): string => {
return `[${linkText}](${url})`;
},
);
return fixedMarkdown;
}