Current section
Files
Jump to
Current section
Files
lib/atomizer.ex
defmodule Digger.Atomizer do
@moduledoc """
Documentation for DiggerAtomizer.
"""
def atomize(map = %{}) do
map
|> Enum.map(fn{k, v} -> {atomize_key(k), atomize_value(v)} end)
|> Enum.into(%{})
end
def atomize(pseudo_map), do: pseudo_map
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