equal
deleted
inserted
replaced
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 } |