From 6e972c347218b9657d3810d2a78359196b8ba475 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 28 Jun 2023 14:04:44 -0700 Subject: [PATCH] prepend instead --- d2oracle/edit.go | 10 +- d2oracle/edit_test.go | 6 +- .../scenarios-edge-inherited.exp.json | 140 +++++++++--------- .../TestDelete/scenarios-inherited.exp.json | 80 +++++----- 4 files changed, 122 insertions(+), 114 deletions(-) diff --git a/d2oracle/edit.go b/d2oracle/edit.go index 3a6767da5..a97b04ea1 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -790,6 +790,7 @@ func appendMapKey(m *d2ast.Map, mk *d2ast.Key) { } } if !m.IsFileMap() && m.Range.OneLine() { + println("\033[1;31m--- DEBUG:", "=======================", "\033[m") // This doesn't require any shenanigans to prevent consuming sibling spacing because // d2format will use the mapkey's range to determine whether to insert extra newlines. // See TestCreate/make_scope_multiline_spacing_2 @@ -797,6 +798,11 @@ func appendMapKey(m *d2ast.Map, mk *d2ast.Key) { } } +func prependMapKey(m *d2ast.Map, mk *d2ast.Key) { + appendMapKey(m, mk) + m.Nodes = append([]d2ast.MapNodeBox{m.Nodes[len(m.Nodes)-1]}, m.Nodes[:len(m.Nodes)-1]...) +} + func Delete(g *d2graph.Graph, boardPath []string, key string) (_ *d2graph.Graph, err error) { defer xdefer.Errorf(&err, "failed to delete %#v", key) @@ -885,7 +891,7 @@ func Delete(g *d2graph.Graph, boardPath []string, key string) (_ *d2graph.Graph, } } } else { - appendUniqueMapKey(baseAST, mk) + prependMapKey(baseAST, mk) } if len(boardPath) > 0 { replaced := ReplaceBoardNode(g.AST, baseAST, boardPath) @@ -926,7 +932,7 @@ func Delete(g *d2graph.Graph, boardPath []string, key string) (_ *d2graph.Graph, return nil, err } } else { - appendUniqueMapKey(baseAST, mk) + prependMapKey(baseAST, mk) } if len(boardPath) > 0 { diff --git a/d2oracle/edit_test.go b/d2oracle/edit_test.go index a3127cf59..f942fc3f9 100644 --- a/d2oracle/edit_test.go +++ b/d2oracle/edit_test.go @@ -6934,9 +6934,10 @@ scenarios: { scenarios: { x: { + a: null + b c - a: null } } `, @@ -6960,9 +6961,10 @@ scenarios: { scenarios: { x: { + (a -> b)[0]: null + b c - (a -> b)[0]: null } } `, diff --git a/testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json b/testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json index 6672e7686..3ec90d504 100644 --- a/testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json +++ b/testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json @@ -3,7 +3,7 @@ "name": "", "isFolderOnly": false, "ast": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,0:0:0-9:0:68", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,0:0:0-10:0:69", "nodes": [ { "map_key": { @@ -53,7 +53,7 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,2:0:8-8:1:67", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,2:0:8-9:1:68", "key": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,2:0:8-2:9:17", "path": [ @@ -73,11 +73,11 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,2:11:19-8:1:67", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,2:11:19-9:1:68", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,3:2:23-7:3:65", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,3:2:23-8:3:66", "key": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,3:2:23-3:3:24", "path": [ @@ -97,17 +97,72 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,3:5:26-7:3:65", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,3:5:26-8:3:66", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:5:33", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:21:49", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:5:33-4:11:39", + "src": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:5:33-4:6:34", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:5:33-4:6:34", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:10:38-4:11:39", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:10:38-4:11:39", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "edge_index": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:12:40-4:15:43", + "int": 0, + "glob": false + }, + "primary": {}, + "value": { + "null": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:17:45-4:21:49" + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:55-6:5:56", "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:5:33", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:55-6:5:56", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:5:33", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:55-6:5:56", "value": [ { "string": "b", @@ -124,13 +179,13 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,5:4:38-5:5:39", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,7:4:61-7:5:62", "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,5:4:38-5:5:39", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,7:4:61-7:5:62", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,5:4:38-5:5:39", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,7:4:61-7:5:62", "value": [ { "string": "c", @@ -144,61 +199,6 @@ "primary": {}, "value": {} } - }, - { - "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:44-6:21:61", - "edges": [ - { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:5:45-6:11:51", - "src": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:5:45-6:6:46", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:5:45-6:6:46", - "value": [ - { - "string": "a", - "raw_string": "a" - } - ] - } - } - ] - }, - "src_arrow": "", - "dst": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:10:50-6:11:51", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:10:50-6:11:51", - "value": [ - { - "string": "b", - "raw_string": "b" - } - ] - } - } - ] - }, - "dst_arrow": ">" - } - ], - "edge_index": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:12:52-6:15:55", - "int": 0, - "glob": false - }, - "primary": {}, - "value": { - "null": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:17:57-6:21:61" - } - } - } } ] } @@ -530,11 +530,11 @@ }, { "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:5:33", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:55-6:5:56", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,4:4:32-4:5:33", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,6:4:55-6:5:56", "value": [ { "string": "b", @@ -575,11 +575,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,5:4:38-5:5:39", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,7:4:61-7:5:62", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,5:4:38-5:5:39", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-edge-inherited.d2,7:4:61-7:5:62", "value": [ { "string": "c", diff --git a/testdata/d2oracle/TestDelete/scenarios-inherited.exp.json b/testdata/d2oracle/TestDelete/scenarios-inherited.exp.json index 1ce389a36..080c437d4 100644 --- a/testdata/d2oracle/TestDelete/scenarios-inherited.exp.json +++ b/testdata/d2oracle/TestDelete/scenarios-inherited.exp.json @@ -3,7 +3,7 @@ "name": "", "isFolderOnly": false, "ast": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,0:0:0-9:0:53", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,0:0:0-10:0:54", "nodes": [ { "map_key": { @@ -30,7 +30,7 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,2:0:3-8:1:52", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,2:0:3-9:1:53", "key": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,2:0:3-2:9:12", "path": [ @@ -50,11 +50,11 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,2:11:14-8:1:52", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,2:11:14-9:1:53", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,3:2:18-7:3:50", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,3:2:18-8:3:51", "key": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,3:2:18-3:3:19", "path": [ @@ -74,17 +74,44 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,3:5:21-7:3:50", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,3:5:21-8:3:51", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:5:28", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:11:34", "key": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:5:28", "path": [ { "unquoted_string": { "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:5:28", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "null": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:7:30-4:11:34" + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:40-6:5:41", + "key": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:40-6:5:41", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:40-6:5:41", "value": [ { "string": "b", @@ -101,13 +128,13 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,5:4:33-5:5:34", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,7:4:46-7:5:47", "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,5:4:33-5:5:34", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,7:4:46-7:5:47", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,5:4:33-5:5:34", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,7:4:46-7:5:47", "value": [ { "string": "c", @@ -121,33 +148,6 @@ "primary": {}, "value": {} } - }, - { - "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:39-6:11:46", - "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:39-6:5:40", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:39-6:5:40", - "value": [ - { - "string": "a", - "raw_string": "a" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "null": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:7:42-6:11:46" - } - } - } } ] } @@ -316,11 +316,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:5:28", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:40-6:5:41", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,4:4:27-4:5:28", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,6:4:40-6:5:41", "value": [ { "string": "b", @@ -361,11 +361,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,5:4:33-5:5:34", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,7:4:46-7:5:47", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,5:4:33-5:5:34", + "range": "d2/testdata/d2oracle/TestDelete/scenarios-inherited.d2,7:4:46-7:5:47", "value": [ { "string": "c",