Groups clones by the directories they span so reporters can produce higher-level summaries.
Summary
Functions
Group clones by the set of parent directories involved in each clone.
Types
@type group() :: %{ key: tuple(), directories: [String.t()], clones: [grouped_clone()], total_mass: non_neg_integer() }
@type grouped_clone() :: %{clone: ExDNA.Detection.Clone.t(), index: pos_integer()}
@type ordered_item() :: {:group, group()} | {:clone, grouped_clone()}
@type result() :: %{ groups: [group()], ungrouped: [grouped_clone()], ordered: [ordered_item()] }
Functions
@spec group([ExDNA.Detection.Clone.t()]) :: result()
Group clones by the set of parent directories involved in each clone.
Only directory sets shared by 2 or more clones form a group. Clones with unique directory sets stay ungrouped.