2022-11-27 09:17:29AM
This commit is contained in:
parent
93adc4f474
commit
b90ca0a166
6 changed files with 3402 additions and 0 deletions
43
d2renderers/d2latex/latex.go
Normal file
43
d2renderers/d2latex/latex.go
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
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
|
||||
}
|
||||
17
d2renderers/d2latex/latex_test.go
Normal file
17
d2renderers/d2latex/latex_test.go
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package d2latex
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSVG(t *testing.T) {
|
||||
svg, err := SVG("$$a + b = c$$")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var xmlParsed interface{}
|
||||
if err := xml.Unmarshal([]byte(svg), &xmlParsed); err != nil {
|
||||
t.Fatalf("invalid SVG: %v", err)
|
||||
}
|
||||
}
|
||||
1
d2renderers/d2latex/mathjax.js
Normal file
1
d2renderers/d2latex/mathjax.js
Normal file
File diff suppressed because one or more lines are too long
3334
d2renderers/d2latex/polyfills.js
Normal file
3334
d2renderers/d2latex/polyfills.js
Normal file
File diff suppressed because it is too large
Load diff
6
d2renderers/d2latex/setup.js
Normal file
6
d2renderers/d2latex/setup.js
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
const adaptor = MathJax._.adaptors.liteAdaptor.liteAdaptor();
|
||||
MathJax._.handlers.html_ts.RegisterHTMLHandler(adaptor)
|
||||
const html = MathJax._.mathjax.mathjax.document('', {
|
||||
InputJax: new MathJax._.input.tex_ts.TeX(),
|
||||
OutputJax: new MathJax._.output.svg_ts.SVG({ fontCache: "none" }),
|
||||
});
|
||||
1
d2renderers/d2latex/tex-svg.js
Normal file
1
d2renderers/d2latex/tex-svg.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue