Tuesday, December 21, 2021

Elixir: map to struct

Courtesy of Jose Valim: (https://groups.google.com/forum/#!msg/elixir-lang-talk/6geXOLUeIpI/L9einu4EEAAJ).
1
2
3
4
5
6
7
8
9
10
11
12
def to_struct(kind, attrs) do
  struct = struct(kind)
 
  Logger.debug("attrs = #{inspect(attrs)}")
 
  Enum.reduce(Map.to_list(struct), struct, fn {k, _}, acc ->
    case Map.fetch(attrs, k) do
      {:ok, v} -> %{acc | k => v}
      :error -> acc
    end
  end)
end