Files

35 lines
1.0 KiB
Elixir

defmodule Outlook.InternalTree.Translation do
alias Outlook.InternalTree.{InternalNode,TranslationUnit}
def render_translation([%TranslationUnit{} = tunit | rest], translation) do
tl_tunit = Map.get(translation, tunit.nid)
[ %TranslationUnit{tl_tunit |
eph: add_title_attribute(tunit.eph, tunit.content)
} | render_translation(rest, translation) ]
end
def render_translation([%InternalNode{type: :element} = node | rest], translation) do
[ %InternalNode{node |
content: render_translation(node.content, translation)
} | render_translation(rest, translation) ]
end
def render_translation([node | rest], translation) do
[ node | render_translation(rest, translation) ]
end
def render_translation([], _), do: []
defp add_title_attribute(eph, html_string) do
attributes = Map.get(eph, :attributes, %{})
|> Map.put(:title,
html_string
|> Floki.parse_fragment!()
|> Floki.text()
)
Map.put(eph, :attributes, attributes)
end
end