labels.add(label);
n.inbound.add(this);
}
+ public String getParentName() {
+ if (inbound.size()==1 && inbound.get(0).simple())
+ return inbound.get(0).getParentName();
+ return name();
+ }
public String name() {
if (inbound.size()==1 && inbound.get(0).simple())
- return inbound.get(0).name()+":node_"+idx;
+ return inbound.get(0).getParentName()+":node_"+idx;
return "node_"+idx;
}
public void edges(PrintWriter pw) {
for(int i=0; i<edges.size(); i++) {
Node n = edges.get(i);
Object label = labels.get(i);
- pw.println(" "+name()+" -> " + n.name() + " [color="+color+" " +(label==null?"":("label=\""+label+"\""))+ "];\n");
+ pw.println(" "+name()+" -> " + n.name() + " [color="+color+" "
+ +(label==null?"":("label=\""+StringUtil.escapify(label.toString(), "\\\"\r\n")+"\""))+ "];\n");
}
}
public int numEdges() { return edges.size(); }
if (!first) pw.print("|");
first = false;
pw.print("<node_"+n.idx+">");
- pw.print(StringUtil.escapify(n.label,"\\\""));
+ pw.print(StringUtil.escapify(n.label,"\\\"\r\n"));
}
if (!complex) pw.print("}");
- pw.print("\"");
+ pw.print("\" ");
} else {
pw.print(" label=\"");
- pw.print(StringUtil.escapify(label,"\\\""));
- pw.print("\"");
+ pw.print(StringUtil.escapify(label,"\\\"\r\n"));
+ pw.print("\" ");
}
pw.print("color="+color);
- if (comment!=null) pw.print(" comment=\""+StringUtil.escapify(comment,"\\\"")+"\" ");
+ if (comment!=null) pw.print(" comment=\""+StringUtil.escapify(comment,"\\\"\r\n")+"\" ");
pw.print("];\n");
}
}
Runtime.getRuntime().exec(new String[] { "dot", "-Tsvg" });
}
+ public void dump(OutputStream os) { dump(new PrintWriter(new OutputStreamWriter(os))); }
public void dump(PrintWriter pw) {
IdentityHashMap<Node,Node> done = new IdentityHashMap<Node,Node>();
pw.println("digraph G { rankdir=LR; ordering=out; \n");