View Source maps_in
An Erlang library to handle nested maps.
table-of-contents
Table of contents
general-info
General info
Erlang does not provide functions to handle nested maps, so this lib has this purpose and always uses a list of keys to manipulate maps.
usage
Usage
get-2
get/2
1> Map = #{my => #{nested => map}}.
#{my => #{nested => map}}
2> maps_in:get([my, nested], Map).
map
get-3
get/3
1> Map = #{my => #{nested => map}}.
#{my => #{nested => map}}
2> maps_in:get([my, unknown_key], Map, default).
default
put-3
put/3
1> Map = #{my => #{more => #{deep => #{}}}}.
#{my => #{more => #{deep => #{}}}}
2> maps_in:put([my, more, deep], #{nested => map}, Map).
#{my => #{more => #{deep => #{nested => map}}}}
update-3
update/3
1> Map = #{my => #{more => #{deep => #{}}}}.
#{my => #{more => #{deep => #{}}}}
2> maps_in:update([my, unknown_key], error, Map).
** exception error: bad key: unknown_key
3> maps_in:update([my, more, deep], #{nested => map}, Map).
#{my => #{more => #{deep => #{nested => map}}}}
get_and_update-3
get_and_update/3
1> Map = #{someone => #{age => 17}}.
#{someone => #{age => 17}}
2> maps_in:get_and_update([someone, age], fun(Age) -> Age + 1 end, Map).
#{someone => #{age => 18}}
build
Build
$ rebar3 compile
test
Test
$ rebar3 eunit