From 8860b6b716f6749550aa4e8be6b8df8e2fc8ed72 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 2 Feb 2023 12:24:48 -0800 Subject: [PATCH] d2graph: Sort objects by AST order --- d2compiler/compile.go | 1 + d2graph/d2graph.go | 15 + .../testdata/arrowheads/sketch.exp.svg | 2 +- .../diagram_wider_than_tooltip/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 82 +- .../dagre/sketch.exp.svg | 2 +- .../dagre_broken_arrowhead/elk/board.exp.json | 82 +- .../dagre_broken_arrowhead/elk/sketch.exp.svg | 2 +- .../container_edges/dagre/board.exp.json | 82 +- .../container_edges/dagre/sketch.exp.svg | 2 +- .../stable/container_edges/elk/board.exp.json | 82 +- .../stable/container_edges/elk/sketch.exp.svg | 2 +- .../different_subgraphs/dagre/board.exp.json | 328 ++--- .../different_subgraphs/dagre/sketch.exp.svg | 2 +- .../different_subgraphs/elk/board.exp.json | 328 ++--- .../different_subgraphs/elk/sketch.exp.svg | 2 +- .../stable/direction/dagre/board.exp.json | 492 +++---- .../stable/direction/dagre/sketch.exp.svg | 2 +- .../stable/direction/elk/board.exp.json | 492 +++---- .../stable/direction/elk/sketch.exp.svg | 2 +- .../giant_markdown_test/dagre/sketch.exp.svg | 2 +- .../stable/investigate/dagre/board.exp.json | 298 ++--- .../stable/investigate/dagre/sketch.exp.svg | 2 +- .../stable/investigate/elk/board.exp.json | 298 ++--- .../stable/investigate/elk/sketch.exp.svg | 2 +- .../one_container_loop/dagre/board.exp.json | 82 +- .../one_container_loop/dagre/sketch.exp.svg | 2 +- .../one_container_loop/elk/board.exp.json | 82 +- .../one_container_loop/elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 82 +- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 82 +- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 162 +-- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 162 +-- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 82 +- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 82 +- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 164 +-- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 164 +-- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 80 +- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 80 +- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 246 ++-- .../dagre/sketch.exp.svg | 2 +- .../sequence_diagram_note/elk/board.exp.json | 246 ++-- .../sequence_diagram_note/elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 242 ++-- .../dagre/sketch.exp.svg | 2 +- .../sequence_diagram_real/elk/board.exp.json | 242 ++-- .../sequence_diagram_real/elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 160 +-- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 160 +-- .../elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 160 +-- .../dagre/sketch.exp.svg | 2 +- .../sequence_diagram_span/elk/board.exp.json | 160 +-- .../sequence_diagram_span/elk/sketch.exp.svg | 2 +- .../sequence_diagrams/dagre/board.exp.json | 1136 ++++++++--------- .../sequence_diagrams/dagre/sketch.exp.svg | 2 +- .../sequence_diagrams/elk/board.exp.json | 1136 ++++++++--------- .../sequence_diagrams/elk/sketch.exp.svg | 2 +- .../dagre/board.exp.json | 80 +- .../dagre/sketch.exp.svg | 2 +- .../elk/board.exp.json | 80 +- .../elk/sketch.exp.svg | 2 +- .../underscore_no_conflict.exp.json | 94 +- .../TestMove/edge_across_containers.exp.json | 94 +- .../TestMove/edge_chain_circular.exp.json | 134 +- .../edge_chain_out_container.exp.json | 94 +- .../TestMove/edge_out_of_container.exp.json | 94 +- .../flat_nested_merge_multiple_refs.exp.json | 160 +-- .../TestMove/full_edge_slice.exp.json | 156 +-- testdata/d2oracle/TestMove/gnarly_1.exp.json | 232 ++-- .../TestMove/merge_nested_maps.exp.json | 94 +- .../underscore_edge_children.exp.json | 94 +- .../underscore_edge_container_3.exp.json | 94 +- .../TestMove/underscore_edge_split.exp.json | 94 +- .../d2oracle/TestRename/container.exp.json | 322 ++--- testdata/d2oracle/TestRename/edges.exp.json | 228 ++-- 87 files changed, 5003 insertions(+), 4987 deletions(-) diff --git a/d2compiler/compile.go b/d2compiler/compile.go index be71308b8..584dd20af 100644 --- a/d2compiler/compile.go +++ b/d2compiler/compile.go @@ -42,6 +42,7 @@ func Compile(path string, r io.RuneReader, opts *CompileOptions) (*d2graph.Graph if err != nil { return nil, err } + g.SortObjectsByAST() g.SortEdgesByAST() return g, nil } diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index f8b66c110..9a89ed7e3 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -1460,6 +1460,21 @@ func (g *Graph) GetBoard(name string) *Graph { return nil } +func (g *Graph) SortObjectsByAST() { + objects := append([]*Object(nil), g.Objects...) + sort.Slice(objects, func(i, j int) bool { + o1 := objects[i] + o2 := objects[j] + if len(o1.References) == 0 || len(o2.References) == 0 { + return i < j + } + r1 := o1.References[0] + r2 := o2.References[0] + return r1.Key.Path[r1.KeyPathIndex].Unbox().GetRange().Before(r2.Key.Path[r2.KeyPathIndex].Unbox().GetRange()) + }) + g.Objects = objects +} + func (g *Graph) SortEdgesByAST() { edges := append([]*Edge(nil), g.Edges...) sort.Slice(edges, func(i, j int) bool { diff --git a/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg b/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg index 9181a6394..b817b2038 100644 --- a/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg +++ b/d2renderers/d2sketch/testdata/arrowheads/sketch.exp.svg @@ -51,7 +51,7 @@ width="1810" height="779" viewBox="-102 -102 1810 779">