d2parser: Allow .d2 extension on quoted import strings
This commit is contained in:
parent
89e1e324d7
commit
c325e94cad
8 changed files with 108 additions and 39 deletions
|
|
@ -619,14 +619,22 @@ x <= y
|
|||
exp: `x <- = y
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "import",
|
||||
in: `
|
||||
{
|
||||
name: "import/1",
|
||||
in: `
|
||||
x: @file.d2
|
||||
`,
|
||||
exp: `x: @file
|
||||
exp: `x: @file
|
||||
`,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "import/2",
|
||||
in: `
|
||||
x: @file."d2"
|
||||
`,
|
||||
exp: `x: @file."d2"
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
|
|
|||
|
|
@ -1704,7 +1704,7 @@ func (p *parser) parseImport(spread bool) *d2ast.Import {
|
|||
}
|
||||
|
||||
k := p.parseKey()
|
||||
if k.Path[0].UnquotedString != nil && len(k.Path) > 1 && k.Path[1].Unbox().ScalarString() == "d2" {
|
||||
if k.Path[0].UnquotedString != nil && len(k.Path) > 1 && k.Path[1].UnquotedString != nil && k.Path[1].Unbox().ScalarString() == "d2" {
|
||||
k.Path = append(k.Path[:1], k.Path[2:]...)
|
||||
}
|
||||
if k != nil {
|
||||
|
|
|
|||
|
|
@ -433,6 +433,24 @@ func testImport(t *testing.T) {
|
|||
assert.Equal(t, "file", imp.Path[0].Unbox().ScalarString())
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "...@\"file\".d2",
|
||||
assert: func(t testing.TB, ast *d2ast.Map, err error) {
|
||||
assert.Success(t, err)
|
||||
assert.True(t, ast.Nodes[0].Import.Spread)
|
||||
assert.Equal(t, "file", ast.Nodes[0].Import.Path[0].Unbox().ScalarString())
|
||||
assert.Equal(t, "d2", ast.Nodes[0].Import.Path[1].Unbox().ScalarString())
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "...@file.\"d2\"",
|
||||
assert: func(t testing.TB, ast *d2ast.Map, err error) {
|
||||
assert.Success(t, err)
|
||||
assert.True(t, ast.Nodes[0].Import.Spread)
|
||||
assert.Equal(t, "file", ast.Nodes[0].Import.Path[0].Unbox().ScalarString())
|
||||
assert.Equal(t, "d2", ast.Nodes[0].Import.Path[1].Unbox().ScalarString())
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
runa(t, tca)
|
||||
|
|
|
|||
11
testdata/d2parser/TestParse/import/#01.exp.json
generated
vendored
11
testdata/d2parser/TestParse/import/#01.exp.json
generated
vendored
|
|
@ -37,17 +37,6 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#01.d2,0:9:9-0:11:11",
|
||||
"value": [
|
||||
{
|
||||
"string": "d2",
|
||||
"raw_string": "d2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
11
testdata/d2parser/TestParse/import/#02.exp.json
generated
vendored
11
testdata/d2parser/TestParse/import/#02.exp.json
generated
vendored
|
|
@ -17,17 +17,6 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#02.d2,0:9:9-0:11:11",
|
||||
"value": [
|
||||
{
|
||||
"string": "d2",
|
||||
"raw_string": "d2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
11
testdata/d2parser/TestParse/import/#03.exp.json
generated
vendored
11
testdata/d2parser/TestParse/import/#03.exp.json
generated
vendored
|
|
@ -41,17 +41,6 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#03.d2,0:13:13-0:15:15",
|
||||
"value": [
|
||||
{
|
||||
"string": "d2",
|
||||
"raw_string": "d2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
38
testdata/d2parser/TestParse/import/#04.exp.json
generated
vendored
Normal file
38
testdata/d2parser/TestParse/import/#04.exp.json
generated
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"ast": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#04.d2,0:0:0-0:13:13",
|
||||
"nodes": [
|
||||
{
|
||||
"import": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#04.d2,0:0:0-0:13:13",
|
||||
"spread": true,
|
||||
"path": [
|
||||
{
|
||||
"double_quoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#04.d2,0:4:4-0:10:10",
|
||||
"value": [
|
||||
{
|
||||
"string": "file",
|
||||
"raw_string": "file"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#04.d2,0:11:11-0:13:13",
|
||||
"value": [
|
||||
{
|
||||
"string": "d2",
|
||||
"raw_string": "d2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"err": null
|
||||
}
|
||||
38
testdata/d2parser/TestParse/import/#05.exp.json
generated
vendored
Normal file
38
testdata/d2parser/TestParse/import/#05.exp.json
generated
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"ast": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#05.d2,0:0:0-0:13:13",
|
||||
"nodes": [
|
||||
{
|
||||
"import": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#05.d2,0:0:0-0:13:13",
|
||||
"spread": true,
|
||||
"path": [
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#05.d2,0:4:4-0:8:8",
|
||||
"value": [
|
||||
{
|
||||
"string": "file",
|
||||
"raw_string": "file"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"double_quoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/import/#05.d2,0:9:9-0:13:13",
|
||||
"value": [
|
||||
{
|
||||
"string": "d2",
|
||||
"raw_string": "d2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"err": null
|
||||
}
|
||||
Loading…
Reference in a new issue