mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-20 12:54:45 +08:00
feat: Enhance markdown's anti-shake
This commit is contained in:
57
web/src/core/utils/markdown.ts
Normal file
57
web/src/core/utils/markdown.ts
Normal 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 ``;
|
||||
},
|
||||
);
|
||||
|
||||
// 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 ``;
|
||||
},
|
||||
);
|
||||
|
||||
fixedMarkdown = fixedMarkdown.replace(
|
||||
/\[([^\]]*)\]\(([^)]*)$/g,
|
||||
(match: string, linkText: string, url: string): string => {
|
||||
return `[${linkText}](${url})`;
|
||||
},
|
||||
);
|
||||
|
||||
return fixedMarkdown;
|
||||
}
|
||||
Reference in New Issue
Block a user