Function: map.merge_nested

Takes two maps, creates a copy of the first map, and recursively adds items from the second map to the copy.

For maps with the same key, the value from the first map is replaced by the value from the second map.

For example, if you have map1 = {key1: value1} and map2 = {key1: value2}, map.merge_nested(map1, map2) returns {key1: value2}.

For nested maps, values are merged recursively.

For example, if you have map1 = {key1: {keyx: valuex}} and map2 = {key1: {keyy: valuey}}, map.merge_nested(map1, map2) returns {key1: {keyx: valuex, keyy: valuey}}.

Arguments

Arguments
first The map to be merged into.
second The map to merge.

Returns

A copy of the first map with items added from the second map.

Raised exceptions

Exceptions
TypeError If first or second is not a map (dictionary).

Examples

# Recursively add items from second map to copy of first map
# Returns `{"key1": {"key2": "value2","key3": "value3"}}`
- init:
    assign:
      - my_map1: {"key1": {key2: value2}}
      - my_map2: {"key1": {key3: value3}}
- returnStep:
    return: ${map.merge_nested(my_map1, my_map2)}