update merge docs to match behavior

pull/24032/head
James Bardin 6 years ago
parent f5bf9aa55d
commit 529271e0be

@ -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

@ -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
}
```

Loading…
Cancel
Save