Fix nested keys
diff --git a/src/toml/parser.go b/src/toml/parser.go index a700b91..0045e31 100644 --- a/src/toml/parser.go +++ b/src/toml/parser.go
@@ -84,8 +84,8 @@ func parseGroup(p *parser) parserStateFn { p.getToken() // discard the [ key := p.getToken() - if key.typ != tokenKey { - panic(fmt.Sprintf("unexpected token %s, was expecting a key", key)) + if key.typ != tokenKeyGroup { + panic(fmt.Sprintf("unexpected token %s, was expecting a key group", key)) } p.tree.createSubTree(key.val) p.assume(tokenRightBracket)
diff --git a/src/toml/parser_test.go b/src/toml/parser_test.go index d7ae0e3..f5ad742 100644 --- a/src/toml/parser_test.go +++ b/src/toml/parser_test.go
@@ -69,3 +69,10 @@ "b": false, }) } + +func TestNestedKeys(t *testing.T) { + tree := Load("[a.b.c]\nd = 42") + assertTree(t, tree, map[string]interface{}{ + "a.b.c.d": int64(42), + }) +}
diff --git a/src/toml/toml.go b/src/toml/toml.go index 137a9fe..8653399 100644 --- a/src/toml/toml.go +++ b/src/toml/toml.go
@@ -20,8 +20,6 @@ return keys } -// Get an element from the tree. -// If the path described by the key does not exist, nil is returned. func (t *TomlTree) Get(key string) interface{} { subtree := t keys := strings.Split(key, ".")