parent
04ec28993e
commit
4d0ba2043f
|
|
@ -18,7 +18,16 @@ type Encoder interface {
|
||||||
// NewEncoder creates and returns a function that is used to encode a Go object to a YAML document
|
// NewEncoder creates and returns a function that is used to encode a Go object to a YAML document
|
||||||
func NewEncoder(w io.Writer) Encoder {
|
func NewEncoder(w io.Writer) Encoder {
|
||||||
if runtime.GoccyGoYaml {
|
if runtime.GoccyGoYaml {
|
||||||
return yaml.NewEncoder(w)
|
yamlEncoderOpts := []yaml.EncodeOption{
|
||||||
|
yaml.Indent(2),
|
||||||
|
yaml.UseSingleQuote(true),
|
||||||
|
yaml.UseLiteralStyleIfMultiline(true),
|
||||||
|
}
|
||||||
|
yamlEncoder := yaml.NewEncoder(
|
||||||
|
w,
|
||||||
|
yamlEncoderOpts...,
|
||||||
|
)
|
||||||
|
return yamlEncoder
|
||||||
}
|
}
|
||||||
|
|
||||||
v3Encoder := v3.NewEncoder(w)
|
v3Encoder := v3.NewEncoder(w)
|
||||||
|
|
@ -28,28 +37,10 @@ func NewEncoder(w io.Writer) Encoder {
|
||||||
|
|
||||||
func Marshal(v any) ([]byte, error) {
|
func Marshal(v any) ([]byte, error) {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if runtime.GoccyGoYaml {
|
yamlEncoder := NewEncoder(&b)
|
||||||
yamlEncoderOpts := []yaml.EncodeOption{
|
err := yamlEncoder.Encode(v)
|
||||||
yaml.Indent(2),
|
|
||||||
yaml.UseSingleQuote(true),
|
|
||||||
yaml.UseLiteralStyleIfMultiline(true),
|
|
||||||
}
|
|
||||||
yamlEncoder := yaml.NewEncoder(
|
|
||||||
&b,
|
|
||||||
yamlEncoderOpts...,
|
|
||||||
)
|
|
||||||
err := yamlEncoder.Encode(v)
|
|
||||||
defer func() {
|
|
||||||
_ = yamlEncoder.Close()
|
|
||||||
}()
|
|
||||||
return b.Bytes(), err
|
|
||||||
}
|
|
||||||
|
|
||||||
v3Encoder := v3.NewEncoder(&b)
|
|
||||||
v3Encoder.SetIndent(2)
|
|
||||||
err := v3Encoder.Encode(v)
|
|
||||||
defer func() {
|
defer func() {
|
||||||
_ = v3Encoder.Close()
|
_ = yamlEncoder.Close()
|
||||||
}()
|
}()
|
||||||
return b.Bytes(), err
|
return b.Bytes(), err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ func testYamlMarshal(t *testing.T, goccyGoYaml bool) {
|
||||||
}},
|
}},
|
||||||
expected: map[string]string{
|
expected: map[string]string{
|
||||||
"goccy/go-yaml": "name: John\ninfo:\n- age: 20\n address: New York\n annotation: 'on'\n",
|
"goccy/go-yaml": "name: John\ninfo:\n- age: 20\n address: New York\n annotation: 'on'\n",
|
||||||
"gopkg.in/yaml.v3": "name: John\ninfo:\n- age: 20\n address: New York\n annotation: \"on\"\n",
|
"gopkg.in/yaml.v3": "name: John\ninfo:\n - age: 20\n address: New York\n annotation: \"on\"\n",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue