AgentGraph / frontend /src /lib /markdown-utils.ts
wu981526092's picture
🚀 Deploy AgentGraph: Complete agent monitoring and knowledge graph system
c2ea5ed
/**
* Utility functions for markdown detection and rendering
*/
/**
* Detects if content contains markdown syntax patterns
*/
export function isMarkdownContent(content: string): boolean {
if (!content || content.trim() === "") return false;
// Common markdown patterns
const markdownPatterns = [
/^#{1,6}\s+/m, // Headers (# ## ### etc)
/\*\*.*?\*\*/, // Bold text
/\*.*?\*/, // Italic text
/`.*?`/, // Inline code
/```[\s\S]*?```/, // Code blocks
/^\s*[*\-+]\s+/m, // Unordered lists
/^\s*\d+\.\s+/m, // Ordered lists
/\[.*?\]\(.*?\)/, // Links
/!\[.*?\]\(.*?\)/, // Images
/^\s*>\s+/m, // Blockquotes
/^\s*\|\s*.*\s*\|/m, // Tables
/^---+$/m, // Horizontal rules
];
return markdownPatterns.some((pattern) => pattern.test(content));
}
/**
* Detects if filename has markdown extension
*/
export function isMarkdownFile(filename?: string): boolean {
if (!filename) return false;
const markdownExtensions = [".md", ".markdown", ".mdown", ".mkd"];
const lowercaseFilename = filename.toLowerCase();
return markdownExtensions.some((ext) => lowercaseFilename.endsWith(ext));
}
/**
* Determines if content should be rendered as markdown based on content patterns and filename
*/
export function shouldRenderAsMarkdown(
content: string,
filename?: string
): boolean {
// First check filename extension
if (isMarkdownFile(filename)) {
return true;
}
// Then check content patterns
return isMarkdownContent(content);
}