0
|
1 <!doctype html>
|
|
2
|
|
3 <title>CodeMirror: MscGen mode</title>
|
|
4 <meta charset="utf-8"/>
|
|
5 <link rel=stylesheet href="../../doc/docs.css">
|
|
6
|
|
7 <link rel="stylesheet" href="../../lib/codemirror.css">
|
|
8 <script src="../../lib/codemirror.js"></script>
|
|
9 <script src="mscgen.js"></script>
|
|
10 <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
|
|
11 <div id=nav>
|
|
12 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a>
|
|
13 <ul>
|
|
14 <li><a href="../../index.html">Home</a>
|
|
15 <li><a href="../../doc/manual.html">Manual</a>
|
|
16 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
|
|
17 </ul>
|
|
18 <ul>
|
|
19 <li><a href="../index.html">Language modes</a>
|
|
20 <li><a class=active href="#">MscGen</a>
|
|
21 </ul>
|
|
22 </div>
|
|
23
|
|
24 <article>
|
|
25 <h2>MscGen mode</h2>
|
|
26
|
|
27 <div><textarea id="mscgen-code">
|
|
28 # Sample mscgen program
|
|
29 # See http://www.mcternan.me.uk/mscgen or
|
|
30 # https://sverweij.github.io/mscgen_js for more samples
|
|
31 msc {
|
|
32 # options
|
|
33 hscale="1.2";
|
|
34
|
|
35 # entities/ lifelines
|
|
36 a [label="Entity A"],
|
|
37 b [label="Entity B", linecolor="red", arclinecolor="red", textbgcolor="pink"],
|
|
38 c [label="Entity C"];
|
|
39
|
|
40 # arcs/ messages
|
|
41 a => c [label="doSomething(args)"];
|
|
42 b => c [label="doSomething(args)"];
|
|
43 c >> * [label="everyone asked me", arcskip="1"];
|
|
44 c =>> c [label="doing something"];
|
|
45 c -x * [label="report back", arcskip="1"];
|
|
46 |||;
|
|
47 --- [label="shows's over, however ..."];
|
|
48 b => a [label="did you see c doing something?"];
|
|
49 a -> b [label="nope"];
|
|
50 b :> a [label="shall we ask again?"];
|
|
51 a => b [label="naah"];
|
|
52 ...;
|
|
53 }
|
|
54 </textarea></div>
|
|
55
|
|
56 <h2>Xù mode</h2>
|
|
57
|
|
58 <div><textarea id="xu-code">
|
|
59 # Xù - expansions to MscGen to support inline expressions
|
|
60 # https://github.com/sverweij/mscgen_js/blob/master/wikum/xu.md
|
|
61 # More samples: https://sverweij.github.io/mscgen_js
|
|
62 xu {
|
|
63 hscale="0.8",
|
|
64 width="700";
|
|
65
|
|
66 a,
|
|
67 b [label="change store"],
|
|
68 c,
|
|
69 d [label="necro queue"],
|
|
70 e [label="natalis queue"],
|
|
71 f;
|
|
72
|
|
73 a =>> b [label="get change list()"];
|
|
74 a alt f [label="changes found"] { /* alt is a xu specific keyword*/
|
|
75 b >> a [label="list of changes"];
|
|
76 a =>> c [label="cull old stuff (list of changes)"];
|
|
77 b loop e [label="for each change"] { // loop is xu specific as well...
|
|
78 /*
|
|
79 * Interesting stuff happens.
|
|
80 */
|
|
81 c =>> b [label="get change()"];
|
|
82 b >> c [label="change"];
|
|
83 c alt e [label="change too old"] {
|
|
84 c =>> d [label="queue(change)"];
|
|
85 --- [label="change newer than latest run"];
|
|
86 c =>> e [label="queue(change)"];
|
|
87 --- [label="all other cases"];
|
|
88 ||| [label="leave well alone"];
|
|
89 };
|
|
90 };
|
|
91
|
|
92 c >> a [label="done
|
|
93 processing"];
|
|
94
|
|
95 /* shucks! nothing found ...*/
|
|
96 --- [label="nothing found"];
|
|
97 b >> a [label="nothing"];
|
|
98 a note a [label="silent exit"];
|
|
99 };
|
|
100 }
|
|
101 </textarea></div>
|
|
102
|
|
103 <h2>MsGenny mode</h2>
|
|
104 <div><textarea id="msgenny-code">
|
|
105 # MsGenny - simplified version of MscGen / Xù
|
|
106 # https://github.com/sverweij/mscgen_js/blob/master/wikum/msgenny.md
|
|
107 # More samples: https://sverweij.github.io/mscgen_js
|
|
108 a -> b : a -> b (signal);
|
|
109 a => b : a => b (method);
|
|
110 b >> a : b >> a (return value);
|
|
111 a =>> b : a =>> b (callback);
|
|
112 a -x b : a -x b (lost);
|
|
113 a :> b : a :> b (emphasis);
|
|
114 a .. b : a .. b (dotted);
|
|
115 a -- b : "a -- b straight line";
|
|
116 a note a : a note a\n(note),
|
|
117 b box b : b box b\n(action);
|
|
118 a rbox a : a rbox a\n(reference),
|
|
119 b abox b : b abox b\n(state/ condition);
|
|
120 ||| : ||| (empty row);
|
|
121 ... : ... (omitted row);
|
|
122 --- : --- (comment);
|
|
123 </textarea></div>
|
|
124
|
|
125 <p>
|
|
126 Simple mode for highlighting MscGen and two derived sequence
|
|
127 chart languages.
|
|
128 </p>
|
|
129
|
|
130 <script>
|
|
131 var mscgenEditor = CodeMirror.fromTextArea(document.getElementById("mscgen-code"), {
|
|
132 lineNumbers: true,
|
|
133 mode: "text/x-mscgen",
|
|
134 });
|
|
135 var xuEditor = CodeMirror.fromTextArea(document.getElementById("xu-code"), {
|
|
136 lineNumbers: true,
|
|
137 mode: "text/x-xu",
|
|
138 });
|
|
139 var msgennyEditor = CodeMirror.fromTextArea(document.getElementById("msgenny-code"), {
|
|
140 lineNumbers: true,
|
|
141 mode: "text/x-msgenny",
|
|
142 });
|
|
143 </script>
|
|
144
|
|
145 <p><strong>MIME types defined:</strong>
|
|
146 <code>text/x-mscgen</code>
|
|
147 <code>text/x-xu</code>
|
|
148 <code>text/x-msgenny</code>
|
|
149 </p>
|
|
150
|
|
151 </article>
|