github.com/DominikUrban/viper@v0.0.0-20220730150717-aaf74638bd32/internal/encoding/toml/codec.go (about) 1 //go:build viper_toml1 2 // +build viper_toml1 3 4 package toml 5 6 import ( 7 "github.com/pelletier/go-toml" 8 ) 9 10 // Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding. 11 type Codec struct{} 12 13 func (Codec) Encode(v map[string]interface{}) ([]byte, error) { 14 t, err := toml.TreeFromMap(v) 15 if err != nil { 16 return nil, err 17 } 18 19 s, err := t.ToTomlString() 20 if err != nil { 21 return nil, err 22 } 23 24 return []byte(s), nil 25 } 26 27 func (Codec) Decode(b []byte, v map[string]interface{}) error { 28 tree, err := toml.LoadBytes(b) 29 if err != nil { 30 return err 31 } 32 33 tmap := tree.ToMap() 34 for key, value := range tmap { 35 v[key] = value 36 } 37 38 return nil 39 }