43 lines
725 B
Go
43 lines
725 B
Go
package d2latex
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
|
|
v8 "rogchap.com/v8go"
|
|
)
|
|
|
|
//go:embed polyfills.js
|
|
var polyfillsJS string
|
|
|
|
//go:embed setup.js
|
|
var setupJS string
|
|
|
|
//go:embed mathjax.js
|
|
var mathjaxJS string
|
|
|
|
func SVG(s string) (string, error) {
|
|
v8ctx := v8.NewContext()
|
|
|
|
if _, err := v8ctx.RunScript(polyfillsJS, "polyfills.js"); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if _, err := v8ctx.RunScript(mathjaxJS, "mathjax.js"); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if _, err := v8ctx.RunScript(setupJS, "setup.js"); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
val, err := v8ctx.RunScript(fmt.Sprintf(`adaptor.innerHTML(html.convert("%s", {
|
|
em: 16,
|
|
ex: 8,
|
|
}))`, s), "value.js")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return val.String(), nil
|
|
}
|