vendor/github.com/spf13/viper/internal/encoding/toml/codec.go
changeset 265 05c40b36d3b2
parent 260 445e01aede7e
equal deleted inserted replaced
264:8f478162d991 265:05c40b36d3b2
     1 //go:build viper_toml1
       
     2 // +build viper_toml1
       
     3 
       
     4 package toml
     1 package toml
     5 
     2 
     6 import (
     3 import (
     7 	"github.com/pelletier/go-toml"
     4 	"github.com/pelletier/go-toml/v2"
     8 )
     5 )
     9 
     6 
    10 // Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding.
     7 // Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding.
    11 type Codec struct{}
     8 type Codec struct{}
    12 
     9 
    13 func (Codec) Encode(v map[string]interface{}) ([]byte, error) {
    10 func (Codec) Encode(v map[string]interface{}) ([]byte, error) {
    14 	t, err := toml.TreeFromMap(v)
    11 	return toml.Marshal(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 }
    12 }
    26 
    13 
    27 func (Codec) Decode(b []byte, v map[string]interface{}) error {
    14 func (Codec) Decode(b []byte, v map[string]interface{}) error {
    28 	tree, err := toml.LoadBytes(b)
    15 	return toml.Unmarshal(b, &v)
    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 }
    16 }