From db1e17a74291b133240b0feb0d06533735c2dbfd Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 22 Feb 2023 16:53:01 -0800 Subject: [PATCH] fix delete --- d2oracle/edit.go | 1 + d2oracle/edit_test.go | 44 +- testdata/d2oracle/TestDelete/chaos_1.exp.json | 478 ++++++++++-------- 3 files changed, 294 insertions(+), 229 deletions(-) diff --git a/d2oracle/edit.go b/d2oracle/edit.go index dd2c882c9..d189f4d0a 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -895,6 +895,7 @@ func deleteObject(g *d2graph.Graph, key *d2ast.KeyPath, obj *d2graph.Object) (*d }) if obj.Attributes.Shape.Value == d2target.ShapeSQLTable || obj.Attributes.Shape.Value == d2target.ShapeClass { ref.MapKey.Value.Map = nil + ref.MapKey.Primary = ref.MapKey.Value.ScalarBox() } else if len(withoutSpecial) == 0 { hoistRefChildren(g, key, ref) deleteFromMap(ref.Scope, ref.MapKey) diff --git a/d2oracle/edit_test.go b/d2oracle/edit_test.go index cc5f62ba5..f4c3d0ce4 100644 --- a/d2oracle/edit_test.go +++ b/d2oracle/edit_test.go @@ -4804,25 +4804,35 @@ A -> B { name: "chaos_1", - text: `isfp: { - zmzbsx: { - sxmqb: nqnej { - shape: step - dvdq: sxyjsyk {shape: hexagon} - } - } -} -isfp -- isfp -`, - key: `isfp.zmzbsx`, + text: `cm: {shape: cylinder} +cm <-> cm: {source-arrowhead.shape: cf-one-required} +mt: z +cdpdxz - exp: `isfp: { - sxmqb: nqnej { - shape: step - dvdq: sxyjsyk {shape: hexagon} - } +bymdyk: hdzuj {shape: class} + +bymdyk <-> bymdyk +cm + +cm <-> bymdyk: { + source-arrowhead.shape: cf-many-required + target-arrowhead.shape: arrow } -isfp -- isfp +bymdyk <-> cdpdxz + +bymdyk -> cm: nk { + target-arrowhead.shape: diamond + target-arrowhead.label: 1 +} +`, + key: `bymdyk`, + + exp: `cm: {shape: cylinder} +cm <-> cm: {source-arrowhead.shape: cf-one-required} +mt: z +cdpdxz + +cm `, }, } diff --git a/testdata/d2oracle/TestDelete/chaos_1.exp.json b/testdata/d2oracle/TestDelete/chaos_1.exp.json index bb520f631..8c4a7ec9f 100644 --- a/testdata/d2oracle/TestDelete/chaos_1.exp.json +++ b/testdata/d2oracle/TestDelete/chaos_1.exp.json @@ -2,21 +2,21 @@ "graph": { "name": "", "ast": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-7:0:95", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-8:0:94", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-5:1:81", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:21:21", "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } @@ -26,146 +26,35 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:6:6-5:0:80", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:4:4-0:20:20", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-4:3:79", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:20:20", "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:10:10", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:10:10", "value": [ { - "string": "sxmqb", - "raw_string": "sxmqb" + "string": "shape", + "raw_string": "shape" } ] } } ] }, - "primary": { + "primary": {}, + "value": { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:9:17-1:14:22", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:12:12-0:20:20", "value": [ { - "string": "nqnej", - "raw_string": "nqnej" - } - ] - } - }, - "value": { - "map": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:15:23-4:2:78", - "nodes": [ - { - "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:15:40", - "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:9:34", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:9:34", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:11:36-2:15:40", - "value": [ - { - "string": "step", - "raw_string": "step" - } - ] - } - } - } - }, - { - "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:34:75", - "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49", - "value": [ - { - "string": "dvdq", - "raw_string": "dvdq" - } - ] - } - } - ] - }, - "primary": { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:10:51-3:17:58", - "value": [ - { - "string": "sxyjsyk", - "raw_string": "sxyjsyk" - } - ] - } - }, - "value": { - "map": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:18:59-3:33:74", - "nodes": [ - { - "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:33:74", - "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:24:65", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:24:65", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:26:67-3:33:74", - "value": [ - { - "string": "hexagon", - "raw_string": "hexagon" - } - ] - } - } - } - } - ] - } - } - } + "string": "cylinder", + "raw_string": "cylinder" } ] } @@ -179,47 +68,176 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:52:74", "edges": [ { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:9:31", "src": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:5:87", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:3:25", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:4:86", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:2:24", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } } ] }, - "src_arrow": "", + "src_arrow": "<", "dst": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:7:89-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:6:28-1:9:31", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:8:90-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:7:29-1:9:31", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } } ] }, - "dst_arrow": "" + "dst_arrow": ">" } ], "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:11:33-1:51:73", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:51:73", + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:34:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:28:50", + "value": [ + { + "string": "source-arrowhead", + "raw_string": "source-arrowhead" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:29:51-1:34:56", + "value": [ + { + "string": "shape", + "raw_string": "shape" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:36:58-1:51:73", + "value": [ + { + "string": "cf-one-required", + "raw_string": "cf-one-required" + } + ] + } + } + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:5:80", + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77", + "value": [ + { + "string": "mt", + "raw_string": "mt" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:79-2:5:80", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87", + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87", + "value": [ + { + "string": "cdpdxz", + "raw_string": "cdpdxz" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93", + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93", + "value": [ + { + "string": "cm", + "raw_string": "cm" + } + ] + } + } + ] + }, + "primary": {}, "value": {} } } @@ -260,8 +278,24 @@ "height": 0 }, "isCurve": false, - "src_arrow": false, - "dst_arrow": false, + "src_arrow": true, + "srcArrowhead": { + "label": { + "value": "" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "cf-one-required" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "dst_arrow": true, "references": [ { "map_key_edge_index": 0 @@ -288,8 +322,8 @@ ], "objects": [ { - "id": "isfp", - "id_val": "isfp", + "id": "cm", + "id_val": "cm", "label_dimensions": { "width": 0, "height": 0 @@ -297,15 +331,15 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } @@ -317,15 +351,15 @@ }, { "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:5:87", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:3:25", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:4:86", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:2:24", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } @@ -337,15 +371,15 @@ }, { "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:7:89-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:6:28-1:9:31", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:8:90-6:12:94", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:7:29-1:9:31", "value": [ { - "string": "isfp", - "raw_string": "isfp" + "string": "cm", + "raw_string": "cm" } ] } @@ -354,11 +388,78 @@ }, "key_path_index": 0, "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93", + "value": [ + { + "string": "cm", + "raw_string": "cm" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 } ], "attributes": { "label": { - "value": "isfp" + "value": "cm" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "cylinder" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "mt", + "id_val": "mt", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77", + "value": [ + { + "string": "mt", + "raw_string": "mt" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "z" }, "style": {}, "near_key": null, @@ -375,8 +476,8 @@ "zIndex": 0 }, { - "id": "sxmqb", - "id_val": "sxmqb", + "id": "cdpdxz", + "id_val": "cdpdxz", "label_dimensions": { "width": 0, "height": 0 @@ -384,15 +485,15 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15", + "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87", "value": [ { - "string": "sxmqb", - "raw_string": "sxmqb" + "string": "cdpdxz", + "raw_string": "cdpdxz" } ] } @@ -405,59 +506,12 @@ ], "attributes": { "label": { - "value": "nqnej" + "value": "cdpdxz" }, "style": {}, "near_key": null, "shape": { - "value": "step" - }, - "direction": { - "value": "" - }, - "constraint": { - "value": "" - } - }, - "zIndex": 0 - }, - { - "id": "dvdq", - "id_val": "dvdq", - "label_dimensions": { - "width": 0, - "height": 0 - }, - "references": [ - { - "key": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49", - "value": [ - { - "string": "dvdq", - "raw_string": "dvdq" - } - ] - } - } - ] - }, - "key_path_index": 0, - "map_key_edge_index": -1 - } - ], - "attributes": { - "label": { - "value": "sxyjsyk" - }, - "style": {}, - "near_key": null, - "shape": { - "value": "hexagon" + "value": "rectangle" }, "direction": { "value": ""