config: go.uber.org/config/internal/merge Index | Files

package merge

import "go.uber.org/config/internal/merge"

Index

Package Files

merge.go

func IsMapping Uses

func IsMapping(i interface{}) bool

IsMapping reports whether a type is a mapping in YAML, represented as a map[interface{}]interface{}.

func IsScalar Uses

func IsScalar(i interface{}) bool

IsScalar reports whether a type is a scalar value in YAML.

func IsSequence Uses

func IsSequence(i interface{}) bool

IsSequence reports whether a type is a sequence in YAML, represented as an []interface{}.

func YAML Uses

func YAML(sources [][]byte, strict bool) (*bytes.Buffer, error)

YAML deep-merges any number of YAML sources, with later sources taking priority over earlier ones.

Maps are deep-merged. For example,

{"one": 1, "two": 2} + {"one": 42, "three": 3}
== {"one": 42, "two": 2, "three": 3}

Sequences are replaced. For example,

{"foo": [1, 2, 3]} + {"foo": [4, 5, 6]}
== {"foo": [4, 5, 6]}

In non-strict mode, duplicate map keys are allowed within a single source, with later values overwriting previous ones. Attempting to merge mismatched types (e.g., merging a sequence into a map) replaces the old value with the new.

Enabling strict mode returns errors in both of the above cases.

Package merge imports 5 packages (graph) and is imported by 1 packages. Updated 2019-11-26. Refresh now. Tools for package owners.