diff .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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.cms/lib/codemirror/mode/mscgen/index.html	Fri Oct 11 22:40:23 2024 +0000
@@ -0,0 +1,151 @@
+<!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>
+  <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a>
+  <ul>
+    <li><a href="../../index.html">Home</a>
+    <li><a href="../../doc/manual.html">Manual</a>
+    <li><a href="https://github.com/codemirror/codemirror5">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>