defmodule PotionIngredients.Utils do defmacro iif(clause, expression, otherwise) do quote do if(unquote(clause)) do unquote(expression) else unquote(otherwise) end end end def to_map(enum) when is_map(enum) do Map.keys(enum) |> Enum.reduce(Map.new(%{}), fn key, acc -> Map.put(acc, key, to_map(Map.get(enum, key))) end) end def to_map(enum) when is_list(enum) do Enum.map(enum, fn e -> to_map(e) end) end def to_map(enum) do enum end def to_json(enum) when is_map(enum) do enum |> Map.keys() |> Enum.reduce(%{}, fn field, acc -> Map.put(acc, String.to_atom(field), to_json(Map.get(enum, field))) end) end def to_json(enum) when is_list(enum) do Enum.map(enum, fn e -> to_json(e) end) end def to_json(enum) do enum end end