MscGen mode

x
 
1
# Sample mscgen program
2
# See http://www.mcternan.me.uk/mscgen or
3
# https://sverweij.github.io/mscgen_js for more samples
4
msc {
5
  # options
6
  hscale="1.2";
7
8
  # entities/ lifelines
9
  a [label="Entity A"],
10
  b [label="Entity B", linecolor="red", arclinecolor="red", textbgcolor="pink"],
11
  c [label="Entity C"];
12
13
  # arcs/ messages
14
  a => c [label="doSomething(args)"];
15
  b => c [label="doSomething(args)"];
16
  c >> * [label="everyone asked me", arcskip="1"];
17
  c =>> c [label="doing something"];
18
  c -x * [label="report back", arcskip="1"];
19
  |||;
20
  --- [label="shows's over, however ..."];
21
  b => a [label="did you see c doing something?"];
22
  a -> b [label="nope"];
23
  b :> a [label="shall we ask again?"];
24
  a => b [label="naah"];
25
  ...;
26
}
27

Xù mode

43
 
1
# Xù - expansions to MscGen to support inline expressions
2
#      https://github.com/sverweij/mscgen_js/blob/master/wikum/xu.md
3
# More samples: https://sverweij.github.io/mscgen_js
4
msc {
5
  hscale="0.8",
6
  width="700";
7
8
  a,
9
  b [label="change store"],
10
  c,
11
  d [label="necro queue"],
12
  e [label="natalis queue"],
13
  f;
14
15
  a =>> b [label="get change list()"];
16
  a alt f [label="changes found"] { /* alt is a xu specific keyword*/
17
    b >> a [label="list of changes"];
18
    a =>> c [label="cull old stuff (list of changes)"];
19
    b loop e [label="for each change"] { // loop is xu specific as well...
20
      /*
21
       * Interesting stuff happens.
22
       */
23
      c =>> b [label="get change()"];
24
      b >> c [label="change"];
25
      c alt e [label="change too old"] {
26
        c =>> d [label="queue(change)"];
27
        --- [label="change newer than latest run"];
28
        c =>> e [label="queue(change)"];
29
        --- [label="all other cases"];
30
        ||| [label="leave well alone"];
31
      };
32
    };
33
34
    c >> a [label="done
35
    processing"];
36
37
    /* shucks! nothing found ...*/
38
    --- [label="nothing found"];
39
    b >> a [label="nothing"];
40
    a note a [label="silent exit"];
41
  };
42
}
43

MsGenny mode

19
 
1
# MsGenny - simplified version of MscGen / Xù
2
#           https://github.com/sverweij/mscgen_js/blob/master/wikum/msgenny.md
3
# More samples: https://sverweij.github.io/mscgen_js
4
a -> b   : a -> b  (signal);
5
a => b   : a => b  (method);
6
b >> a   : b >> a  (return value);
7
a =>> b  : a =>> b (callback);
8
a -x b   : a -x b  (lost);
9
a :> b   : a :> b  (emphasis);
10
a .. b   : a .. b  (dotted);
11
a -- b   : "a -- b straight line";
12
a note a : a note a\n(note),
13
b box b  : b box b\n(action);
14
a rbox a : a rbox a\n(reference),
15
b abox b : b abox b\n(state/ condition);
16
|||      : ||| (empty row);
17
...      : ... (omitted row);
18
---      : --- (comment);
19

Simple mode for highlighting MscGen and two derived sequence chart languages.

MIME types defined: text/x-mscgen text/x-xu text/x-msgenny