View Source Moar.Map (Moar v1.18.1)
Map-related functions.
Link to this section Summary
Functions
Like atomize_key/3
but raises if key
is not in map
.
Converts key
in map
to an atom, optionally transforming the value with value_transformer
.
Converts keys in map
to atoms.
Converts keys to atoms, traversing through descendant lists and maps.
Deeply merges two enumerables into a single map.
Merges two enumerables into a single map.
Like rename_key/2
but raises if key
is not in map
Like rename_key/3
but raises if key
is not in map
Returns a copy of map
with old_key_name
changed to new_key_name
.
Returns a copy of map
with old_key_name
changed to new_key_name
.
Like rename_keys/2
but raises if any key in keys_map
is not in map
.
Returns a copy of map
after changing key names supplied by keys_map
.
Converts keys in map
to strings.
Transforms values of map
using transformer
function.
Link to this section Functions
Like atomize_key/3
but raises if key
is not in map
.
Converts key
in map
to an atom, optionally transforming the value with value_transformer
.
Raises if key
is a string and map
already has an atomized version of that key.
iex> Moar.Map.atomize_key(%{"number-one" => "one", "number-two" => "two"}, "number-one")
%{:number_one => "one", "number-two" => "two"}
iex> Moar.Map.atomize_key(%{"number-one" => "one", "number-two" => "two"}, "number-one", &String.upcase/1)
%{:number_one => "ONE", "number-two" => "two"}
Converts keys in map
to atoms.
Raises if converting a key from a string to an atom would result in a key conflict.
iex> Moar.Map.atomize_keys(%{"a" => 1, "b" => 2})
%{a: 1, b: 2}
Converts keys to atoms, traversing through descendant lists and maps.
Raises if converting a key from a string to an atom would result in a key conflict.
iex> Moar.Map.deep_atomize_keys(%{"a" => %{"aa" => 1}, "b" => [%{"bb" => 2}, %{"bbb" => 3}]})
%{a: %{aa: 1}, b: [%{bb: 2}, %{bbb: 3}]}
Deeply merges two enumerables into a single map.
iex> Moar.Map.deep_merge(%{fruit: %{apples: 3, bananas: 5}, veggies: %{carrots: 10}}, [fruit: [cherries: 20]])
%{fruit: %{apples: 3, bananas: 5, cherries: 20}, veggies: %{carrots: 10}}
Merges two enumerables into a single map.
iex> Moar.Map.merge(%{a: 1}, [b: 2])
%{a: 1, b: 2}
Like rename_key/2
but raises if key
is not in map
Like rename_key/3
but raises if key
is not in map
Returns a copy of map
with old_key_name
changed to new_key_name
.
old_key_name
and new_key_name
are passed in as a {old_key_name, new_key_name}
tuple.
iex> %{"color" => "red", "size" => "medium"} |> Moar.Map.rename_key({"color", "colour"})
%{"colour" => "red", "size" => "medium"}
Returns a copy of map
with old_key_name
changed to new_key_name
.
iex> %{"color" => "red", "size" => "medium"} |> Moar.Map.rename_key("color", "colour")
%{"colour" => "red", "size" => "medium"}
Like rename_keys/2
but raises if any key in keys_map
is not in map
.
Returns a copy of map
after changing key names supplied by keys_map
.
%{"behavior" => "chill", "color" => "red"} |> Moar.Map.rename_keys(%{"behavior" => "behaviour", "color" => "colour"})
%{"behaviour" => "chill", "colour" => "red"}
Converts keys in map
to strings.
iex> Moar.Map.stringify_keys(%{a: 1, b: 2} )
%{"a" => 1, "b" => 2}
Transforms values of map
using transformer
function.
iex> %{"foo" => "chicken", "bar" => "cow", "baz" => "pig"} |> Moar.Map.transform("foo", &String.upcase/1)
%{"foo" => "CHICKEN", "bar" => "cow", "baz" => "pig"}
iex> %{"foo" => "chicken", "bar" => "cow", "baz" => "pig"} |> Moar.Map.transform(["foo", "bar"], &String.upcase/1)
%{"foo" => "CHICKEN", "bar" => "COW", "baz" => "pig"}