diff options
Diffstat (limited to 'vendor/github.com/spf13/viper/internal/encoding/toml')
| -rw-r--r-- | vendor/github.com/spf13/viper/internal/encoding/toml/codec.go | 39 | ||||
| -rw-r--r-- | vendor/github.com/spf13/viper/internal/encoding/toml/codec2.go | 19 |
2 files changed, 58 insertions, 0 deletions
diff --git a/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go b/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go new file mode 100644 index 000000000..45fddc8b5 --- /dev/null +++ b/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go @@ -0,0 +1,39 @@ +//go:build viper_toml1 +// +build viper_toml1 + +package toml + +import ( + "github.com/pelletier/go-toml" +) + +// Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding. +type Codec struct{} + +func (Codec) Encode(v map[string]interface{}) ([]byte, error) { + t, err := toml.TreeFromMap(v) + if err != nil { + return nil, err + } + + s, err := t.ToTomlString() + if err != nil { + return nil, err + } + + return []byte(s), nil +} + +func (Codec) Decode(b []byte, v map[string]interface{}) error { + tree, err := toml.LoadBytes(b) + if err != nil { + return err + } + + tmap := tree.ToMap() + for key, value := range tmap { + v[key] = value + } + + return nil +} diff --git a/vendor/github.com/spf13/viper/internal/encoding/toml/codec2.go b/vendor/github.com/spf13/viper/internal/encoding/toml/codec2.go new file mode 100644 index 000000000..112c6d372 --- /dev/null +++ b/vendor/github.com/spf13/viper/internal/encoding/toml/codec2.go @@ -0,0 +1,19 @@ +//go:build !viper_toml1 +// +build !viper_toml1 + +package toml + +import ( + "github.com/pelletier/go-toml/v2" +) + +// Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding. +type Codec struct{} + +func (Codec) Encode(v map[string]interface{}) ([]byte, error) { + return toml.Marshal(v) +} + +func (Codec) Decode(b []byte, v map[string]interface{}) error { + return toml.Unmarshal(b, &v) +} |
