prepend instead

This commit is contained in:
Alexander Wang 2023-06-28 14:04:44 -07:00
parent 44b76c371f
commit 6e972c3472
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
4 changed files with 122 additions and 114 deletions

View file

@ -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 {

View file

@ -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
}
}
`,

View file

@ -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",

View file

@ -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",