From cc1aad2223e4b8dde8865a8c547c9ea45b2ec1cd Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Fri, 21 Mar 2025 21:27:55 -0600 Subject: [PATCH] next --- ci/release/changelogs/next.md | 1 + d2compiler/compile_test.go | 3 +- .../TestCompile/glob-spread-vars/2.exp.json | 160 ++++++++++++++---- 3 files changed, 132 insertions(+), 32 deletions(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 2c16f2451..bc2ea0d5c 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -24,6 +24,7 @@ - fixes support for `center` in `d2-config` [#2360](https://github.com/terrastruct/d2/pull/2360) - fixes panic when comment lines appear in arrays [#2378](https://github.com/terrastruct/d2/pull/2378) - fixes inconsistencies when objects were double quoted [#2390](https://github.com/terrastruct/d2/pull/2390) + - fixes globs not applying to spread substitutions [#2426](https://github.com/terrastruct/d2/issues/2426) - CLI: fetch and render remote images of mimetype octet-stream correctly [#2370](https://github.com/terrastruct/d2/pull/2370) - d2js: handle unicode characters [#2393](https://github.com/terrastruct/d2/pull/2393) diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index 3bc1fd127..ccd042fad 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -3164,6 +3164,7 @@ a: { text: `vars: { b: { 1 + 2 } } @@ -3175,7 +3176,7 @@ a: { ok `, assertions: func(t *testing.T, g *d2graph.Graph) { - assert.Equal(t, 1, len(g.Edges)) + assert.Equal(t, 2, len(g.Edges)) }, }, { diff --git a/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json b/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json index 4dd91eb61..52b3ca111 100644 --- a/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json +++ b/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json @@ -3,11 +3,11 @@ "name": "", "isFolderOnly": false, "ast": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:0:0-12:0:62", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:0:0-13:0:66", "nodes": [ { "map_key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:0:0-4:1:26", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:0:0-5:1:30", "key": { "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:0:0-0:4:4", "path": [ @@ -27,11 +27,11 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:6:6-4:1:26", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,0:6:6-5:1:30", "nodes": [ { "map_key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,1:2:10-3:3:24", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,1:2:10-4:3:28", "key": { "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,1:2:10-1:3:11", "path": [ @@ -51,7 +51,7 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,1:5:13-3:3:24", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,1:5:13-4:3:28", "nodes": [ { "map_key": { @@ -75,6 +75,29 @@ "primary": {}, "value": {} } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,3:2:23-3:3:24", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,3:2:23-3:3:24", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,3:2:23-3:3:24", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } } ] } @@ -88,13 +111,13 @@ }, { "map_key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:0:28-9:1:57", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:0:32-10:1:61", "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:0:28-6:1:29", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:0:32-7:1:33", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:0:28-6:1:29", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:0:32-7:1:33", "value": [ { "string": "a", @@ -108,16 +131,16 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:3:31-9:1:57", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:3:35-10:1:61", "nodes": [ { "substitution": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:2:35-7:9:42", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:2:39-8:9:46", "spread": true, "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:7:40-7:8:41", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:7:44-8:8:45", "value": [ { "string": "b", @@ -131,16 +154,16 @@ }, { "map_key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:2:45-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:2:49-9:12:59", "edges": [ { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:2:45-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:2:49-9:12:59", "src": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:2:45-8:4:47", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:2:49-9:4:51", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:2:45-8:4:47", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:2:49-9:4:51", "value": [ { "string": "**", @@ -158,11 +181,11 @@ }, "src_arrow": "", "dst": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:12:59", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:9:52", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:9:56", "value": [ { "string": "_", @@ -173,7 +196,7 @@ }, { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:10:53-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:10:57-9:12:59", "value": [ { "string": "ok", @@ -198,13 +221,13 @@ }, { "map_key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,11:0:59-11:2:61", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,12:0:63-12:2:65", "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,11:0:59-11:2:61", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,12:0:63-12:2:65", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,11:0:59-11:2:61", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,12:0:63-12:2:65", "value": [ { "string": "ok", @@ -245,6 +268,36 @@ "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, @@ -283,11 +336,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:0:28-6:1:29", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:0:32-7:1:33", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,6:0:28-6:1:29", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,7:0:32-7:1:33", "value": [ { "string": "a", @@ -367,17 +420,62 @@ }, "zIndex": 0 }, + { + "id": "2", + "id_val": "2", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,3:2:23-3:3:24", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,3:2:23-3:3:24", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "2" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, { "id": "ok", "id_val": "ok", "references": [ { "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:12:59", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:9:52", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:9:56", "value": [ { "string": "_", @@ -388,7 +486,7 @@ }, { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:10:53-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:10:57-9:12:59", "value": [ { "string": "ok", @@ -404,11 +502,11 @@ }, { "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,11:0:59-11:2:61", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,12:0:63-12:2:65", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,11:0:59-11:2:61", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,12:0:63-12:2:65", "value": [ { "string": "ok", @@ -424,11 +522,11 @@ }, { "key": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:12:59", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:8:51-8:9:52", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:8:55-9:9:56", "value": [ { "string": "_", @@ -439,7 +537,7 @@ }, { "unquoted_string": { - "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,8:10:53-8:12:55", + "range": "d2/testdata/d2compiler/TestCompile/glob-spread-vars/2.d2,9:10:57-9:12:59", "value": [ { "string": "ok",