Allow unmarshaling to top level maps (#273)

This commit is contained in:
Gregory Oschwald
2019-04-24 23:15:40 -07:00
committed by Thomas Pelletier
parent 65b27e6823
commit 1d8903f1d0
2 changed files with 46 additions and 8 deletions
+11 -3
View File
@@ -514,11 +514,19 @@ func (d *Decoder) SetTagName(v string) *Decoder {
func (d *Decoder) unmarshal(v interface{}) error {
mtype := reflect.TypeOf(v)
if mtype.Kind() != reflect.Ptr || mtype.Elem().Kind() != reflect.Struct {
return errors.New("Only a pointer to struct can be unmarshaled from TOML")
if mtype.Kind() != reflect.Ptr {
return errors.New("only a pointer to struct or map can be unmarshaled from TOML")
}
sval, err := d.valueFromTree(mtype.Elem(), d.tval)
elem := mtype.Elem()
switch elem.Kind() {
case reflect.Struct, reflect.Map:
default:
return errors.New("only a pointer to struct or map can be unmarshaled from TOML")
}
sval, err := d.valueFromTree(elem, d.tval)
if err != nil {
return err
}