Nested (nested_ex v0.1.1)

Library to work with nested maps Elixir reimplementation of Erlang library nested

Summary

Functions

Appends value to List at key path.

Appends value to List at key path. If key not found at path, add key and append value to default List provided Similar to Python's defaultdict

Examples

iex> Nested.get(%{test: :rest}, [:test] )
:rest

iex> %{test: :rest} |> Nested.get([:test])
:rest

iex> Nested.get(%{}, [:a])
nil 

iex> Nested.get(%{a: %{b: 1}}, [:a,:b])
1

iex> Nested.get(%{a: %{b: 1}}, [:a,:c])
nil

iex> Nested.get(%{a: %{b: 1}}, [:c], 3)
3

Functions

Link to this function

append(map, path, value)

@spec append(map :: map(), path :: [any()], value :: any()) :: map()

Appends value to List at key path.

iex> Nested.append(%{"test" => "rest", "rest" => [1]},["rest"],2) %{"rest" => [1, 2], "test" => "rest"}

Link to this function

append(map, path, value, default)

@spec append(map(), [any()], any(), list()) :: map()

Appends value to List at key path. If key not found at path, add key and append value to default List provided Similar to Python's defaultdict

iex> Nested.append(%{"test" => "rest", "rest" => [1]},["xest"],2,[]) %{"rest" => [1], "test" => "rest", "xest" => [2]}

iex> Nested.append(%{"test" => "rest", "rest" => [1]},["rest"],2,[]) %{"rest" => [1, 2], "test" => "rest"}

Link to this function

delete(map, list)

@spec delete(map :: map(), list()) :: map()
@spec delete(map :: map(), list()) :: map()
@spec delete(map :: map(), list()) :: map()
Link to this function

fetch(map, path)

@spec fetch(map :: map(), [any()]) :: {:ok, map()}
Link to this function

fetch!(map, path)

@spec fetch!(map :: map(), [any()]) :: {:ok, map()}
@spec get(map :: map(), [any()]) :: any()
@spec get(map :: map(), []) :: any()

Examples

iex> Nested.get(%{test: :rest}, [:test] )
:rest

iex> %{test: :rest} |> Nested.get([:test])
:rest

iex> Nested.get(%{}, [:a])
nil 

iex> Nested.get(%{a: %{b: 1}}, [:a,:b])
1

iex> Nested.get(%{a: %{b: 1}}, [:a,:c])
nil

iex> Nested.get(%{a: %{b: 1}}, [:c], 3)
3
Link to this function

get(map, list, default)

@spec get(map :: map(), [any()], any()) :: any()
@spec get(map :: map(), [], any()) :: any()
Link to this function

has_key?(map, list)

@spec has_key?(map :: map(), list()) :: boolean()
@spec has_key?(map :: map(), list()) :: boolean()
Link to this function

keys(map, list)

@spec keys(map :: map(), [any()]) :: [any()]
@spec keys(map :: map(), []) :: [any()]
Link to this function

put(map, list, value)

@spec put(map :: map(), [any()], any()) :: map()
@spec put(map :: map(), [], any()) :: map()
Link to this function

update(map, path, default, valueOrFun)

@spec update(map :: map(), path :: [any()], default :: any(), any()) :: map()
Link to this function

update!(map, path, valueOrFun)

@spec update!(map(), [any()], any()) :: map()