これと他の多くのネストされたデータの変換を行うことができるライブラリがあります。
iex(1)> h PhStTransform.transform
def transform(data_structure, function_map, depth \\ [])
任意のエリクサーdata structure
を変換するために与えられたfunction_map
を使用しています。
function_map
には、 に変換されるデータ型に対応するキーが含まれている必要があります。各キーは、そのデータ型とオプションで深さリストを引数として持つ関数にマップする必要があります。
depth
は、内部再帰を目的としているため、常にデフォルト値のままにしてください。
例
iex> atom_to_string_potion = %{ Atom => fn(atom) -> Atom.to_string(atom) end }
iex> PhStTransform.transform([[:a], :b, {:c, :e}], atom_to_string_potion)
[["a"], "b", {"c", "e"}]
iex> foo = {"foo", "bar", {"foo", "bar"}}
{"foo", "bar", {"foo", "bar"}}
iex> PhStTransform.transform(foo, %{Tuple => fn(tuple) -> Tuple.to_list(tuple) end})
["foo", "bar", ["foo", "bar"]]
https://hex.pm/packages/phst_transform