package lib
import (
"html/template"
"strings"
"github.com/yuin/goldmark/v2/parser"
"github.com/yuin/goldmark/v2/renderer/html"
)
var (
markdownParser = parser.New()
markdownRenderer = html.New()
)
// optimizations props to claude opus 5
func FormatMarkdown(source []byte) (template.HTML, error) {
var sb strings.Builder
sb.Grow(len(source) + len(source)/2) // rendered html runs ~1.2-1.3x the source
doc := markdownParser.Parse(source)
if err := markdownRenderer.Render(&sb, source, doc); err != nil {
return "", err
}
return template.HTML(sb.String()), nil
}