Fix key parsing in line tables (#311)
A bug was reported that indicated that inline tables did not fully support bare keys:
$ echo 'foo = { -bar => "buz"}' | ./tomljson
(1, 9): unexpected token type in inline table: Error
$ echo 'foo = { "whatever" = "buz"}' | ./tomljson
(1, 10): unexpected token type in inline table: String
echo 'foo = { _no = "buz"}' | ./tomljson
(1, 9): unexpected token type in inline table: Error
This change makes a couple of tweaks to to allow for all key variants in inline tables
Fixes: #282
This commit is contained in:
committed by
Thomas Pelletier
parent
e87c92d4f4
commit
bef0f57967
+35
-1
@@ -532,6 +532,33 @@ point = { x = 1, y = 2 }`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestInlineGroupBareKeysUnderscore(t *testing.T) {
|
||||
tree, err := Load(`foo = { _bar = "buz" }`)
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"foo": map[string]interface{}{
|
||||
"_bar": "buz",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestInlineGroupBareKeysDash(t *testing.T) {
|
||||
tree, err := Load(`foo = { -bar = "buz" }`)
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"foo": map[string]interface{}{
|
||||
"-bar": "buz",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestInlineGroupKeyQuoted(t *testing.T) {
|
||||
tree, err := Load(`foo = { "bar" = "buz" }`)
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
"foo": map[string]interface{}{
|
||||
"bar": "buz",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestExampleInlineGroupInArray(t *testing.T) {
|
||||
tree, err := Load(`points = [{ x = 1, y = 2 }]`)
|
||||
assertTree(t, tree, err, map[string]interface{}{
|
||||
@@ -560,7 +587,7 @@ func TestInlineTableCommaExpected(t *testing.T) {
|
||||
|
||||
func TestInlineTableCommaStart(t *testing.T) {
|
||||
_, err := Load("foo = {, hello = 53}")
|
||||
if err.Error() != "(1, 8): inline table cannot start with a comma" {
|
||||
if err.Error() != "(1, 8): unexpected token type in inline table: keys cannot contain , character" {
|
||||
t.Error("Bad error message:", err.Error())
|
||||
}
|
||||
}
|
||||
@@ -916,6 +943,13 @@ func TestMapKeyIsNum(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvalidKeyInlineTable(t *testing.T) {
|
||||
_, err := Load("table={invalid..key = 1}")
|
||||
if err.Error() != "(1, 8): invalid key: expecting key part after dot" {
|
||||
t.Error("Bad error message:", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDottedKeys(t *testing.T) {
|
||||
tree, err := Load(`
|
||||
name = "Orange"
|
||||
|
||||
Reference in New Issue
Block a user