Fixes #20 : Creation of subgroup in table arrays
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
// TOML lexer.// Written using the principles developped by Rob Pike in
|
// TOML lexer.
|
||||||
|
//
|
||||||
|
// Written using the principles developped by Rob Pike in
|
||||||
// http://www.youtube.com/watch?v=HxaD_trXwRE
|
// http://www.youtube.com/watch?v=HxaD_trXwRE
|
||||||
|
|
||||||
package toml
|
package toml
|
||||||
|
|||||||
@@ -299,6 +299,16 @@ func TestParseKeyGroupArray(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseKeyGroupArraySpec(t *testing.T) {
|
||||||
|
tree, err := Load("[[fruit]]\n name=\"apple\"\n [fruit.physical]\n color=\"red\"\n shape=\"round\"\n [[fruit]]\n name=\"banana\"")
|
||||||
|
assertTree(t, tree, err, map[string]interface{}{
|
||||||
|
"fruit": []map[string]interface{}{
|
||||||
|
{"name": "apple", "physical": map[string]interface{}{"color": "red", "shape": "round"}},
|
||||||
|
{"name": "banana"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestToTomlValue(t *testing.T) {
|
func TestToTomlValue(t *testing.T) {
|
||||||
for idx, item := range []struct {
|
for idx, item := range []struct {
|
||||||
Value interface{}
|
Value interface{}
|
||||||
|
|||||||
@@ -155,7 +155,15 @@ func (t *TomlTree) createSubTree(key string) error {
|
|||||||
var new_tree TomlTree = make(TomlTree)
|
var new_tree TomlTree = make(TomlTree)
|
||||||
(*subtree)[intermediate_key] = &new_tree
|
(*subtree)[intermediate_key] = &new_tree
|
||||||
}
|
}
|
||||||
subtree = ((*subtree)[intermediate_key]).(*TomlTree)
|
|
||||||
|
switch node := (*subtree)[intermediate_key].(type) {
|
||||||
|
case []*TomlTree:
|
||||||
|
subtree = node[len(node)-1]
|
||||||
|
case *TomlTree:
|
||||||
|
subtree = node
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unknown type for path %s", key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user