| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | 
							- // CodeMirror, copyright (c) by Marijn Haverbeke and others
 
- // Distributed under an MIT license: https://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"],
 
-       "constants" : ["true", "false", "on", "off"],
 
-       "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", "xu"],
 
-       "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "wordwrapentities", "watermark"],
 
-       "constants" : ["true", "false", "on", "off", "auto"],
 
-       "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip", "title", "deactivate", "activate", "activation"],
 
-       "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", "wordwrapentities", "watermark"],
 
-       "constants" : ["true", "false", "on", "off", "auto"],
 
-       "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";
 
-       if (!!pConfig.constants && pStream.match(wordRegexp(pConfig.constants), true, true))
 
-         return "variable";
 
-       /* 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";
 
-     };
 
-   }
 
- });
 
 
  |