package com.technophobia.substeps.runner; import com.google.common.base.Strings; import com.technophobia.substeps.execution.AbstractExecutionNodeVisitor; import com.technophobia.substeps.execution.node.IExecutionNode; import com.technophobia.substeps.execution.node.NodeWithChildren; public class TreePrinter extends AbstractExecutionNodeVisitor<Void> { String asString = ""; public static String asString(IExecutionNode executionNode) { TreePrinter treePrinter = new TreePrinter(); executionNode.dispatch(treePrinter); return treePrinter.asString; } private TreePrinter() { // Private cons } @Override public Void visit(IExecutionNode node) { asString += "\n"; return null; } @Override public Void visit(NodeWithChildren<?> nodeWithChildren) { visit((IExecutionNode) nodeWithChildren); for (IExecutionNode childNode : nodeWithChildren.getChildren()) { asString += Strings.repeat("\t", nodeWithChildren.getDepth()); childNode.dispatch(this); asString += "\n"; } return null; } }