forgeplus-react/ui/js/codemirror/mode/mathematica/mathematica.min.js

7 lines
2.5 KiB
JavaScript

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
// Mathematica mode copyright (c) 2015 by Calin Barbat
// Based on code by Patrick Scheibe (halirutan)
// See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js
(function(c){"object"==typeof exports&&"object"==typeof module?c(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],c):c(CodeMirror)})(function(c){c.defineMode("mathematica",function(c,n){function f(a,b){var d;d=a.next();if('"'===d)return b.tokenize=g,b.tokenize(a,b);if("("===d&&a.eat("*"))return b.commentLevel++,b.tokenize=h,b.tokenize(a,b);a.backUp(1);if(a.match(k,!0,!1)||a.match(l,!0,!1))return"number";if(a.match(/(?:In|Out)\[[0-9]*\]/,!0,!1))return"atom";if(a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::usage)/,!0,!1))return"meta";if(a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*(?:`[a-zA-Z0-9\$]+)*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/,!0,!1))return"string-2";if(a.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/,!0,!1)||a.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1)||a.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/,!0,!1)||a.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/,!0,!1))return"variable-2";if(a.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/,!0,!1))return"variable-3";if(a.match(/(?:\[|\]|{|}|\(|\))/,!0,!1))return"bracket";if(a.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/,!0,!1))return"variable-2";if(a.match(m,!0,!1))return"keyword";if(a.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/,!0,!1))return"operator";a.next();return"error"}function g(a,b){for(var d,c=!1,e=!1;null!=(d=a.next());){if('"'===d&&!e){c=!0;break}e=!e&&"\\"===d}c&&!e&&(b.tokenize=f);return"string"}function h(a,b){for(var d,c;0<b.commentLevel&&null!=(c=a.next());)"("===d&&"*"===c&&b.commentLevel++,"*"===d&&")"===c&&b.commentLevel--,d=c;0>=b.commentLevel&&(b.tokenize=f);return"comment"}var k=/(?:(?:\d+)(?:\^\^(?:\.\w+|\w+\.\w*|\w+)(?:`(?:`?(?:\.\d+|\d+\.\d*|\d+))?)?(?:\*\^[+-]?\d+)?))/,l=/(?:(?:\.\d+|\d+\.\d*|\d+)(?:`(?:`?(?:\.\d+|\d+\.\d*|\d+))?)?(?:\*\^[+-]?\d+)?)/,m=/(?:`?)(?:[a-zA-Z\$][a-zA-Z0-9\$]*)(?:`(?:[a-zA-Z\$][a-zA-Z0-9\$]*))*(?:`?)/;return{startState:function(){return{tokenize:f,commentLevel:0}},token:function(a,b){return a.eatSpace()?null:b.tokenize(a,b)},blockCommentStart:"(*",blockCommentEnd:"*)"}});c.defineMIME("text/x-mathematica",{name:"mathematica"})});