/
main.go
46 lines (40 loc) · 1.06 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package main
import (
"bytes"
"io/ioutil"
"path"
"runtime"
dot "github.com/OhYee/goldmark-dot"
ext "github.com/OhYee/goldmark-fenced_codeblock_extension"
"github.com/yuin/goldmark"
highlighting "github.com/yuin/goldmark-highlighting"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/parser"
)
var raw = "```go\npackage main\n\nimport ()\nfunc main(){}\n```\n\n```dot-svg\ndigraph{a->b}\n```"
func main() {
md := goldmark.New(
goldmark.WithExtensions(
extension.GFM,
ext.NewExt(
dot.RenderMap(20, "dot-svg"),
ext.RenderMap{
Languages: []string{"*"},
RenderFunction: ext.GetFencedCodeBlockRendererFunc(highlighting.NewHTMLRenderer()),
},
),
),
goldmark.WithParserOptions(
parser.WithAutoHeadingID(),
),
goldmark.WithRendererOptions(),
)
buf := bytes.Buffer{}
if err := md.Convert([]byte(raw), &buf); err != nil {
panic(err.Error())
}
_, file, _, _ := runtime.Caller(0)
if err := ioutil.WriteFile(path.Join(path.Dir(file), "output.html"), buf.Bytes(), 777); err != nil {
panic(err.Error())
}
}