2020-09-03 03:46:55 +00:00
|
|
|
// Package toml implements a koanf.Parser that parses TOML bytes as conf maps.
|
|
|
|
package toml
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
|
|
|
|
"github.com/pelletier/go-toml"
|
|
|
|
)
|
|
|
|
|
|
|
|
// TOML implements a TOML parser.
|
|
|
|
type TOML struct{}
|
|
|
|
|
|
|
|
// Parser returns a TOML Parser.
|
|
|
|
func Parser() *TOML {
|
|
|
|
return &TOML{}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Unmarshal parses the given TOML bytes.
|
|
|
|
func (p *TOML) Unmarshal(b []byte) (map[string]interface{}, error) {
|
|
|
|
r, err := toml.LoadReader(bytes.NewBuffer(b))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return r.ToMap(), err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Marshal marshals the given config map to TOML bytes.
|
|
|
|
func (p *TOML) Marshal(o map[string]interface{}) ([]byte, error) {
|
|
|
|
out, err := toml.TreeFromMap(o)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2020-09-21 00:00:07 +00:00
|
|
|
return out.Marshal()
|
2020-09-03 03:46:55 +00:00
|
|
|
}
|