Fix ToMap conversion of array of tables (#83)
diff --git a/tomltree_conversions.go b/tomltree_conversions.go index 6a821d5..bc6a967 100644 --- a/tomltree_conversions.go +++ b/tomltree_conversions.go
@@ -126,10 +126,11 @@ 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{}:
diff --git a/tomltree_conversions_test.go b/tomltree_conversions_test.go index a4c8486..ddea8c4 100644 --- a/tomltree_conversions_test.go +++ b/tomltree_conversions_test.go
@@ -80,3 +80,25 @@ } 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) +}