1
0
mirror of https://github.com/danog/gojekyll.git synced 2024-12-02 13:27:46 +01:00
gojekyll/utils/yaml.go

27 lines
537 B
Go
Raw Normal View History

2017-07-09 22:17:20 +02:00
package utils
2017-06-21 15:42:49 +02:00
import yaml "gopkg.in/yaml.v2"
// UnmarshalYAMLInterface is a wrapper for yaml.Unmarshal that
2017-06-21 15:42:49 +02:00
// knows how to unmarshal maps and lists.
func UnmarshalYAMLInterface(b []byte, i *interface{}) error {
var m yaml.MapSlice
2017-06-21 15:42:49 +02:00
err := yaml.Unmarshal(b, &m)
switch err.(type) {
case *yaml.TypeError:
// Work around https://github.com/go-yaml/yaml/issues/20
var s []interface{}
err = yaml.Unmarshal(b, &s)
if err != nil {
return err
}
*i = s
default:
if err != nil {
return err
}
*i = m
}
return nil
}