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