mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-06-04 16:54:11 -04:00
Upgrade CodeMirror to 5.10.1 and now support fullscreen, jump-to-line in editor
This commit is contained in:
parent
ce65e58096
commit
eaa8ccaccb
381 changed files with 6726 additions and 2636 deletions
151
public/vendor/codemirror/mode/mscgen/index.html
vendored
Normal file
151
public/vendor/codemirror/mode/mscgen/index.html
vendored
Normal file
|
@ -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="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
|
||||
<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
|
||||
msc {
|
||||
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>
|
169
public/vendor/codemirror/mode/mscgen/mscgen.js
vendored
Normal file
169
public/vendor/codemirror/mode/mscgen/mscgen.js
vendored
Normal file
|
@ -0,0 +1,169 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
// mode(s) for the sequence chart dsl's mscgen, xù and msgenny
|
||||
// For more information on mscgen, see the site of the original author:
|
||||
// http://www.mcternan.me.uk/mscgen
|
||||
//
|
||||
// This mode for mscgen and the two derivative languages were
|
||||
// originally made for use in the mscgen_js interpreter
|
||||
// (https://sverweij.github.io/mscgen_js)
|
||||
|
||||
(function(mod) {
|
||||
if ( typeof exports == "object" && typeof module == "object")// CommonJS
|
||||
mod(require("../../lib/codemirror"));
|
||||
else if ( typeof define == "function" && define.amd)// AMD
|
||||
define(["../../lib/codemirror"], mod);
|
||||
else// Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
var languages = {
|
||||
mscgen: {
|
||||
"keywords" : ["msc"],
|
||||
"options" : ["hscale", "width", "arcgradient", "wordwraparcs"],
|
||||
"attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"],
|
||||
"brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists
|
||||
"arcsWords" : ["note", "abox", "rbox", "box"],
|
||||
"arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
|
||||
"singlecomment" : ["//", "#"],
|
||||
"operators" : ["="]
|
||||
},
|
||||
xu: {
|
||||
"keywords" : ["msc"],
|
||||
"options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"],
|
||||
"attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"],
|
||||
"brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists
|
||||
"arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"],
|
||||
"arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
|
||||
"singlecomment" : ["//", "#"],
|
||||
"operators" : ["="]
|
||||
},
|
||||
msgenny: {
|
||||
"keywords" : null,
|
||||
"options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"],
|
||||
"attributes" : null,
|
||||
"brackets" : ["\\{", "\\}"],
|
||||
"arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"],
|
||||
"arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"],
|
||||
"singlecomment" : ["//", "#"],
|
||||
"operators" : ["="]
|
||||
}
|
||||
}
|
||||
|
||||
CodeMirror.defineMode("mscgen", function(_, modeConfig) {
|
||||
var language = languages[modeConfig && modeConfig.language || "mscgen"]
|
||||
return {
|
||||
startState: startStateFn,
|
||||
copyState: copyStateFn,
|
||||
token: produceTokenFunction(language),
|
||||
lineComment : "#",
|
||||
blockCommentStart : "/*",
|
||||
blockCommentEnd : "*/"
|
||||
};
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-mscgen", "mscgen");
|
||||
CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"});
|
||||
CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"});
|
||||
|
||||
function wordRegexpBoundary(pWords) {
|
||||
return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i");
|
||||
}
|
||||
|
||||
function wordRegexp(pWords) {
|
||||
return new RegExp("(" + pWords.join("|") + ")", "i");
|
||||
}
|
||||
|
||||
function startStateFn() {
|
||||
return {
|
||||
inComment : false,
|
||||
inString : false,
|
||||
inAttributeList : false,
|
||||
inScript : false
|
||||
};
|
||||
}
|
||||
|
||||
function copyStateFn(pState) {
|
||||
return {
|
||||
inComment : pState.inComment,
|
||||
inString : pState.inString,
|
||||
inAttributeList : pState.inAttributeList,
|
||||
inScript : pState.inScript
|
||||
};
|
||||
}
|
||||
|
||||
function produceTokenFunction(pConfig) {
|
||||
|
||||
return function(pStream, pState) {
|
||||
if (pStream.match(wordRegexp(pConfig.brackets), true, true)) {
|
||||
return "bracket";
|
||||
}
|
||||
/* comments */
|
||||
if (!pState.inComment) {
|
||||
if (pStream.match(/\/\*[^\*\/]*/, true, true)) {
|
||||
pState.inComment = true;
|
||||
return "comment";
|
||||
}
|
||||
if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) {
|
||||
pStream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
}
|
||||
if (pState.inComment) {
|
||||
if (pStream.match(/[^\*\/]*\*\//, true, true))
|
||||
pState.inComment = false;
|
||||
else
|
||||
pStream.skipToEnd();
|
||||
return "comment";
|
||||
}
|
||||
/* strings */
|
||||
if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) {
|
||||
pState.inString = true;
|
||||
return "string";
|
||||
}
|
||||
if (pState.inString) {
|
||||
if (pStream.match(/[^\"]*\"/, true, true))
|
||||
pState.inString = false;
|
||||
else
|
||||
pStream.skipToEnd();
|
||||
return "string";
|
||||
}
|
||||
/* keywords & operators */
|
||||
if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true))
|
||||
return "keyword";
|
||||
|
||||
if (pStream.match(wordRegexpBoundary(pConfig.options), true, true))
|
||||
return "keyword";
|
||||
|
||||
if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true))
|
||||
return "keyword";
|
||||
|
||||
if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true))
|
||||
return "keyword";
|
||||
|
||||
if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true))
|
||||
return "operator";
|
||||
|
||||
/* attribute lists */
|
||||
if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) {
|
||||
pConfig.inAttributeList = true;
|
||||
return "bracket";
|
||||
}
|
||||
if (pConfig.inAttributeList) {
|
||||
if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) {
|
||||
return "attribute";
|
||||
}
|
||||
if (pStream.match(/]/, true, true)) {
|
||||
pConfig.inAttributeList = false;
|
||||
return "bracket";
|
||||
}
|
||||
}
|
||||
|
||||
pStream.next();
|
||||
return "base";
|
||||
};
|
||||
}
|
||||
|
||||
});
|
75
public/vendor/codemirror/mode/mscgen/mscgen_test.js
vendored
Normal file
75
public/vendor/codemirror/mode/mscgen/mscgen_test.js
vendored
Normal file
|
@ -0,0 +1,75 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
||||
|
||||
MT("empty chart",
|
||||
"[keyword msc][bracket {]",
|
||||
"[base ]",
|
||||
"[bracket }]"
|
||||
);
|
||||
|
||||
MT("comments",
|
||||
"[comment // a single line comment]",
|
||||
"[comment # another single line comment /* and */ ignored here]",
|
||||
"[comment /* A multi-line comment even though it contains]",
|
||||
"[comment msc keywords and \"quoted text\"*/]");
|
||||
|
||||
MT("strings",
|
||||
"[string \"// a string\"]",
|
||||
"[string \"a string running over]",
|
||||
"[string two lines\"]",
|
||||
"[string \"with \\\"escaped quote\"]"
|
||||
);
|
||||
|
||||
MT("xù/ msgenny keywords classify as 'base'",
|
||||
"[base watermark]",
|
||||
"[base alt loop opt ref else break par seq assert]"
|
||||
);
|
||||
|
||||
MT("mscgen options classify as keyword",
|
||||
"[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
|
||||
);
|
||||
|
||||
MT("mscgen arcs classify as keyword",
|
||||
"[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
|
||||
"[keyword |||...---]", "[keyword ..--==::]",
|
||||
"[keyword ->]", "[keyword <-]", "[keyword <->]",
|
||||
"[keyword =>]", "[keyword <=]", "[keyword <=>]",
|
||||
"[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
|
||||
"[keyword >>]", "[keyword <<]", "[keyword <<>>]",
|
||||
"[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
|
||||
"[keyword :>]", "[keyword <:]", "[keyword <:>]"
|
||||
);
|
||||
|
||||
MT("within an attribute list, attributes classify as attribute",
|
||||
"[bracket [[][attribute label]",
|
||||
"[attribute id]","[attribute url]","[attribute idurl]",
|
||||
"[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]",
|
||||
"[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]",
|
||||
"[attribute arcskip][bracket ]]]"
|
||||
);
|
||||
|
||||
MT("outside an attribute list, attributes classify as base",
|
||||
"[base label]",
|
||||
"[base id]","[base url]","[base idurl]",
|
||||
"[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]",
|
||||
"[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]",
|
||||
"[base arcskip]"
|
||||
);
|
||||
|
||||
MT("a typical program",
|
||||
"[comment # typical mscgen program]",
|
||||
"[keyword msc][base ][bracket {]",
|
||||
"[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]",
|
||||
"[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]",
|
||||
"[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]",
|
||||
"[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]",
|
||||
"[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]",
|
||||
"[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]",
|
||||
"[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]",
|
||||
"[bracket }]"
|
||||
);
|
||||
})();
|
71
public/vendor/codemirror/mode/mscgen/msgenny_test.js
vendored
Normal file
71
public/vendor/codemirror/mode/mscgen/msgenny_test.js
vendored
Normal file
|
@ -0,0 +1,71 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); }
|
||||
|
||||
MT("comments",
|
||||
"[comment // a single line comment]",
|
||||
"[comment # another single line comment /* and */ ignored here]",
|
||||
"[comment /* A multi-line comment even though it contains]",
|
||||
"[comment msc keywords and \"quoted text\"*/]");
|
||||
|
||||
MT("strings",
|
||||
"[string \"// a string\"]",
|
||||
"[string \"a string running over]",
|
||||
"[string two lines\"]",
|
||||
"[string \"with \\\"escaped quote\"]"
|
||||
);
|
||||
|
||||
MT("xù/ msgenny keywords classify as 'keyword'",
|
||||
"[keyword watermark]",
|
||||
"[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]"
|
||||
);
|
||||
|
||||
MT("mscgen options classify as keyword",
|
||||
"[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
|
||||
);
|
||||
|
||||
MT("mscgen arcs classify as keyword",
|
||||
"[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
|
||||
"[keyword |||...---]", "[keyword ..--==::]",
|
||||
"[keyword ->]", "[keyword <-]", "[keyword <->]",
|
||||
"[keyword =>]", "[keyword <=]", "[keyword <=>]",
|
||||
"[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
|
||||
"[keyword >>]", "[keyword <<]", "[keyword <<>>]",
|
||||
"[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
|
||||
"[keyword :>]", "[keyword <:]", "[keyword <:>]"
|
||||
);
|
||||
|
||||
MT("within an attribute list, mscgen/ xù attributes classify as base",
|
||||
"[base [[label]",
|
||||
"[base idurl id url]",
|
||||
"[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]",
|
||||
"[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]",
|
||||
"[base arcskip]]]"
|
||||
);
|
||||
|
||||
MT("outside an attribute list, mscgen/ xù attributes classify as base",
|
||||
"[base label]",
|
||||
"[base idurl id url]",
|
||||
"[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]",
|
||||
"[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]",
|
||||
"[base arcskip]"
|
||||
);
|
||||
|
||||
MT("a typical program",
|
||||
"[comment # typical msgenny program]",
|
||||
"[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]",
|
||||
"[base a : ][string \"Entity A\"][base ,]",
|
||||
"[base b : Entity B,]",
|
||||
"[base c : Entity C;]",
|
||||
"[base a ][keyword =>>][base b: ][string \"Hello entity B\"][base ;]",
|
||||
"[base a ][keyword alt][base c][bracket {]",
|
||||
"[base a ][keyword <<][base b: ][string \"Here's an answer dude!\"][base ;]",
|
||||
"[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]",
|
||||
"[base a ][keyword x-][base b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]",
|
||||
"[bracket }]",
|
||||
"[base c ][keyword :>][base *: What about me?;]"
|
||||
);
|
||||
})();
|
75
public/vendor/codemirror/mode/mscgen/xu_test.js
vendored
Normal file
75
public/vendor/codemirror/mode/mscgen/xu_test.js
vendored
Normal file
|
@ -0,0 +1,75 @@
|
|||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu");
|
||||
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); }
|
||||
|
||||
MT("empty chart",
|
||||
"[keyword msc][bracket {]",
|
||||
"[base ]",
|
||||
"[bracket }]"
|
||||
);
|
||||
|
||||
MT("comments",
|
||||
"[comment // a single line comment]",
|
||||
"[comment # another single line comment /* and */ ignored here]",
|
||||
"[comment /* A multi-line comment even though it contains]",
|
||||
"[comment msc keywords and \"quoted text\"*/]");
|
||||
|
||||
MT("strings",
|
||||
"[string \"// a string\"]",
|
||||
"[string \"a string running over]",
|
||||
"[string two lines\"]",
|
||||
"[string \"with \\\"escaped quote\"]"
|
||||
);
|
||||
|
||||
MT("xù/ msgenny keywords classify as 'keyword'",
|
||||
"[keyword watermark]",
|
||||
"[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]"
|
||||
);
|
||||
|
||||
MT("mscgen options classify as keyword",
|
||||
"[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]"
|
||||
);
|
||||
|
||||
MT("mscgen arcs classify as keyword",
|
||||
"[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]",
|
||||
"[keyword |||...---]", "[keyword ..--==::]",
|
||||
"[keyword ->]", "[keyword <-]", "[keyword <->]",
|
||||
"[keyword =>]", "[keyword <=]", "[keyword <=>]",
|
||||
"[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]",
|
||||
"[keyword >>]", "[keyword <<]", "[keyword <<>>]",
|
||||
"[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]",
|
||||
"[keyword :>]", "[keyword <:]", "[keyword <:>]"
|
||||
);
|
||||
|
||||
MT("within an attribute list, attributes classify as attribute",
|
||||
"[bracket [[][attribute label]",
|
||||
"[attribute id]","[attribute url]","[attribute idurl]",
|
||||
"[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]",
|
||||
"[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]",
|
||||
"[attribute arcskip][bracket ]]]"
|
||||
);
|
||||
|
||||
MT("outside an attribute list, attributes classify as base",
|
||||
"[base label]",
|
||||
"[base id]","[base url]","[base idurl]",
|
||||
"[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]",
|
||||
"[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]",
|
||||
"[base arcskip]"
|
||||
);
|
||||
|
||||
MT("a typical program",
|
||||
"[comment # typical mscgen program]",
|
||||
"[keyword msc][base ][bracket {]",
|
||||
"[keyword wordwraparcs][operator =][string \"true\"][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]",
|
||||
"[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]",
|
||||
"[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]",
|
||||
"[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]",
|
||||
"[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]",
|
||||
"[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]",
|
||||
"[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]",
|
||||
"[bracket }]"
|
||||
);
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue