Fix ToMap conversion of array of tables (#83)
This commit is contained in:
@@ -126,10 +126,11 @@ func (t *TomlTree) ToMap() map[string]interface{} {
|
||||
for k, v := range t.values {
|
||||
switch node := v.(type) {
|
||||
case []*TomlTree:
|
||||
result[k] = make([]interface{}, 0)
|
||||
array := make([]interface{}, 0)
|
||||
for _, item := range node {
|
||||
result[k] = item.ToMap()
|
||||
array = append(array, item.ToMap())
|
||||
}
|
||||
result[k] = array
|
||||
case *TomlTree:
|
||||
result[k] = node.ToMap()
|
||||
case map[string]interface{}:
|
||||
|
||||
@@ -80,3 +80,25 @@ func TestTomlTreeConversionToMapExampleFile(t *testing.T) {
|
||||
}
|
||||
testMaps(t, tree.ToMap(), expected)
|
||||
}
|
||||
|
||||
func TestTomlTreeConversionToMapWithTablesInMultipleChunks(t *testing.T) {
|
||||
tree, _ := Load(`
|
||||
[[menu.main]]
|
||||
a = "menu 1"
|
||||
b = "menu 2"
|
||||
[[menu.main]]
|
||||
c = "menu 3"
|
||||
d = "menu 4"`)
|
||||
expected := map[string]interface{}{
|
||||
"menu": map[string]interface{}{
|
||||
"main": []interface{}{
|
||||
map[string]interface{}{"a": "menu 1", "b": "menu 2", },
|
||||
map[string]interface{}{"c": "menu 3", "d": "menu 4", },
|
||||
},
|
||||
},
|
||||
}
|
||||
treeMap := tree.ToMap()
|
||||
|
||||
|
||||
testMaps(t, treeMap, expected)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user