Current section
Files
Jump to
Current section
Files
lib/casefy.ex
defmodule Casefy do
defp casefy(object, module) when is_map(object) do
keys = Map.keys(object)
Enum.reduce(keys, Map.new(), fn element, acc ->
transform = is_atom(element)
el =
transform
|> case do
true -> Atom.to_string(element)
false -> element
end
camel_key = apply(module, :convert, [el])
current_value = Map.get(object, element)
Map.put(acc, camel_key, casefy(current_value, module))
end)
end
defp casefy(list, module) when is_list(list) do
list |> Enum.map(fn e -> casefy(e, module) end)
end
defp casefy(any, _module) do
any
end
def camel_case(object), do: casefy(object, Recase.CamelCase)
@spec snake_case(map) :: any
def snake_case(object), do: casefy(object, Recase.SnakeCase)
end