Packages

A collection of helpers to operate on nested maps. See README for the complete list of helpers. The test suite is also helpful.

Current section

Files

Jump to
digger lib atomizer.ex
Raw

lib/atomizer.ex

defmodule Digger.Atomizer do
@moduledoc """
Documentation for Digger.Atomizer.
"""
@type key :: any
@type value :: any
@type pseudo_map :: any
@doc """
Take a (nested) map and convert string and integer keys to atoms
"""
@spec atomize(map) :: map
def atomize(%{} = map) do
map
|> Map.new(fn{key, value} -> {atomize_key(key), atomize_value(value)} end)
end
defp atomize_value(value) when is_map(value) do
atomize(value)
end
defp atomize_value(value), do: value
defp atomize_key(%_{} = struct), do: struct
defp atomize_key(key) when is_map(key) do
atomize(key)
end
defp atomize_key(key) when is_binary(key) do
String.to_atom(key)
end
defp atomize_key(key) when is_integer(key) do
key |> to_string |> atomize_key
end
defp atomize_key(key), do: key
end