Skip to content

Commit 381ab4b

Browse files
Simplify deep_stringify_keys logic
Always change a struct into a map. Co-authored-by: Rafael Audibert <[email protected]>
1 parent 733b806 commit 381ab4b

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

lib/posthog/event.ex

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,16 @@ defmodule Posthog.Event do
149149
end
150150

151151
@doc false
152-
defp deep_stringify_keys(term) when is_non_struct_map(term) do
152+
defp deep_stringify_keys(term) when is_struct(term) do
153+
term |> Map.from_struct |> deep_stringify_keys
154+
end
155+
156+
defp deep_stringify_keys(term) when is_map(term) do
153157
term
154158
|> Enum.map(fn {k, v} -> {to_string(k), deep_stringify_keys(v)} end)
155159
|> Enum.into(%{})
156160
end
157161

158-
defp deep_stringify_keys(term) when is_struct(term) do
159-
case String.Chars.impl_for(term) do
160-
nil -> Map.from_struct(term)
161-
_ -> to_string(term)
162-
end
163-
end
164-
165162
defp deep_stringify_keys([{key, _value} | _] = term) when is_atom(key) do
166163
term
167164
|> Enum.map(fn {k, v} -> {to_string(k), deep_stringify_keys(v)} end)

0 commit comments

Comments
 (0)