openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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>