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 {
|
for k, v := range t.values {
|
||||||
switch node := v.(type) {
|
switch node := v.(type) {
|
||||||
case []*TomlTree:
|
case []*TomlTree:
|
||||||
result[k] = make([]interface{}, 0)
|
array := make([]interface{}, 0)
|
||||||
for _, item := range node {
|
for _, item := range node {
|
||||||
result[k] = item.ToMap()
|
array = append(array, item.ToMap())
|
||||||
}
|
}
|
||||||
|
result[k] = array
|
||||||
case *TomlTree:
|
case *TomlTree:
|
||||||
result[k] = node.ToMap()
|
result[k] = node.ToMap()
|
||||||
case map[string]interface{}:
|
case map[string]interface{}:
|
||||||
|
|||||||
@@ -80,3 +80,25 @@ func TestTomlTreeConversionToMapExampleFile(t *testing.T) {
|
|||||||
}
|
}
|
||||||
testMaps(t, tree.ToMap(), expected)
|
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