Current section
Files
Jump to
Current section
Files
lib/util.ex
defmodule Dropbox.Util do
def atomize_map(nil, binmap) do
binmap
end
def atomize_map(module, binmap) do
if is_map module do
map = module
else
map = struct module, %{}
end
[_ | keys] = Map.keys map
{_, map} = Enum.map_reduce keys, map, fn(k, acc) ->
if Map.has_key? binmap, atom_to_binary(k) do
v = binmap[atom_to_binary k]
if is_map v do
{k, Map.put(acc, k, atomize_map(Map.get(map, k), v))}
else
{k, Map.put(acc, k, v)}
end
else
{k, acc}
end
end
map
end
end