lib/safe.ex
defmodule ContentfulRenderer.SafeHelpers do
import Phoenix.HTML, only: [html_escape: 1, raw: 1]
def join_safes(list) when is_list(list) do
list
|> Enum.map(&make_safe/1)
|> flatten_safes()
end
defp make_safe({:safe, _str} = safe) do
safe
end
defp make_safe(str) do
html_escape(str)
end
defp flatten_safes(safes) do
safes
|> Enum.reduce(raw([]), fn {:safe, str}, {:safe, acc} ->
raw(acc ++ [str])
end)
end
end