-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
32 lines (23 loc) · 919 Bytes
/
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
package main
import (
"syscall/js"
"github.com/gomarkdown/markdown"
"github.com/gomarkdown/markdown/html"
"github.com/gomarkdown/markdown/parser"
)
func convertMarkdownWrapper(this js.Value, p []js.Value) interface{} {
input := p[0].String()
// Enable Markdown extensions (tables, checkboxes, etc.)
extensions := parser.CommonExtensions | parser.Tables | parser.Autolink | parser.Strikethrough | parser.NoEmptyLineBeforeBlock
mdParser := parser.NewWithExtensions(extensions)
// Enable HTML rendering options
htmlFlags := html.CommonFlags | html.HrefTargetBlank
renderer := html.NewRenderer(html.RendererOptions{Flags: htmlFlags})
// Convert Markdown to HTML
htmlOutput := markdown.ToHTML([]byte(input), mdParser, renderer)
return js.ValueOf(string(htmlOutput))
}
func main() {
js.Global().Set("convertMarkdown", js.FuncOf(convertMarkdownWrapper))
select {} // Keeps Go running in WebAssembly
}