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