defmodule ExWrapper do @moduledoc """ Some help functions to make wrapper from erlang lib. """ @doc """ This function convert all old charslist in all datastructure to BitString, recursively. """ def convert(term) when is_list(term) do case not Enum.any?(term, &(not is_integer(&1) or (0 > &1 < 127))) do true -> to_string(term) false -> Enum.map(term, &(convert(&1))) end end def convert(term) when is_map(term) do Enum.map(term, &(convert(&1))) end def convert(term) when is_tuple(term) do term |> Tuple.to_list |> convert |> List.to_tuple end def convert(term) do term end @doc """ This function deconvert all BitString in all datastructure to old charslist, recursively. """ def deconvert(term) when is_bitstring(term) do String.to_charlist(term) end def deconvert(term) when is_list(term) do Enum.map(term, &(deconvert(&1))) end def deconvert(term) when is_map(term) do Enum.map(term, &(deconvert(&1))) end def deconvert(term) when is_tuple(term) do term |> Tuple.to_list |> deconvert |> List.to_tuple end end