index.html (4310B)
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="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></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/codemirror">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>