AuthManager.Tools.MapTools (auth_manager_core v0.1.1)
Utilidades para manipulación de mapas.
Summary
Functions
Filtra un mapa recursivamente, manteniendo solo las entradas que cumplen con la función de predicado.
Transforma los valores de un mapa recursivamente utilizando una función.
Fusiona dos mapas profundamente, combinando mapas anidados.
Aplana un mapa anidado en un mapa plano con claves compuestas.
Obtiene un valor de un mapa anidado utilizando una lista de claves o una ruta separada por puntos.
Convierte claves de string a átomos en un mapa, recursivamente.
Convierte claves de átomos a strings en un mapa, recursivamente.
Desaplana un mapa plano con claves compuestas en un mapa anidado.
Functions
Filtra un mapa recursivamente, manteniendo solo las entradas que cumplen con la función de predicado.
Ejemplos
iex> MapTools.deep_filter(%{a: 1, b: %{c: 2, d: nil}}, fn {_k, v} -> not is_nil(v) end)
%{a: 1, b: %{c: 2}}
Transforma los valores de un mapa recursivamente utilizando una función.
Ejemplos
iex> MapTools.deep_map(%{a: 1, b: %{c: 2}}, fn v -> v * 2 end)
%{a: 2, b: %{c: 4}}
Fusiona dos mapas profundamente, combinando mapas anidados.
Ejemplos
iex> MapTools.deep_merge(%{a: 1, b: %{c: 2}}, %{b: %{d: 3}, e: 4})
%{a: 1, b: %{c: 2, d: 3}, e: 4}
Aplana un mapa anidado en un mapa plano con claves compuestas.
Ejemplos
iex> MapTools.flatten(%{user: %{name: "Juan", address: %{city: "Madrid"}}})
%{"user.name" => "Juan", "user.address.city" => "Madrid"}
Obtiene un valor de un mapa anidado utilizando una lista de claves o una ruta separada por puntos.
Ejemplos
iex> MapTools.get_in_path(%{user: %{name: "Juan"}}, [:user, :name])
"Juan"
iex> MapTools.get_in_path(%{user: %{name: "Juan"}}, "user.name")
"Juan"
Convierte claves de string a átomos en un mapa, recursivamente.
Ejemplos
iex> MapTools.keys_to_atoms(%{"name" => "Juan", "age" => 30})
%{name: "Juan", age: 30}
iex> MapTools.keys_to_atoms(%{"user" => %{"name" => "Juan", "age" => 30}})
%{user: %{name: "Juan", age: 30}}
Convierte claves de átomos a strings en un mapa, recursivamente.
Ejemplos
iex> MapTools.keys_to_strings(%{name: "Juan", age: 30})
%{"name" => "Juan", "age" => 30}
iex> MapTools.keys_to_strings(%{user: %{name: "Juan", age: 30}})
%{"user" => %{"name" => "Juan", "age" => 30}}
Desaplana un mapa plano con claves compuestas en un mapa anidado.
Ejemplos
iex> MapTools.unflatten(%{"user.name" => "Juan", "user.address.city" => "Madrid"})
%{"user" => %{"name" => "Juan", "address" => %{"city" => "Madrid"}}}