fix: CSM-001 done

This commit is contained in:
2026-05-06 19:33:54 +02:00
parent 3ce6010b87
commit d3f45ba0dd
16 changed files with 217 additions and 60 deletions

View File

@@ -30,4 +30,25 @@ defmodule BDS.MapUtils do
def blank_to_nil(nil), do: nil
def blank_to_nil(""), do: nil
def blank_to_nil(value), do: value
@spec safe_atomize_key(atom() | String.t()) :: atom() | String.t()
def safe_atomize_key(key) when is_atom(key), do: key
def safe_atomize_key(key) when is_binary(key) do
String.to_existing_atom(key)
rescue
ArgumentError -> key
end
@spec safe_atomize_keys(term()) :: term()
def safe_atomize_keys(value) when is_map(value) do
value
|> Enum.map(fn {key, nested_value} ->
{safe_atomize_key(key), safe_atomize_keys(nested_value)}
end)
|> Map.new()
end
def safe_atomize_keys(value) when is_list(value), do: Enum.map(value, &safe_atomize_keys/1)
def safe_atomize_keys(value), do: value
end