diff --git a/lib/outlook/internal_tree/internal_tree.ex b/lib/outlook/internal_tree/internal_tree.ex index b3e3166..08e1d69 100644 --- a/lib/outlook/internal_tree/internal_tree.ex +++ b/lib/outlook/internal_tree/internal_tree.ex @@ -58,4 +58,19 @@ defmodule Outlook.InternalTree.InternalTree do |> Enum.into(node_atts) %{node | eph: Map.put(node.eph, :attributes, attributes)} end + + + def collect_tunit_ids([%TranslationUnit{} = node | rest]) do + [node.nid | collect_tunit_ids(rest)] + end + + def collect_tunit_ids([%{type: :element} = node | rest]) do + collect_tunit_ids(node.content) ++ collect_tunit_ids(rest) + end + + def collect_tunit_ids([node | rest]) do + collect_tunit_ids(rest) + end + + def collect_tunit_ids([]), do: [] end