Current section

Files

Jump to
quill lib encoder encoder.ex
Raw

lib/encoder/encoder.ex

defmodule Quill.Encoder do
@moduledoc """
Documentation for Quill.Encoder.
"""
def encode(map) do
map
|> force_map()
|> Jason.encode!()
end
defp force_map(value) when is_map(value) do
Enum.into(value, %{},
fn {k, v} -> {force_map(k), force_map(v)} end)
end
defp force_map(value) when is_list(value) do
Enum.map(value, &force_map/1)
end
defp force_map(%{__struct__: _} = value) do
value
|> Map.from_struct()
|> force_map()
end
defp force_map(value) when is_pid(value)
when is_port(value)
when is_reference(value)
when is_tuple(value)
when is_function(value), do: inspect(value)
defp force_map(value), do: value
end