comparison .cms/lib/codemirror/mode/mscgen/index.html @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:78edf6b517a0
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>