gtoml.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
  2. //
  3. // This Source Code Form is subject to the terms of the MIT License.
  4. // If a copy of the MIT was not distributed with this file,
  5. // You can obtain one at https://github.com/gogf/gf.
  6. // Package gtoml provides accessing and converting for TOML content.
  7. package gtoml
  8. import (
  9. "bytes"
  10. "github.com/BurntSushi/toml"
  11. "github.com/gogf/gf/v2/errors/gerror"
  12. "github.com/gogf/gf/v2/internal/json"
  13. )
  14. func Encode(v interface{}) ([]byte, error) {
  15. buffer := bytes.NewBuffer(nil)
  16. if err := toml.NewEncoder(buffer).Encode(v); err != nil {
  17. err = gerror.Wrap(err, `toml.Encoder.Encode failed`)
  18. return nil, err
  19. }
  20. return buffer.Bytes(), nil
  21. }
  22. func Decode(v []byte) (interface{}, error) {
  23. var result interface{}
  24. if err := toml.Unmarshal(v, &result); err != nil {
  25. err = gerror.Wrap(err, `toml.Unmarshal failed`)
  26. return nil, err
  27. }
  28. return result, nil
  29. }
  30. func DecodeTo(v []byte, result interface{}) (err error) {
  31. err = toml.Unmarshal(v, result)
  32. if err != nil {
  33. err = gerror.Wrap(err, `toml.Unmarshal failed`)
  34. }
  35. return err
  36. }
  37. func ToJson(v []byte) ([]byte, error) {
  38. if r, err := Decode(v); err != nil {
  39. return nil, err
  40. } else {
  41. return json.Marshal(r)
  42. }
  43. }