vendor/github.com/spf13/viper/internal/encoding/toml/codec.go
changeset 260 445e01aede7e
child 265 05c40b36d3b2
equal deleted inserted replaced
259:db4911b0c721 260:445e01aede7e
       
     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 }