Cleanup TunitModifications

This commit is contained in:
Thelonius Kort
2023-03-28 23:44:19 +02:00
parent 5ac1a6c8e7
commit 3b8b1b19f0

View File

@ -2,8 +2,6 @@ defmodule Outlook.InternalTree.TunitModifications do
alias Outlook.InternalTree.{InternalNode,TranslationUnit} alias Outlook.InternalTree.{InternalNode,TranslationUnit}
require Logger
def modifiers do def modifiers do
[ [
%{ %{
@ -25,20 +23,21 @@ defmodule Outlook.InternalTree.TunitModifications do
defp unite_with_next(nodelist, tu_ids) when is_list(tu_ids) do defp unite_with_next(nodelist, tu_ids) when is_list(tu_ids) do
ids_to_process = Enum.reverse(tu_ids) ids_to_process = Enum.reverse(tu_ids)
Logger.info "nu: #{inspect tu_ids}"
Enum.reduce(ids_to_process, nodelist, fn id, nodes -> unite_with_next(nodes, id) end) Enum.reduce(ids_to_process, nodelist, fn id, nodes -> unite_with_next(nodes, id) end)
end end
defp unite_with_next(nodelist, tu_id) do defp unite_with_next(nodelist, tu_id) do
ind = Enum.find_index(nodelist, fn n -> n.nid == tu_id end) ind = Enum.find_index(nodelist, fn n -> n.nid == tu_id end)
case Enum.slice(nodelist, ind, 2) do nodes = Enum.slice(nodelist, ind, 2)
[unit, next] -> unite_with_next(nodelist, ind, nodes)
end
defp unite_with_next(nodelist, ind, [unit,next]) do
nunit = %TranslationUnit{unit | content: unit.content <> next.content} nunit = %TranslationUnit{unit | content: unit.content <> next.content}
nodelist nodelist
|> List.replace_at(ind, nunit) |> List.replace_at(ind, nunit)
|> List.delete_at(ind + 1) |> List.delete_at(ind + 1)
[_] ->
nodelist
end end
defp unite_with_next(nodelist, _, [_]) do
nodelist
end end
defp split_tunit(_nodelist, _tu_ids) do defp split_tunit(_nodelist, _tu_ids) do