def print_node(node, indent = 0)
if node.state == CycleDetector::Node::UNVISITED
node.state = CycleDetector::Node::INPROGRESS
if !@visited.key?(node.name)
head = (' ' * indent ) + "<node name=\"#{ node.name.strip }\""
if node.edges.empty?
puts head + " />"
else
puts head + " >"
node.edges.each do |edge|
print_node(edge, indent + 1)
end
puts (' ' * indent ) + "</node>"
end
@visited[node.name] = true
end
node.state = CycleDetector::Node::DONE
elsif node.state == CycleDetector::Node::INPROGRESS
puts (' ' * indent ) + "<node name=\"#{ node.name.strip }\" />"
end
end