module Dwarftree::TreeMerger

Public Class Methods

merge!(nodes) click to toggle source

@param [Array<Dwarftree::DIE::*>] nodes

# File lib/dwarftree/tree_merger.rb, line 3
def merge!(nodes)
  merged = []
  nodes.group_by(&:attributes).each do |attrs, same_nodes|
    first_node = same_nodes.first
    same_nodes.drop(1).each do |node|
      first_node.children.push(*node.children)
      first_node.merged << node
    end
    merged << first_node
  end
  nodes.replace(merged)

  nodes.each do |node|
    merge!(node.children)
  end
end