| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | <!doctype html> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <title>CodeMirror: MscGen mode</title> | 
					
						
							|  |  |  | <meta charset="utf-8"/> | 
					
						
							|  |  |  | <link rel=stylesheet href="../../doc/docs.css"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <link rel="stylesheet" href="../../lib/codemirror.css"> | 
					
						
							|  |  |  | <script src="../../lib/codemirror.js"></script> | 
					
						
							|  |  |  | <script src="mscgen.js"></script> | 
					
						
							|  |  |  | <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> | 
					
						
							|  |  |  | <div id=nav> | 
					
						
							| 
									
										
										
										
											2018-10-07 12:02:07 +02:00
										 |  |  |   <a href="https://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |   <ul> | 
					
						
							|  |  |  |     <li><a href="../../index.html">Home</a> | 
					
						
							|  |  |  |     <li><a href="../../doc/manual.html">Manual</a> | 
					
						
							|  |  |  |     <li><a href="https://github.com/codemirror/codemirror">Code</a> | 
					
						
							|  |  |  |   </ul> | 
					
						
							|  |  |  |   <ul> | 
					
						
							|  |  |  |     <li><a href="../index.html">Language modes</a> | 
					
						
							|  |  |  |     <li><a class=active href="#">MscGen</a> | 
					
						
							|  |  |  |   </ul> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <article> | 
					
						
							|  |  |  | <h2>MscGen mode</h2> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div><textarea id="mscgen-code"> | 
					
						
							|  |  |  | # Sample mscgen program | 
					
						
							|  |  |  | # See http://www.mcternan.me.uk/mscgen or | 
					
						
							|  |  |  | # https://sverweij.github.io/mscgen_js for more samples | 
					
						
							|  |  |  | msc { | 
					
						
							|  |  |  |   # options | 
					
						
							|  |  |  |   hscale="1.2"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # entities/ lifelines | 
					
						
							|  |  |  |   a [label="Entity A"], | 
					
						
							|  |  |  |   b [label="Entity B", linecolor="red", arclinecolor="red", textbgcolor="pink"], | 
					
						
							|  |  |  |   c [label="Entity C"]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # arcs/ messages | 
					
						
							|  |  |  |   a => c [label="doSomething(args)"]; | 
					
						
							|  |  |  |   b => c [label="doSomething(args)"]; | 
					
						
							|  |  |  |   c >> * [label="everyone asked me", arcskip="1"]; | 
					
						
							|  |  |  |   c =>> c [label="doing something"]; | 
					
						
							|  |  |  |   c -x * [label="report back", arcskip="1"]; | 
					
						
							|  |  |  |   |||; | 
					
						
							|  |  |  |   --- [label="shows's over, however ..."]; | 
					
						
							|  |  |  |   b => a [label="did you see c doing something?"]; | 
					
						
							|  |  |  |   a -> b [label="nope"]; | 
					
						
							|  |  |  |   b :> a [label="shall we ask again?"]; | 
					
						
							|  |  |  |   a => b [label="naah"]; | 
					
						
							|  |  |  |   ...; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </textarea></div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <h2>Xù mode</h2> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div><textarea id="xu-code"> | 
					
						
							|  |  |  | # Xù - expansions to MscGen to support inline expressions | 
					
						
							|  |  |  | #      https://github.com/sverweij/mscgen_js/blob/master/wikum/xu.md | 
					
						
							|  |  |  | # More samples: https://sverweij.github.io/mscgen_js | 
					
						
							|  |  |  | xu { | 
					
						
							|  |  |  |   hscale="0.8", | 
					
						
							|  |  |  |   width="700"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   a, | 
					
						
							|  |  |  |   b [label="change store"], | 
					
						
							|  |  |  |   c, | 
					
						
							|  |  |  |   d [label="necro queue"], | 
					
						
							|  |  |  |   e [label="natalis queue"], | 
					
						
							|  |  |  |   f; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   a =>> b [label="get change list()"]; | 
					
						
							|  |  |  |   a alt f [label="changes found"] { /* alt is a xu specific keyword*/ | 
					
						
							|  |  |  |     b >> a [label="list of changes"]; | 
					
						
							|  |  |  |     a =>> c [label="cull old stuff (list of changes)"]; | 
					
						
							|  |  |  |     b loop e [label="for each change"] { // loop is xu specific as well... | 
					
						
							|  |  |  |       /* | 
					
						
							|  |  |  |        * Interesting stuff happens. | 
					
						
							|  |  |  |        */ | 
					
						
							|  |  |  |       c =>> b [label="get change()"]; | 
					
						
							|  |  |  |       b >> c [label="change"]; | 
					
						
							|  |  |  |       c alt e [label="change too old"] { | 
					
						
							|  |  |  |         c =>> d [label="queue(change)"]; | 
					
						
							|  |  |  |         --- [label="change newer than latest run"]; | 
					
						
							|  |  |  |         c =>> e [label="queue(change)"]; | 
					
						
							|  |  |  |         --- [label="all other cases"]; | 
					
						
							|  |  |  |         ||| [label="leave well alone"]; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     c >> a [label="done | 
					
						
							|  |  |  |     processing"]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* shucks! nothing found ...*/ | 
					
						
							|  |  |  |     --- [label="nothing found"]; | 
					
						
							|  |  |  |     b >> a [label="nothing"]; | 
					
						
							|  |  |  |     a note a [label="silent exit"]; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </textarea></div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <h2>MsGenny mode</h2> | 
					
						
							|  |  |  | <div><textarea id="msgenny-code"> | 
					
						
							|  |  |  | # MsGenny - simplified version of MscGen / Xù | 
					
						
							|  |  |  | #           https://github.com/sverweij/mscgen_js/blob/master/wikum/msgenny.md | 
					
						
							|  |  |  | # More samples: https://sverweij.github.io/mscgen_js | 
					
						
							|  |  |  | a -> b   : a -> b  (signal); | 
					
						
							|  |  |  | a => b   : a => b  (method); | 
					
						
							|  |  |  | b >> a   : b >> a  (return value); | 
					
						
							|  |  |  | a =>> b  : a =>> b (callback); | 
					
						
							|  |  |  | a -x b   : a -x b  (lost); | 
					
						
							|  |  |  | a :> b   : a :> b  (emphasis); | 
					
						
							|  |  |  | a .. b   : a .. b  (dotted); | 
					
						
							|  |  |  | a -- b   : "a -- b straight line"; | 
					
						
							|  |  |  | a note a : a note a\n(note), | 
					
						
							|  |  |  | b box b  : b box b\n(action); | 
					
						
							|  |  |  | a rbox a : a rbox a\n(reference), | 
					
						
							|  |  |  | b abox b : b abox b\n(state/ condition); | 
					
						
							|  |  |  | |||      : ||| (empty row); | 
					
						
							|  |  |  | ...      : ... (omitted row); | 
					
						
							|  |  |  | ---      : --- (comment); | 
					
						
							|  |  |  | </textarea></div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <p> | 
					
						
							|  |  |  |       Simple mode for highlighting MscGen and two derived sequence | 
					
						
							|  |  |  |       chart languages. | 
					
						
							|  |  |  |     </p> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <script> | 
					
						
							|  |  |  |       var mscgenEditor = CodeMirror.fromTextArea(document.getElementById("mscgen-code"), { | 
					
						
							|  |  |  |         lineNumbers: true, | 
					
						
							|  |  |  |         mode: "text/x-mscgen", | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       var xuEditor = CodeMirror.fromTextArea(document.getElementById("xu-code"), { | 
					
						
							|  |  |  |         lineNumbers: true, | 
					
						
							|  |  |  |         mode: "text/x-xu", | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       var msgennyEditor = CodeMirror.fromTextArea(document.getElementById("msgenny-code"), { | 
					
						
							|  |  |  |         lineNumbers: true, | 
					
						
							|  |  |  |         mode: "text/x-msgenny", | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <p><strong>MIME types defined:</strong> | 
					
						
							|  |  |  |       <code>text/x-mscgen</code> | 
					
						
							|  |  |  |       <code>text/x-xu</code> | 
					
						
							|  |  |  |       <code>text/x-msgenny</code> | 
					
						
							|  |  |  |     </p> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </article> |