forked from terrastruct/d2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlowlevel.go
32 lines (29 loc) · 969 Bytes
/
lowlevel.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 (
"context"
"os"
"path/filepath"
"strings"
"oss.terrastruct.com/d2/d2compiler"
"oss.terrastruct.com/d2/d2exporter"
"oss.terrastruct.com/d2/d2layouts/d2dagrelayout"
"oss.terrastruct.com/d2/d2renderers/d2svg"
"oss.terrastruct.com/d2/d2themes/d2themescatalog"
"oss.terrastruct.com/d2/lib/log"
"oss.terrastruct.com/d2/lib/textmeasure"
)
// Remember to add if err != nil checks in production.
func main() {
graph, config, _ := d2compiler.Compile("", strings.NewReader("x -> y"), nil)
graph.ApplyTheme(d2themescatalog.NeutralDefault.ID)
ruler, _ := textmeasure.NewRuler()
_ = graph.SetDimensions(nil, ruler, nil)
ctx := log.WithDefault(context.Background())
_ = d2dagrelayout.Layout(ctx, graph, nil)
diagram, _ := d2exporter.Export(ctx, graph, nil)
diagram.Config = config
out, _ := d2svg.Render(diagram, &d2svg.RenderOpts{
ThemeID: &d2themescatalog.NeutralDefault.ID,
})
_ = os.WriteFile(filepath.Join("out.svg"), out, 0600)
}