update merge docs to match behavior

This commit is contained in:
James Bardin 2020-02-05 13:45:49 -05:00
parent f5bf9aa55d
commit 529271e0be
2 changed files with 23 additions and 10 deletions

View File

@ -2119,9 +2119,7 @@ func TestMerge(t *testing.T) {
"a": cty.List(cty.String),
})),
},
cty.MapVal(map[string]cty.Value{
"c": cty.StringVal("d"),
}),
cty.NullVal(cty.EmptyObject),
false,
},
{ // handle null object

View File

@ -3,8 +3,9 @@ layout: "functions"
page_title: "merge - Functions - Configuration Language"
sidebar_current: "docs-funcs-collection-merge"
description: |-
The merge function takes an arbitrary number of maps and returns a single
map after merging the keys from each argument.
The merge function takes an arbitrary number maps or objects, and returns a
single map or object that contains a merged set of elements from all
arguments.
---
# `merge` Function
@ -13,19 +14,33 @@ description: |-
earlier, see
[0.11 Configuration Language: Interpolation Syntax](../../configuration-0-11/interpolation.html).
`merge` takes an arbitrary number of maps and returns a single map that
contains a merged set of elements from all of the maps.
`merge` takes an arbitrary number of maps or objects, and returns a single map
pr object that contains a merged set of elements from all arguments.
If more than one given map defines the same key then the one that is later
in the argument sequence takes precedence.
If more than one given map or object defines the same key or attribute, then
the one that is later in the argument sequence takes precedence. If the
argument types do not match, the resulting type will be an object matching the
type structure of the attributes after the merging rules have been applied.
## Examples
```
> merge({"a"="b", "c"="d"}, {"e"="f", "c"="z"})
> merge({a="b", c="d"}, {e="f", c="z"})
{
"a" = "b"
"c" = "z"
"e" = "f"
}
```
```
> merge({a="b"}, {a=[1,2], c="z"}, {d=3})
{
"a" = [
1,
2,
]
"c" = "z"
"d" = 3
}
```