8/4/26 21:23

This commit is contained in:
Eric Christensen
2026-08-04 21:23:11 -07:00
parent cfb3f16f82
commit caba177285
14 changed files with 353 additions and 25 deletions
+59
View File
@@ -0,0 +1,59 @@
package main
// #include <stdlib.h>
import "C"
import (
"bytes"
"fmt"
"unsafe"
chromahtml "github.com/alecthomas/chroma/v2/formatters/html"
"github.com/yuin/goldmark"
highlighting "github.com/yuin/goldmark-highlighting/v2"
"github.com/yuin/goldmark/util"
)
var md = goldmark.New(
goldmark.WithExtensions(
highlighting.NewHighlighting(
highlighting.WithStyle("github-dark"),
highlighting.WithWrapperRenderer(func(w util.BufWriter, context highlighting.CodeBlockContext, entering bool) {
lang, _ := context.Language()
if entering {
if lang == nil {
w.WriteString(`<div><pre class="aero"><code>`)
return
}
w.WriteString(fmt.Sprintf(`<div class="code-block"><p class="code-block-header"><span class="language-name">%s</span></p><pre class="aero"><code>`, lang))
} else {
w.WriteString(`</code></pre></div>`)
}
}),
highlighting.WithFormatOptions(
chromahtml.PreventSurroundingPre(true),
),
),
),
)
//export MarkdownToHTML
func MarkdownToHTML(source *C.char) *C.char {
src := C.GoString(source)
var buf bytes.Buffer
if err := md.Convert([]byte(src), &buf); err != nil {
return C.CString("")
}
return C.CString(buf.String())
}
//export FreeString
func FreeString(s *C.char) {
C.free(unsafe.Pointer(s))
}
func main() {} // required, unused