dont modify ast when modifying links

This commit is contained in:
Alexander Wang 2023-08-13 10:15:13 -07:00
parent 9997be16f1
commit 5afc712455
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
7 changed files with 36 additions and 26 deletions

View file

@ -580,14 +580,14 @@ func (c *compiler) _compileField(f *Field, refctx *RefContext) {
} }
} }
} else if refctx.Key.Value.ScalarBox().Unbox() != nil { } else if refctx.Key.Value.ScalarBox().Unbox() != nil {
// If the link is a board, we need to transform it into an absolute path.
if f.Name == "link" {
c.compileLink(refctx)
}
f.Primary_ = &Scalar{ f.Primary_ = &Scalar{
parent: f, parent: f,
Value: refctx.Key.Value.ScalarBox().Unbox(), Value: refctx.Key.Value.ScalarBox().Unbox(),
} }
// If the link is a board, we need to transform it into an absolute path.
if f.Name == "link" {
c.compileLink(f, refctx)
}
} }
} }
@ -624,7 +624,7 @@ func (c *compiler) updateLinks(m *Map) {
} }
} }
func (c *compiler) compileLink(refctx *RefContext) { func (c *compiler) compileLink(f *Field, refctx *RefContext) {
val := refctx.Key.Value.ScalarBox().Unbox().ScalarString() val := refctx.Key.Value.ScalarBox().Unbox().ScalarString()
link, err := d2parser.ParseKey(val) link, err := d2parser.ParseKey(val)
if err != nil { if err != nil {
@ -683,7 +683,7 @@ func (c *compiler) compileLink(refctx *RefContext) {
// Create the absolute path by appending scope path with value specified // Create the absolute path by appending scope path with value specified
scopeIDA = append(scopeIDA, linkIDA...) scopeIDA = append(scopeIDA, linkIDA...)
kp := d2ast.MakeKeyPath(scopeIDA) kp := d2ast.MakeKeyPath(scopeIDA)
refctx.Key.Value = d2ast.MakeValueBox(d2ast.FlatUnquotedString(d2format.Format(kp))) f.Primary_.Value = d2ast.FlatUnquotedString(d2format.Format(kp))
} }
func (c *compiler) compileEdges(refctx *RefContext) { func (c *compiler) compileEdges(refctx *RefContext) {

View file

@ -62,10 +62,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-key-nested.d2,1:10:15-1:18:23",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "layers.x",
"raw_string": "layers.x"
} }
] ]
} }

View file

@ -71,10 +71,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:15:46-1:25:56",
"value": [ "value": [
{ {
"string": "root.layers.cat" "string": "layers.cat",
"raw_string": "layers.cat"
} }
] ]
} }

View file

@ -38,10 +38,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:8:8-0:25:25",
"value": [ "value": [
{ {
"string": "root.layers.x.layers.x" "string": "layers.x.layers.x",
"raw_string": "layers.x.layers.x"
} }
] ]
} }

View file

@ -38,10 +38,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:8:8-0:16:16",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "layers.x",
"raw_string": "layers.x"
} }
] ]
} }

View file

@ -180,10 +180,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:20:69-6:32:81",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "_._.layers.x",
"raw_string": "_._.layers.x"
} }
] ]
} }
@ -223,10 +224,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:18:100-7:19:101",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "_",
"raw_string": "_"
} }
] ]
} }

View file

@ -88,10 +88,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "index.d2,0:8:8-0:16:16",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "layers.x",
"raw_string": "layers.x"
} }
] ]
} }
@ -176,10 +177,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "index.d2,0:8:8-0:16:16",
"value": [ "value": [
{ {
"string": "root.layers.x" "string": "layers.x",
"raw_string": "layers.x"
} }
] ]
} }
@ -285,10 +287,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "x.d2,0:8:8-0:16:16",
"value": [ "value": [
{ {
"string": "root.layers.y" "string": "layers.y",
"raw_string": "layers.y"
} }
] ]
} }
@ -373,10 +376,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"unquoted_string": { "unquoted_string": {
"range": ",0:0:0-0:0:0", "range": "x.d2,0:8:8-0:16:16",
"value": [ "value": [
{ {
"string": "root.layers.y" "string": "layers.y",
"raw_string": "layers.y"
} }
] ]
} }