parent
fa5eced013
commit
e6b52a357f
3 changed files with 105 additions and 10 deletions
|
|
@ -919,11 +919,12 @@ func (p *parser) parseKey() (k *d2ast.KeyPath) {
|
|||
Start: p.pos,
|
||||
},
|
||||
}
|
||||
defer k.Range.End.From(&p.pos)
|
||||
|
||||
defer func() {
|
||||
if len(k.Path) == 0 {
|
||||
k = nil
|
||||
} else {
|
||||
k.Range.End = k.Path[len(k.Path)-1].Unbox().GetRange().End
|
||||
}
|
||||
}()
|
||||
|
||||
|
|
@ -948,6 +949,9 @@ func (p *parser) parseKey() (k *d2ast.KeyPath) {
|
|||
return k
|
||||
}
|
||||
|
||||
if len(k.Path) == 0 {
|
||||
k.Range.Start = s.GetRange().Start
|
||||
}
|
||||
k.Path = append(k.Path, &sb)
|
||||
|
||||
r, newlines, eof = p.peekNotSpace()
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ func TestParse(t *testing.T) {
|
|||
t.Parallel()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
text string
|
||||
name string
|
||||
text string
|
||||
assert func(t testing.TB, ast *d2ast.Map, err error)
|
||||
|
||||
// exp is in testdata/d2parser/TestParse/${name}.json
|
||||
|
|
@ -382,14 +382,14 @@ c-
|
|||
},
|
||||
{
|
||||
name: "whitespace_range",
|
||||
text: `a -> b -> c`,
|
||||
text: ` a -> b -> c `,
|
||||
assert: func(t testing.TB, ast *d2ast.Map, err error) {
|
||||
assert.Equal(t, "1:1", ast.Nodes[0].MapKey.Edges[0].Src.Range.Start.String())
|
||||
assert.Equal(t, "1:2", ast.Nodes[0].MapKey.Edges[0].Src.Range.End.String())
|
||||
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[0].Dst.Range.Start.String())
|
||||
assert.Equal(t, "1:7", ast.Nodes[0].MapKey.Edges[0].Dst.Range.End.String())
|
||||
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[1].Dst.Range.Start.String())
|
||||
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[1].Dst.Range.End.String())
|
||||
assert.Equal(t, "1:2", ast.Nodes[0].MapKey.Edges[0].Src.Range.Start.String())
|
||||
assert.Equal(t, "1:3", ast.Nodes[0].MapKey.Edges[0].Src.Range.End.String())
|
||||
assert.Equal(t, "1:7", ast.Nodes[0].MapKey.Edges[0].Dst.Range.Start.String())
|
||||
assert.Equal(t, "1:8", ast.Nodes[0].MapKey.Edges[0].Dst.Range.End.String())
|
||||
assert.Equal(t, "1:12", ast.Nodes[0].MapKey.Edges[1].Dst.Range.Start.String())
|
||||
assert.Equal(t, "1:13", ast.Nodes[0].MapKey.Edges[1].Dst.Range.End.String())
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
91
testdata/d2parser/TestParse/whitespace_range.exp.json
generated
vendored
Normal file
91
testdata/d2parser/TestParse/whitespace_range.exp.json
generated
vendored
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
{
|
||||
"ast": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:0:0-0:13:13",
|
||||
"nodes": [
|
||||
{
|
||||
"map_key": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:13:13",
|
||||
"edges": [
|
||||
{
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:7:7",
|
||||
"src": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:2:2",
|
||||
"path": [
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:2:2",
|
||||
"value": [
|
||||
{
|
||||
"string": "a",
|
||||
"raw_string": "a"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"src_arrow": "",
|
||||
"dst": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
|
||||
"path": [
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
|
||||
"value": [
|
||||
{
|
||||
"string": "b",
|
||||
"raw_string": "b"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"dst_arrow": ">"
|
||||
},
|
||||
{
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:12:12",
|
||||
"src": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
|
||||
"path": [
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
|
||||
"value": [
|
||||
{
|
||||
"string": "b",
|
||||
"raw_string": "b"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"src_arrow": "",
|
||||
"dst": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:11:11-0:12:12",
|
||||
"path": [
|
||||
{
|
||||
"unquoted_string": {
|
||||
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:11:11-0:12:12",
|
||||
"value": [
|
||||
{
|
||||
"string": "c",
|
||||
"raw_string": "c"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"dst_arrow": ">"
|
||||
}
|
||||
],
|
||||
"primary": {},
|
||||
"value": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"err": null
|
||||
}
|
||||
Loading…
Reference in a new issue