Chromium Code Reviews| Index: compiler/java/com/google/dart/compiler/ast/viz/DotWriter.java |
| =================================================================== |
| --- compiler/java/com/google/dart/compiler/ast/viz/DotWriter.java (revision 2358) |
| +++ compiler/java/com/google/dart/compiler/ast/viz/DotWriter.java (working copy) |
| @@ -72,26 +72,32 @@ |
| } |
| protected void write(String nodeType, DartNode node, String data) { |
| - String nodeData = node.getSourceLine() + ":" + node.getSourceStart() + ":" |
| - + node.getSourceLength() + "_" + nodeType; |
| - nodeMap.put(node, nodeData); |
| + String nodeId = node.getObjectIdentifier(); |
|
Kelly Norton
2011/12/16 20:01:17
tabs.
|
| + nodeMap.put(node, nodeId); |
| DartNode parent = node.getParent(); |
| if (parent == null) { |
| parent = currentUnit; |
| } |
| String styleAttr = getStyleAttr(nodeType, node); |
| String label = getLabel(nodeType, node, data); |
| - nodes.append(String.format("\t\"%s\" [label=\"%s\"%s];\n", nodeData, label, styleAttr)); |
| - edges.append(String.format("\t\"%s\" -> \"%s\";\n", nodeMap.get(parent), nodeData)); |
| + nodes.append(String.format("\t\"%s\" [label=\"%s\"%s];\n", nodeId, label, styleAttr)); |
| + edges.append(String.format("\t\"%s\" -> \"%s\";\n", nodeMap.get(parent), nodeId)); |
| } |
| private String getLabel(String nodeType, DartNode node, String data) { |
| StringBuffer label = new StringBuffer(nodeType); |
| if (printDataNodes.contains(nodeType) || node instanceof DartExpression) { |
| - label.append(String.format("\\n%s", data.replaceAll("\"", "'"))); |
| + label.append(String.format("\\n%s", escape(data))); |
| } |
| return label.toString(); |
| } |
| + |
| + private String escape(String data){ |
| + data = data.replaceAll("\"", "'"); |
|
zundel
2011/12/16 20:49:05
odd indentation
|
| + data = data.replaceAll("\n", "\\n"); |
| + data = data.replaceAll("\r", "\\r"); |
|
zundel
2011/12/16 20:49:05
this is a bit optimisitc. If you already have a s
|
| + return data; |
| + } |
| private String getStyleAttr(String nodeType, DartNode node) { |
| StringBuffer style = new StringBuffer(); |
| @@ -102,6 +108,11 @@ |
| } else if ("DartMethodDefinition".equals(nodeType)) { |
| style.append(", color=blue"); |
| } |
| + |
| + if(node.isInstrumentedNode()){ |
| + style.append(", style=filled, fillcolor=yellow"); |
| + } |
| + |
| return style.toString(); |
| } |