From 59f10060907c2054521619d659b23b1747a06f55 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 20 Mar 2024 15:52:15 -0700 Subject: [PATCH 1/5] make get writeable refs public --- d2oracle/edit.go | 32 +++++++------------------------- d2oracle/get.go | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/d2oracle/edit.go b/d2oracle/edit.go index 376fb9e16..ec622e415 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -199,7 +199,7 @@ func ReconnectEdge(g *d2graph.Graph, boardPath []string, edgeKey string, srcKey, refs := edge.References if baseAST != g.AST { - refs = getWriteableEdgeRefs(edge, baseAST) + refs = GetWriteableEdgeRefs(edge, baseAST) if len(refs) == 0 || refs[0].ScopeAST != baseAST { // TODO null return nil, OutsideScopeError{} @@ -387,7 +387,7 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string) var maybeNewScope *d2ast.Map if baseAST != g.AST || imported { - writeableRefs := getWriteableRefs(obj, baseAST) + writeableRefs := GetWriteableRefs(obj, baseAST) for _, ref := range writeableRefs { if ref.MapKey != nil && ref.MapKey.Value.Map != nil { maybeNewScope = ref.MapKey.Value.Map @@ -414,7 +414,7 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string) writeableLabelMK := true var objK *d2ast.Key if baseAST != g.AST || imported { - writeableRefs := getWriteableRefs(obj, baseAST) + writeableRefs := GetWriteableRefs(obj, baseAST) if len(writeableRefs) > 0 { objK = writeableRefs[0].MapKey } @@ -497,7 +497,7 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string) imported = IsImportedEdge(baseAST, edge) refs := edge.References if baseAST != g.AST || imported { - refs = getWriteableEdgeRefs(edge, baseAST) + refs = GetWriteableEdgeRefs(edge, baseAST) } onlyInChain := true for _, ref := range refs { @@ -920,7 +920,7 @@ func Delete(g *d2graph.Graph, boardPath []string, key string) (_ *d2graph.Graph, } else { refs := e.References if len(boardPath) > 0 { - refs := getWriteableEdgeRefs(e, baseAST) + refs := GetWriteableEdgeRefs(e, baseAST) if len(refs) != len(e.References) { mk.Value = d2ast.MakeValueBox(&d2ast.Null{}) } @@ -991,7 +991,7 @@ func Delete(g *d2graph.Graph, boardPath []string, key string) (_ *d2graph.Graph, return g, nil } if len(boardPath) > 0 { - writeableRefs := getWriteableRefs(obj, baseAST) + writeableRefs := GetWriteableRefs(obj, baseAST) if len(writeableRefs) != len(obj.References) { mk.Value = d2ast.MakeValueBox(&d2ast.Null{}) } @@ -1759,7 +1759,7 @@ func move(g *d2graph.Graph, boardPath []string, key, newKey string, includeDesce } if len(boardPath) > 0 { - writeableRefs := getWriteableRefs(obj, baseAST) + writeableRefs := GetWriteableRefs(obj, baseAST) if len(writeableRefs) != len(obj.References) { return nil, OutsideScopeError{} } @@ -3226,21 +3226,3 @@ func filterReservedPath(path []*d2ast.StringBox) (filtered []*d2ast.StringBox) { } return } - -func getWriteableRefs(obj *d2graph.Object, writeableAST *d2ast.Map) (out []d2graph.Reference) { - for i, ref := range obj.References { - if ref.ScopeAST == writeableAST && ref.Key.Range.Path == writeableAST.Range.Path { - out = append(out, obj.References[i]) - } - } - return -} - -func getWriteableEdgeRefs(edge *d2graph.Edge, writeableAST *d2ast.Map) (out []d2graph.EdgeReference) { - for i, ref := range edge.References { - if ref.ScopeAST == writeableAST { - out = append(out, edge.References[i]) - } - } - return -} diff --git a/d2oracle/get.go b/d2oracle/get.go index 6b8b2e259..3883bc24e 100644 --- a/d2oracle/get.go +++ b/d2oracle/get.go @@ -245,3 +245,21 @@ func GetID(key string) string { return d2format.Format(d2ast.RawString(mk.Key.Path[len(mk.Key.Path)-1].Unbox().ScalarString(), true)) } + +func GetWriteableRefs(obj *d2graph.Object, writeableAST *d2ast.Map) (out []d2graph.Reference) { + for i, ref := range obj.References { + if ref.ScopeAST == writeableAST && ref.Key.Range.Path == writeableAST.Range.Path { + out = append(out, obj.References[i]) + } + } + return +} + +func GetWriteableEdgeRefs(edge *d2graph.Edge, writeableAST *d2ast.Map) (out []d2graph.EdgeReference) { + for i, ref := range edge.References { + if ref.ScopeAST == writeableAST { + out = append(out, edge.References[i]) + } + } + return +} From 600bc093bbf6631b0a3f4ef482c57d18de53f4cb Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 20 Mar 2024 16:03:09 -0700 Subject: [PATCH 2/5] prevent cycle in d2chaos sequence diagram --- d2chaos/d2chaos.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/d2chaos/d2chaos.go b/d2chaos/d2chaos.go index 96f9cd906..bf6961d4e 100644 --- a/d2chaos/d2chaos.go +++ b/d2chaos/d2chaos.go @@ -137,6 +137,9 @@ func (gs *dslGenState) edge() error { if err != nil { return err } + if src == dst && gs.nodeShapes[dst] == d2target.ShapeSequenceDiagram { + break + } if gs.findOuterSequenceDiagram(src) == gs.findOuterSequenceDiagram(dst) { break } From b18e6ee0c4c1122d8b8fbf552c0e906d25ba8717 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 20 Mar 2024 16:10:48 -0700 Subject: [PATCH 3/5] ta --- .../testdata/TestCLI_E2E/empty-base.exp.svg | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg index 8606e515d..9e791f1e1 100644 --- a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg +++ b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg @@ -1,9 +1,9 @@ ab +}]]>ab -abdc - +abdc + - - -abdce + + +abdce From 07156b14b21c3a6ec5446e451b247b352ec112b4 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 20 Mar 2024 16:18:44 -0700 Subject: [PATCH 4/5] what --- .../testdata/TestCLI_E2E/empty-base.exp.svg | 166 +++++++++--------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg index 9e791f1e1..8606e515d 100644 --- a/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg +++ b/e2etests-cli/testdata/TestCLI_E2E/empty-base.exp.svg @@ -1,9 +1,9 @@ ab +}]]>ab -abdc - +abdc + - - -abdce + + +abdce From 2187bf78a86a13d341844d4bb18cee26813a1e48 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 20 Mar 2024 16:21:40 -0700 Subject: [PATCH 5/5] fix --- d2chaos/d2chaos.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/d2chaos/d2chaos.go b/d2chaos/d2chaos.go index bf6961d4e..42445a974 100644 --- a/d2chaos/d2chaos.go +++ b/d2chaos/d2chaos.go @@ -137,9 +137,6 @@ func (gs *dslGenState) edge() error { if err != nil { return err } - if src == dst && gs.nodeShapes[dst] == d2target.ShapeSequenceDiagram { - break - } if gs.findOuterSequenceDiagram(src) == gs.findOuterSequenceDiagram(dst) { break } @@ -149,6 +146,10 @@ func (gs *dslGenState) edge() error { } } + if src == dst && gs.nodeShapes[dst] == d2target.ShapeSequenceDiagram { + return nil + } + srcArrow := "-" if gs.randBool() { srcArrow = "<"