diff --git a/d2oracle/edit.go b/d2oracle/edit.go index 9404848a8..17ea7caae 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -500,7 +500,11 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string) refs = GetWriteableEdgeRefs(edge, baseAST) } onlyInChain := true - for _, ref := range refs { + var earliestRef *d2graph.EdgeReference + for i, ref := range refs { + if earliestRef == nil || ref.MapKey.Range.Before(earliestRef.MapKey.Range) { + earliestRef = &refs[i] + } // TODO merge flat edgekeys // E.g. this can group into a map // (y -> z)[0].style.opacity: 0.4 @@ -526,7 +530,15 @@ func _set(g *d2graph.Graph, baseAST *d2ast.Map, key string, tag, value *string) } } if onlyInChain { - appendMapKey(scope, mk) + if earliestRef != nil && scope.Range.Before(earliestRef.MapKey.Range) { + // Since the original mk was trimmed to common, we set to the edge that + // the ref's scope is in + mk.Edges[0] = earliestRef.Edge + // We can't reference an edge before it's been defined + earliestRef.Scope.InsertAfter(earliestRef.MapKey, mk) + } else { + appendMapKey(scope, mk) + } return nil } attrs = edge.Attributes diff --git a/d2oracle/edit_test.go b/d2oracle/edit_test.go index 3bb567b13..51046b753 100644 --- a/d2oracle/edit_test.go +++ b/d2oracle/edit_test.go @@ -2454,6 +2454,54 @@ a -> b exp: `(* -> *)[*].style.stroke: red a -> b: {style.stroke: green} a -> b +`, + }, + { + name: "nested-edge-chained/1", + + text: `a: { + b: { + c + } +} + +x -> a.b -> a.b.c +`, + key: `(a.b -> a.b.c)[0].style.stroke`, + value: go2.Pointer(`green`), + exp: `a: { + b: { + c + } +} + +x -> a.b -> a.b.c +(a.b -> a.b.c)[0].style.stroke: green +`, + }, + { + name: "nested-edge-chained/2", + + text: `z: { + a: { + b: { + c + } + } + x -> a.b -> a.b.c +} +`, + key: `(z.a.b -> z.a.b.c)[0].style.stroke`, + value: go2.Pointer(`green`), + exp: `z: { + a: { + b: { + c + } + } + x -> a.b -> a.b.c + (a.b -> a.b.c)[0].style.stroke: green +} `, }, } diff --git a/testdata/d2oracle/TestSet/nested-edge-chained.exp.json b/testdata/d2oracle/TestSet/nested-edge-chained.exp.json new file mode 100644 index 000000000..15c90b207 --- /dev/null +++ b/testdata/d2oracle/TestSet/nested-edge-chained.exp.json @@ -0,0 +1,1053 @@ +{ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-8:0:81", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-4:1:23", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:3:3-4:1:23", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:2:7-3:3:21", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:2:7-1:3:8", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:5:10-3:3:21", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,2:4:16-2:5:17", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,2:4:16-2:5:17", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:17:42", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:8:33", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:1:26", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:1:26", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:17:42", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:0:43-7:37:80", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:13:56", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "edge_index": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:14:57-7:17:60", + "int": 0, + "glob": false + }, + "edge_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:18:61-7:30:73", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:18:61-7:23:66", + "value": [ + { + "string": "style", + "raw_string": "style" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:24:67-7:30:73", + "value": [ + { + "string": "stroke", + "raw_string": "stroke" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:32:75-7:37:80", + "value": [ + { + "string": "green", + "raw_string": "green" + } + ] + } + } + } + } + ] + }, + "root": { + "id": "", + "id_val": "", + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + "edges": [ + { + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "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": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 1 + }, + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": { + "stroke": { + "value": "green" + } + }, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ], + "objects": [ + { + "id": "a", + "id_val": "a", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "a" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "b", + "id_val": "b", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,1:2:7-1:3:8", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "b" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "c", + "id_val": "c", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,2:4:16-2:5:17", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "c" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "x", + "id_val": "x", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:1:26", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained.d2,6:0:25-6:1:26", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "x" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ] + }, + "err": "" +} diff --git a/testdata/d2oracle/TestSet/nested-edge-chained/1.exp.json b/testdata/d2oracle/TestSet/nested-edge-chained/1.exp.json new file mode 100644 index 000000000..892a665c1 --- /dev/null +++ b/testdata/d2oracle/TestSet/nested-edge-chained/1.exp.json @@ -0,0 +1,1053 @@ +{ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-8:0:81", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-4:1:23", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:3:3-4:1:23", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:2:7-3:3:21", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:2:7-1:3:8", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:5:10-3:3:21", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,2:4:16-2:5:17", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,2:4:16-2:5:17", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:17:42", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:8:33", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:1:26", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:1:26", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:17:42", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:0:43-7:37:80", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:13:56", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "edge_index": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:14:57-7:17:60", + "int": 0, + "glob": false + }, + "edge_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:18:61-7:30:73", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:18:61-7:23:66", + "value": [ + { + "string": "style", + "raw_string": "style" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:24:67-7:30:73", + "value": [ + { + "string": "stroke", + "raw_string": "stroke" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:32:75-7:37:80", + "value": [ + { + "string": "green", + "raw_string": "green" + } + ] + } + } + } + } + ] + }, + "root": { + "id": "", + "id_val": "", + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + "edges": [ + { + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "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": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 1 + }, + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": { + "stroke": { + "value": "green" + } + }, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ], + "objects": [ + { + "id": "a", + "id_val": "a", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "a" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "b", + "id_val": "b", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,1:2:7-1:3:8", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:8:33", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:5:30-6:6:31", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:7:32-6:8:33", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:4:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:1:44-7:2:45", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:3:46-7:4:47", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "b" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "c", + "id_val": "c", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,2:4:16-2:5:17", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:17:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:12:37-6:13:38", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:14:39-6:15:40", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:16:41-6:17:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:13:56", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:8:51-7:9:52", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:10:53-7:11:54", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,7:12:55-7:13:56", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "c" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "x", + "id_val": "x", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:1:26", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/1.d2,6:0:25-6:1:26", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "x" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ] + }, + "err": "" +} diff --git a/testdata/d2oracle/TestSet/nested-edge-chained/2.exp.json b/testdata/d2oracle/TestSet/nested-edge-chained/2.exp.json new file mode 100644 index 000000000..162b3f2a5 --- /dev/null +++ b/testdata/d2oracle/TestSet/nested-edge-chained/2.exp.json @@ -0,0 +1,1127 @@ +{ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-9:0:101", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-8:1:100", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:3:3-8:1:100", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:2:7-5:3:38", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:2:7-1:3:8", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:5:10-5:3:38", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:4:16-4:5:34", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:4:16-2:5:17", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:7:19-4:5:34", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,3:6:27-3:7:28", + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,3:6:27-3:7:28", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,3:6:27-3:7:28", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:19:58", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:10:49", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:3:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:3:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:19:58", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:19:58", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:15:54", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:16:55-6:17:56", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:18:57-6:19:58", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:2:61-7:39:98", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:15:74", + "src": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:6:65", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:4:63", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:5:64-7:6:65", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:15:74", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:11:70", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:12:71-7:13:72", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:14:73-7:15:74", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "edge_index": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:16:75-7:19:78", + "int": 0, + "glob": false + }, + "edge_key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:20:79-7:32:91", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:20:79-7:25:84", + "value": [ + { + "string": "style", + "raw_string": "style" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:26:85-7:32:91", + "value": [ + { + "string": "stroke", + "raw_string": "stroke" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:34:93-7:39:98", + "value": [ + { + "string": "green", + "raw_string": "green" + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + "root": { + "id": "", + "id_val": "", + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + "edges": [ + { + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "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": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 1 + }, + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": { + "stroke": { + "value": "green" + } + }, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ], + "objects": [ + { + "id": "z", + "id_val": "z", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "z" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "a", + "id_val": "a", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:2:7-1:3:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,1:2:7-1:3:8", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:19:58", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:15:54", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:16:55-6:17:56", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:18:57-6:19:58", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:6:65", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:4:63", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:5:64-7:6:65", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:15:74", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:11:70", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:12:71-7:13:72", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:14:73-7:15:74", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "a" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "b", + "id_val": "b", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:4:16-2:5:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,2:4:16-2:5:17", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:10:49", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:7:46-6:8:47", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:9:48-6:10:49", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:19:58", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:15:54", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:16:55-6:17:56", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:18:57-6:19:58", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:6:65", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:3:62-7:4:63", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:5:64-7:6:65", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:15:74", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:11:70", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:12:71-7:13:72", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:14:73-7:15:74", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "b" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "c", + "id_val": "c", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,3:6:27-3:7:28", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,3:6:27-3:7:28", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:19:58", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:14:53-6:15:54", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:16:55-6:17:56", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:18:57-6:19:58", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 1 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:15:74", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:10:69-7:11:70", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:12:71-7:13:72", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,7:14:73-7:15:74", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 2, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "c" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "x", + "id_val": "x", + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:3:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestSet/nested-edge-chained/2.d2,6:2:41-6:3:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "x" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ] + }, + "err": "" +}