fix delete

This commit is contained in:
Alexander Wang 2023-02-22 16:53:01 -08:00
parent 5f3f5da704
commit db1e17a742
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
3 changed files with 294 additions and 229 deletions

View file

@ -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 { if obj.Attributes.Shape.Value == d2target.ShapeSQLTable || obj.Attributes.Shape.Value == d2target.ShapeClass {
ref.MapKey.Value.Map = nil ref.MapKey.Value.Map = nil
ref.MapKey.Primary = ref.MapKey.Value.ScalarBox()
} else if len(withoutSpecial) == 0 { } else if len(withoutSpecial) == 0 {
hoistRefChildren(g, key, ref) hoistRefChildren(g, key, ref)
deleteFromMap(ref.Scope, ref.MapKey) deleteFromMap(ref.Scope, ref.MapKey)

View file

@ -4804,25 +4804,35 @@ A -> B
{ {
name: "chaos_1", name: "chaos_1",
text: `isfp: { text: `cm: {shape: cylinder}
zmzbsx: { cm <-> cm: {source-arrowhead.shape: cf-one-required}
sxmqb: nqnej { mt: z
shape: step cdpdxz
dvdq: sxyjsyk {shape: hexagon}
}
}
}
isfp -- isfp
`,
key: `isfp.zmzbsx`,
exp: `isfp: { bymdyk: hdzuj {shape: class}
sxmqb: nqnej {
shape: step bymdyk <-> bymdyk
dvdq: sxyjsyk {shape: hexagon} 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
`, `,
}, },
} }

View file

@ -2,21 +2,21 @@
"graph": { "graph": {
"name": "", "name": "",
"ast": { "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": [ "nodes": [
{ {
"map_key": { "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": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
@ -26,51 +26,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "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": [ "nodes": [
{ {
"map_key": { "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": { "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": [ "path": [
{ {
"unquoted_string": { "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"
}
]
}
}
]
},
"primary": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:9:17-1:14:22",
"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": [ "value": [
{ {
"string": "shape", "string": "shape",
@ -84,88 +50,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:11:36-2:15:40", "range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:12:12-0:20:20",
"value": [ "value": [
{ {
"string": "step", "string": "cylinder",
"raw_string": "step" "raw_string": "cylinder"
}
]
}
}
}
},
{
"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"
}
]
}
}
}
}
]
}
}
}
} }
] ]
} }
@ -179,47 +68,176 @@
}, },
{ {
"map_key": { "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": [ "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": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
} }
] ]
}, },
"src_arrow": "", "src_arrow": "<",
"dst": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
} }
] ]
}, },
"dst_arrow": "" "dst_arrow": ">"
} }
], ],
"primary": {}, "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": {} "value": {}
} }
} }
@ -260,8 +278,24 @@
"height": 0 "height": 0
}, },
"isCurve": false, "isCurve": false,
"src_arrow": false, "src_arrow": true,
"dst_arrow": false, "srcArrowhead": {
"label": {
"value": ""
},
"style": {},
"near_key": null,
"shape": {
"value": "cf-one-required"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"dst_arrow": true,
"references": [ "references": [
{ {
"map_key_edge_index": 0 "map_key_edge_index": 0
@ -288,8 +322,8 @@
], ],
"objects": [ "objects": [
{ {
"id": "isfp", "id": "cm",
"id_val": "isfp", "id_val": "cm",
"label_dimensions": { "label_dimensions": {
"width": 0, "width": 0,
"height": 0 "height": 0
@ -297,15 +331,15 @@
"references": [ "references": [
{ {
"key": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
@ -317,15 +351,15 @@
}, },
{ {
"key": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
@ -337,15 +371,15 @@
}, },
{ {
"key": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "isfp", "string": "cm",
"raw_string": "isfp" "raw_string": "cm"
} }
] ]
} }
@ -354,11 +388,78 @@
}, },
"key_path_index": 0, "key_path_index": 0,
"map_key_edge_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": { "attributes": {
"label": { "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": {}, "style": {},
"near_key": null, "near_key": null,
@ -375,8 +476,8 @@
"zIndex": 0 "zIndex": 0
}, },
{ {
"id": "sxmqb", "id": "cdpdxz",
"id_val": "sxmqb", "id_val": "cdpdxz",
"label_dimensions": { "label_dimensions": {
"width": 0, "width": 0,
"height": 0 "height": 0
@ -384,15 +485,15 @@
"references": [ "references": [
{ {
"key": { "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": [ "path": [
{ {
"unquoted_string": { "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": [ "value": [
{ {
"string": "sxmqb", "string": "cdpdxz",
"raw_string": "sxmqb" "raw_string": "cdpdxz"
} }
] ]
} }
@ -405,59 +506,12 @@
], ],
"attributes": { "attributes": {
"label": { "label": {
"value": "nqnej" "value": "cdpdxz"
}, },
"style": {}, "style": {},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "step" "value": "rectangle"
},
"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"
}, },
"direction": { "direction": {
"value": "" "value": ""