+ defp string_is_valid_unicode(data) when is_binary(data) do
+ data
+ |> :unicode.characters_to_binary()
+ |> clean_string()
+ end
+
+ defp string_is_valid_unicode(data), do: {:ok, data}
+
+ defp clean_string({:error, _, _}), do: {:error, "Invalid data"}
+ defp clean_string(data), do: {:ok, data}
+
+ defp clean_parsed_data(data) do
+ data
+ |> Enum.reject(fn {_, val} ->
+ case string_is_valid_unicode(val) do
+ {:ok, _} -> false
+ _ -> true
+ end
+ end)
+ |> Map.new()