1package markdown
2
3import (
4 "bytes"
5 "html/template"
6
7 "github.com/yuin/goldmark"
8 "github.com/yuin/goldmark/extension"
9 "github.com/yuin/goldmark/parser"
10 "github.com/yuin/goldmark/renderer/html"
11)
12
13var md = goldmark.New(
14 goldmark.WithExtensions(
15 extension.GFM,
16 extension.Footnote,
17 ),
18 goldmark.WithParserOptions(
19 parser.WithAutoHeadingID(),
20 ),
21 goldmark.WithRendererOptions(
22 html.WithHardWraps(),
23 html.WithXHTML(),
24 ),
25)
26
27func Render(src string) template.HTML {
28 var buf bytes.Buffer
29 if err := md.Convert([]byte(src), &buf); err != nil {
30 return template.HTML("<pre>" + template.HTMLEscapeString(src) + "</pre>")
31 }
32 return template.HTML(buf.String())
33}