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