prepend instead
This commit is contained in:
parent
44b76c371f
commit
6e972c3472
4 changed files with 122 additions and 114 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
`,
|
||||
|
|
|
|||
140
testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json
generated
vendored
140
testdata/d2oracle/TestDelete/scenarios-edge-inherited.exp.json
generated
vendored
|
|
@ -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",
|
||||
|
|
|
|||
80
testdata/d2oracle/TestDelete/scenarios-inherited.exp.json
generated
vendored
80
testdata/d2oracle/TestDelete/scenarios-inherited.exp.json
generated
vendored
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in a new issue