Documentation
¶
Overview ¶
Package yaml provides a wrapper around go-yaml designed to enable a better way of handling YAML when marshaling to and from structs.
In short, this package first converts YAML to JSON using go-yaml and then uses json.Marshal and json.Unmarshal to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods MarshalJSON and UnmarshalJSON unlike go-yaml.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Unmarshal ¶
Unmarshal converts YAML to JSON then uses JSON to unmarshal into an object, optionally configuring the behavior of the JSON unmarshal.
func YAMLToJSON ¶
YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML, passing JSON through this method should be a no-op.
Things YAML can do that are not supported by JSON:
- In YAML you can have binary and null keys in your maps. These are invalid in JSON. (int and float keys are converted to strings.)
- Binary data in YAML with the !!binary tag is not supported. If you want to use binary data with this library, encode the data as base64 as usual but do not use the !!binary tag in your YAML. This will ensure the original base64 encoded data makes it all the way through to the JSON.
Types ¶
type OriginOpt ¶
type OriginOpt struct {
// Enabled adds __origin__ metadata to maps during unmarshaling.
Enabled bool
// File is the source file name recorded in origin metadata.
File string
}
OriginOpt controls origin-tracking behavior in UnmarshalWithOriginTree.
type OriginTree ¶ added in v0.0.6
type OriginTree struct {
// File is the source file for all origins in this subtree.
// Set once at the root of each decode call; all nodes in the same
// decode share the same file.
File string
// Origin is the raw __origin__ value ([]any compact sequence) for this node.
// Format: [key_name, key_line, key_col, nf, f1_name, f1_delta, f1_col, ..., ns, ...]
Origin any
// Fields holds child trees keyed by map key name.
Fields map[string]*OriginTree
// Items holds child trees for slice elements (index-aligned).
Items []*OriginTree
}
OriginTree holds __origin__ data extracted from a YAML-decoded map tree. It mirrors the structure of the spec: Fields tracks map children by key, Items tracks slice children by index.
func UnmarshalWithOriginTree ¶ added in v0.0.6
func UnmarshalWithOriginTree(y []byte, o interface{}, origin OriginOpt, opts ...JSONOpt) (*OriginTree, error)
UnmarshalWithOriginTree is like UnmarshalWithOrigin but strips __origin__ from the intermediate map before JSON conversion and returns the extracted origin data as an OriginTree. The caller can apply the tree to Go structs after unmarshaling. When origin tracking is disabled, the returned tree is nil.