From b7feb798c73e0a730d322e659a56b0458b302d2a Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Wed, 24 Jun 2020 10:01:22 +0200
Subject: [PATCH] slightly improved GraphViz

---
 src/main/jastadd/Graphviz.jrag | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/main/jastadd/Graphviz.jrag b/src/main/jastadd/Graphviz.jrag
index a66ae5c..07ca5fc 100644
--- a/src/main/jastadd/Graphviz.jrag
+++ b/src/main/jastadd/Graphviz.jrag
@@ -3,39 +3,40 @@ aspect Graphviz {
 
     StringBuffer b = new StringBuffer();
 
-    b.append("digraph G {\n")
-        .append("rankdir=LR;\n")
-        .append("center=true; margin=1;\n")
+    b.append("digraph \"").append(name()).append("\" {\n")
+        .append("  rankdir=LR;\n")
+        .append("  center=true; margin=1;\n")
         .append("\n")
-        .append("subgraph place {\n")
-        .append("node [shape=circle,fixedsize=true,label=\"\", height=.3,width=.3];\n");
+        .append("  subgraph places {\n")
+        .append("    node [shape=circle,fixedsize=true,label=\"\", height=.3,width=.3];\n");
 
     for (Place place : allPlaces()) {
-      b.append(place.dotId()).append(" [");
+      b.append("    ").append(place.dotId()).append(" [");
       if (place.hasName()) b.append("xlabel=\"").append(place.name()).append("\", ");
       b.append("label=\"").append("0").append("\"];\n");
     }
 
-    b.append("}\n\n");
+    b.append("  }\n\n");
 
-    b.append("subgraph transitions {\n")
-        .append("node [shape=rect,height=0.4,width=.4];\n");
+    b.append("  subgraph transitions {\n")
+        .append("    node [shape=rect,height=0.4,width=.4];\n");
     for (Transition transition : allTransitions()) {
-      b.append(transition.dotId()).append(" [");
+      b.append("    ").append(transition.dotId()).append(" [");
       if (transition.hasName()) b.append("label=\"").append(transition.name()).append("\"");
       b.append("]\n");
     }
 
-    b.append("}\n\n");
+    b.append("  }\n\n");
 
     for (Arc arc : allArcs()) {
-      b.append(arc.getSource().dotId()).append("->").append(arc.getTarget().dotId()).append(";\n");
+      b.append("  ").append(arc.getSource().dotId()).append("->").append(arc.getTarget().dotId()).append(";\n");
     }
     b.append("}\n");
 
     return b.toString();
   }
 
+  syn String PetriNet.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
   syn String PnObject.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
 
 }
-- 
GitLab