bzixilu / dotplugin

Dot language plugin for Intellij IDEA
55 stars 10 forks source link

Error on defining multiple nodes on the same line #32

Open nt-gt opened 1 year ago

nt-gt commented 1 year ago

I got an error using this plugin on the following line CANC, CMPL, REJE [color=red style=filled]; where it does not like the comma after CANC. It later also complains about RECE, PENU -> ACT_UPDATE_BKG [color=blue label="UC3"]; and several other lines of similar style.

I also had to remove the legend as it did not like part of the HTML table.

Original Full graph code (works with dot -Tpng):

digraph booking {
  START [shape=circle style=filled color=green];
  ACT_POST_BKG [shape=box label="CREATE (POST /v1/bookings)"];
  ACT_UPDATE_BKG [shape=box label="UPDATE (PUT /v1/bookings)"];
  ACT_AMEND_BKG [shape=box label="UPDATE (PUT /v1/bookings)"];
  ACT_CANCEL_BKG [shape=box label="CANCEL (PATCH /v1/bookings)"];

  ASYNC_VALIDATION [shape=diamond label="async validation"]

  CANC, CMPL, REJE [color=red style=filled];

  // Legend

  subgraph legend {
    label = "Legend";
    key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
             <tr><td align="right" port="i1">Shipper -&gt; Carrier</td></tr>
             <tr><td align="right" port="i2">Carrier -&gt; Shipper</td></tr>
         </table>> shape=plaintext];
    key2 [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
              <tr><td port="i1">&nbsp;</td></tr>
              <tr><td port="i2">&nbsp;</td></tr>
         </table>> shape=plaintext];

    key:i1:e -> key2:i1:w [color=blue];
    key:i2:e -> key2:i2:w;

    { rank=same; key key2 }
  }

  // Transitions

  START -> ACT_POST_BKG -> RECE [color=blue];

  CONF -> CMPL [label="via UC9 in EBL" color=red];

  RECE -> ASYNC_VALIDATION;
  ASYNC_VALIDATION -> PENU [label="UC2"];
  ASYNC_VALIDATION -> PENC;

  RECE, PENU -> ACT_UPDATE_BKG [color=blue label="UC3"];

  RECE -> CONF [label="UC5"];
  PENC -> CONF [label="UC5+UC8"];

  PENU -> PENU [label="UC6"];
  CONF -> PENU [label="UC9"];

  PENC, CONF -> ACT_AMEND_BKG [color=blue label="UC7"];

  ACT_AMEND_BKG -> PENC [color=blue label="UC7"];

  ACT_UPDATE_BKG -> PENC [color=blue label="UC3"];

  RECE, PENU, PENC -> REJE [label="UC4"];

  RECE, PENU, PENC, CONF -> ACT_CANCEL_BKG [color=blue label="UC9"];
  RECE, PENU, PENC, CONF -> CANC [label="UC10"];

  ACT_CANCEL_BKG -> CANC [color=blue];

  { rank=same; ACT_CANCEL_BKG CMPL REJE }

}

Rewritten so it compiles and renders in the plugin.

digraph booking {
  START [shape=circle style=filled color=green];
  ACT_POST_BKG [shape=box label="CREATE (POST /v1/bookings)"];
  ACT_UPDATE_BKG [shape=box label="UPDATE (PUT /v1/bookings)"];
  ACT_AMEND_BKG [shape=box label="UPDATE (PUT /v1/bookings)"];
  ACT_CANCEL_BKG [shape=box label="CANCEL (PATCH /v1/bookings)"];

  ASYNC_VALIDATION [shape=diamond label="async validation"]

  CANC [color=red style=filled];
  CMPL [color=red style=filled];
  REJE [color=red style=filled];

  // Transitions

  START -> ACT_POST_BKG -> RECE [color=blue];

  CONF -> CMPL [label="via UC9 in EBL" color=red];

  RECE -> ASYNC_VALIDATION;
  ASYNC_VALIDATION -> PENU [label="UC2"];
  ASYNC_VALIDATION -> PENC;

  RECE -> ACT_UPDATE_BKG [color=blue label="UC3"];
  PENU -> ACT_UPDATE_BKG [color=blue label="UC3"];

  RECE -> CONF [label="UC5"];
  PENC -> CONF [label="UC5+UC8"];

  PENU -> PENU [label="UC6"];
  CONF -> PENU [label="UC9"];

  PENC -> ACT_AMEND_BKG [color=blue label="UC7"];
  CONF -> ACT_AMEND_BKG [color=blue label="UC7"];

  ACT_AMEND_BKG -> PENC [color=blue label="UC7"];

  ACT_UPDATE_BKG -> PENC [color=blue label="UC3"];

  RECE -> REJE [label="UC4"];
  PENU -> REJE [label="UC4"];
  PENC -> REJE [label="UC4"];

  RECE -> ACT_CANCEL_BKG [color=blue label="UC9"];
  PENU -> ACT_CANCEL_BKG [color=blue label="UC9"];
  PENC -> ACT_CANCEL_BKG [color=blue label="UC9"];
  CONF -> ACT_CANCEL_BKG [color=blue label="UC9"];
  RECE -> CANC [label="UC10"];
  PENU -> CANC [label="UC10"];
  PENC -> CANC [label="UC10"];
  CONF -> CANC [label="UC10"];

  ACT_CANCEL_BKG -> CANC [color=blue];

  { rank=same; ACT_CANCEL_BKG CMPL REJE }

}