From d637f9257d3eed2bc1b4f72a6a1c1867a6d2cd9a Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 23 Nov 2022 10:37:36 -0800 Subject: [PATCH 1/5] 2022-11-23 10:37:36AM --- README.md | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 0fe07449a..b1191a011 100644 --- a/README.md +++ b/README.md @@ -109,41 +109,50 @@ Go programs. ```go import ( - "github.com/terrastruct/d2/d2compiler" - "github.com/terrastruct/d2/d2exporter" - "github.com/terrastruct/d2/d2layouts/d2dagrelayout" - "github.com/terrastruct/d2/d2renderers/textmeasure" - "github.com/terrastruct/d2/d2themes/d2themescatalog" + "context" + "io/ioutil" + "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/d2renderers/textmeasure" + "oss.terrastruct.com/d2/d2themes/d2themescatalog" ) func main() { - graph, err := d2compiler.Compile("", strings.NewReader("x -> y"), &d2compiler.CompileOptions{ UTF16: true }) - ruler, err := textmeasure.NewRuler() - err = graph.SetDimensions(nil, ruler) - err = d2dagrelayout.Layout(ctx, graph) - diagram, err := d2exporter.Export(ctx, graph, d2themescatalog.NeutralDefault) - ioutil.WriteFile(filepath.Join("out.svg"), d2svg.Render(*diagram), 0600) + graph, _ := d2compiler.Compile("", strings.NewReader("x -> y"), &d2compiler.CompileOptions{UTF16: true}) + ruler, _ := textmeasure.NewRuler() + graph.SetDimensions(nil, ruler) + d2dagrelayout.Layout(context.Background(), graph) + diagram, _ := d2exporter.Export(context.Background(), graph, d2themescatalog.NeutralDefault.ID) + out, _ := d2svg.Render(diagram) + ioutil.WriteFile(filepath.Join("out.svg"), out, 0600) } ``` D2 is built to be hackable -- the language has an API built on top of it to make edits programmatically. +Modifying the above diagram: + ```go import ( - "github.com/terrastruct/d2/d2oracle" - "github.com/terrastruct/d2/d2format" + "oss.terrastruct.com/d2/d2renderers/textmeasure" + "oss.terrastruct.com/d2/d2themes/d2themescatalog" ) -// ...modifying the diagram `x -> y` from above // Create a shape with the ID, "meow" -graph, err = d2oracle.Create(graph, "meow") +graph, _, _ = d2oracle.Create(graph, "meow") // Style the shape green -graph, err = d2oracle.Set(graph, "meow.style.fill", "green") +color := "green" +graph, _ = d2oracle.Set(graph, "meow.style.fill", nil, &color) // Create a shape with the ID, "cat" -graph, err = d2oracle.Create(graph, "cat") +graph, _, _ = d2oracle.Create(graph, "cat") // Move the shape "meow" inside the container "cat" -graph, err = d2oracle.Move(graph, "meow", "cat.meow") +graph, _ = d2oracle.Move(graph, "meow", "cat.meow") // Prints formatted D2 code println(d2format.Format(graph.AST)) ``` From 669f2566febb0dc05fb355a07cf8f01d0ea709e7 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 23 Nov 2022 10:38:35 -0800 Subject: [PATCH 2/5] 2022-11-23 10:38:35AM --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b1191a011..ea9b5c6ad 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ defendants.chesscom -> hans: 72 page report of cheating > There is syntax highlighting with the editor plugins linked below. -D2 render example +D2 render example ## Quickstart From 32ab5eae21e2e3a6232474905ae9ff89d05eae11 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 23 Nov 2022 10:39:05 -0800 Subject: [PATCH 3/5] 2022-11-23 10:39:05AM --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ea9b5c6ad..80f8d0b4f 100644 --- a/README.md +++ b/README.md @@ -109,10 +109,10 @@ Go programs. ```go import ( - "context" - "io/ioutil" - "path/filepath" - "strings" + "context" + "io/ioutil" + "path/filepath" + "strings" "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" From 6fcec0e1265befd0945e6ed0b3605b2b9c4a4c5a Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 23 Nov 2022 10:39:54 -0800 Subject: [PATCH 4/5] 2022-11-23 10:39:54AM --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80f8d0b4f..401d2d628 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ defendants.chesscom -> hans: 72 page report of cheating > There is syntax highlighting with the editor plugins linked below. -D2 render example +D2 render example ## Quickstart From 222d80e2673e8277cbfdf9f855de457b2c0ab082 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 23 Nov 2022 10:42:38 -0800 Subject: [PATCH 5/5] 2022-11-23 10:42:38AM --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 401d2d628..1472f35b0 100644 --- a/README.md +++ b/README.md @@ -134,9 +134,7 @@ func main() { ``` D2 is built to be hackable -- the language has an API built on top of it to make edits -programmatically. - -Modifying the above diagram: +programmatically. Modifying the above diagram: ```go import (