Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol
diffdown.com
1package render
2
3import (
4 "bytes"
5
6 "github.com/yuin/goldmark"
7 "github.com/yuin/goldmark/extension"
8 "github.com/yuin/goldmark/renderer/html"
9)
10
11var md goldmark.Markdown
12
13func init() {
14 md = goldmark.New(
15 goldmark.WithExtensions(
16 extension.GFM,
17 extension.Typographer,
18 ),
19 goldmark.WithRendererOptions(
20 html.WithHardWraps(),
21 html.WithUnsafe(), // Allow raw HTML in markdown
22 ),
23 )
24}
25
26func Markdown(source []byte) (string, error) {
27 var buf bytes.Buffer
28 if err := md.Convert(source, &buf); err != nil {
29 return "", err
30 }
31 return buf.String(), nil
32}