fix d2oracle.set on imported edge

This commit is contained in:
Alexander Wang 2024-02-09 11:49:25 -08:00
parent 3129df1c02
commit 706951b85b
No known key found for this signature in database
GPG key ID: 6A82C36A56162F42
3 changed files with 15 additions and 37 deletions

View file

@ -476,14 +476,14 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string)
appendMapKey(scope, mk)
return nil
}
// TODO what if the edge is imported, how does this work?
var ok bool
edge, ok = obj.HasEdge(mk)
if !ok {
return errors.New("edge not found")
}
imported = IsImportedEdge(baseAST, edge)
refs := edge.References
if baseAST != g.AST {
if baseAST != g.AST || imported {
refs = getWriteableEdgeRefs(edge, baseAST)
}
onlyInChain := true

View file

@ -2181,10 +2181,10 @@ layers: {
fsTexts: map[string]string{
"yo.d2": `a -> b`,
},
key: `(a -> b).style.stroke`,
key: `(a -> b)[0].style.stroke`,
value: go2.Pointer(`red`),
exp: `...@yo
(a -> b).style.stroke: red
(a -> b)[0].style.stroke: red
`,
},
}

View file

@ -3,7 +3,7 @@
"name": "",
"isFolderOnly": false,
"ast": {
"range": "index.d2,0:0:0-2:0:34",
"range": "index.d2,0:0:0-2:0:37",
"nodes": [
{
"import": {
@ -27,7 +27,7 @@
},
{
"map_key": {
"range": "index.d2,1:0:7-1:26:33",
"range": "index.d2,1:0:7-1:29:36",
"edges": [
{
"range": "index.d2,1:1:8-1:7:14",
@ -67,12 +67,17 @@
"dst_arrow": ">"
}
],
"edge_index": {
"range": "index.d2,1:8:15-1:11:18",
"int": 0,
"glob": false
},
"edge_key": {
"range": "index.d2,1:9:16-1:21:28",
"range": "index.d2,1:12:19-1:24:31",
"path": [
{
"unquoted_string": {
"range": "index.d2,1:9:16-1:14:21",
"range": "index.d2,1:12:19-1:17:24",
"value": [
{
"string": "style",
@ -83,7 +88,7 @@
},
{
"unquoted_string": {
"range": "index.d2,1:15:22-1:21:28",
"range": "index.d2,1:18:25-1:24:31",
"value": [
{
"string": "stroke",
@ -97,7 +102,7 @@
"primary": {},
"value": {
"unquoted_string": {
"range": "index.d2,1:23:30-1:26:33",
"range": "index.d2,1:26:33-1:29:36",
"value": [
{
"string": "red",
@ -142,34 +147,7 @@
"references": [
{
"map_key_edge_index": 0
}
],
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
},
{
"index": 1,
"isCurve": false,
"src_arrow": false,
"dst_arrow": true,
"references": [
{
"map_key_edge_index": 0
}