Value

Get and Insert value on map without complexity.

Get Value

The Value.get function works getting the data from a map or deep map

Example 1

 iex(1)> map = %{a: 1, b: 2, c: 3}
 iex(2)> Value.get(map, :a)
 1

Example 2

 iex(1)> map = %{a: 1, b: 2, c: 3, d: %{"e" => 1, c: %{d: 2}}}
 iex(2)> Value.get(map, "d.c.d")
 2

Example 3

 iex(1)> map = %{a: 1, b: 2, c: [%{a: 1, b: 2}, %{a: 5, c: 6}]}
 iex(2)> Value.get(map, "c.a")
 [1, 5]

Example 4

 iex(1)> map = %{a: 1, b: 2, c: [%{a: 1, b: 2}, %{a: 5, c: 6}]}
 iex(2)> Value.get(map, "c.a[0]")
 1

Insert Value

The Value.insert function works inserting the data from a map or deep map

Example 1

 iex(1)> map = %{a: 1, b: 2, c: 3}
 iex(2)> Value.insert(map, "a", 2)
 %{a: 2, b: 2, c: 3}

Example 2

 iex(1)> map = %{a: 1, b: 2, c: 3}
 iex(2)> Value.insert(map, "d.c.d", 4)
 %{:a => 1, :b => 2, :c => 3, "d" => %{"c" => %{"d" => 4}}}

Example 3

 iex(1)> map = %{a: 1, b: 2, c: [%{a: 1, b: 2}, %{a: 5, c: 6}]}
 iex(2)> Value.insert(map, "c[@].c", 2)
 %{a: 1, b: 2, c: [%{:a => 1, :b => 2, "c" => 2}, %{a: 5, c: 2}]}

Example 4

 iex(1)> map = %{a: 1, b: 2, c: [%{a: 1, b: 2}, %{a: 5, c: 6}]}
 iex(2)> Value.insert(map, "c[0].a",2)
 %{a: 1, b: 2, c: [%{a: 2, b: 2}, %{a: 5, c: 6}]}