# File lib/ancestry/class_methods.rb, line 42 def arrange_nodes(nodes) node_ids = Set.new(nodes.map(&:id)) index = Hash.new { |h, k| h[k] = {} } nodes.each_with_object({}) do |node, arranged| children = index[node.id] index[node.parent_id][node] = children arranged[node] = children unless node_ids.include?(node.parent_id) end end