import { marked } from 'marked' import hljs from 'highlight.js' // Configure marked marked.setOptions({ breaks: true, gfm: true, }) // Custom renderer for syntax highlighting const renderer = new marked.Renderer() renderer.code = function({ text, lang }: { text: string; lang?: string }) { if (lang && hljs.getLanguage(lang)) { const highlighted = hljs.highlight(text, { language: lang }).value return `
${highlighted}`
}
const escaped = escapeHtml(text)
return `${escaped}`
}
marked.use({ renderer })
// Escape HTML
function escapeHtml(text: string): string {
return text
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
}
// Render markdown to HTML
export function renderMarkdown(content: string): string {
return marked(content) as string
}