{"version":3,"sources":["../../node_modules/codemirror/mode/modelica/modelica.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","config","parserConfig","indentUnit","keywords","builtin","atoms","isSingleOperatorChar","isDoubleOperatorChar","isDigit","isNonDigit","tokenLineComment","stream","state","skipToEnd","tokenize","tokenBlockComment","maybeEnd","ch","next","tokenString","escaped","sol","tokenIdent","eatWhile","eat","cur","current","level","propertyIsEnumerable","tokenQIdent","tokenUnsignedNuber","startState","token","eatSpace","test","peek","indent","textAfter","Pass","blockCommentStart","blockCommentEnd","lineComment","words","str","obj","split","i","length","modelicaKeywords","modelicaBuiltin","modelicaAtoms","def","mimes","mode","add","prop","hasOwnProperty","push","helperType","registerHelper","defineMIME","name"],"mappings":"CAKA,SAAUA,GACR,SAAWC,UAAW,gBAAmBC,SAAU,SACjDF,EAAIG,QAAQ,6BACT,UAAWC,SAAU,YAAcA,OAAOC,IAC7CD,QAAQ,wBAAyBJ,OAEjCA,GAAIM,cAGP,SAASA,GACR,YAEAA,GAAWC,WAAW,WAAY,SAASC,EAAQC,GAEjD,GAAIC,GAAaF,EAAOE,UACxB,IAAIC,GAAWF,EAAaE,YAC5B,IAAIC,GAAUH,EAAaG,WAC3B,IAAIC,GAAQJ,EAAaI,SAEzB,IAAIC,GAAuB,4BAC3B,IAAIC,GAAuB,2CAC3B,IAAIC,GAAU,OACd,IAAIC,GAAa,WAEjB,SAASC,GAAiBC,EAAQC,GAChCD,EAAOE,WACPD,GAAME,SAAW,IACjB,OAAO,UAGT,QAASC,GAAkBJ,EAAQC,GACjC,GAAII,GAAW,MAAOC,CACtB,OAAOA,EAAKN,EAAOO,OAAQ,CACzB,GAAIF,GAAYC,GAAM,IAAK,CACzBL,EAAME,SAAW,IACjB,OAEFE,EAAYC,GAAM,IAEpB,MAAO,UAGT,QAASE,GAAYR,EAAQC,GAC3B,GAAIQ,GAAU,MAAOH,CACrB,QAAQA,EAAKN,EAAOO,SAAW,KAAM,CACnC,GAAID,GAAM,MAAQG,EAAS,CACzBR,EAAME,SAAW,IACjBF,GAAMS,IAAM,KACZ,OAEFD,GAAWA,GAAWH,GAAM,KAG9B,MAAO,SAGT,QAASK,GAAWX,EAAQC,GAC1BD,EAAOY,SAASf,EAChB,OAAOG,EAAOa,IAAIhB,IAAYG,EAAOa,IAAIf,GAAa,EAGtD,GAAIgB,GAAMd,EAAOe,SAEjB,IAAGd,EAAMS,MAAQI,GAAO,WAAaA,GAAO,SAAWA,GAAO,QAAUA,GAAO,aAAcb,EAAMe,YAC9F,IAAGf,EAAMS,KAAOI,GAAO,OAASb,EAAMe,MAAQ,EAAGf,EAAMe,OAE5Df,GAAME,SAAW,IACjBF,GAAMS,IAAM,KAEZ,IAAIlB,EAASyB,qBAAqBH,GAAM,MAAO,cAC1C,IAAIrB,EAAQwB,qBAAqBH,GAAM,MAAO,cAC9C,IAAIpB,EAAMuB,qBAAqBH,GAAM,MAAO,WAC5C,OAAO,WAGd,QAASI,GAAYlB,EAAQC,GAC3B,MAAOD,EAAOa,IAAI,QAAS,EAE3BZ,EAAME,SAAW,IACjBF,GAAMS,IAAM,KAEZ,IAAGV,EAAOa,IAAI,KACZ,MAAO,eAEP,OAAO,QAGX,QAASM,GAAmBnB,EAAQC,GAClCD,EAAOY,SAASf,EAChB,IAAIG,EAAOa,IAAI,KAAM,CACnBb,EAAOY,SAASf,GAElB,GAAIG,EAAOa,IAAI,MAAQb,EAAOa,IAAI,KAAM,CACtC,IAAKb,EAAOa,IAAI,KACdb,EAAOa,IAAI,IACbb,GAAOY,SAASf,GAGlBI,EAAME,SAAW,IACjBF,GAAMS,IAAM,KACZ,OAAO,SAIT,OACEU,WAAY,WACV,OACEjB,SAAU,KACVa,MAAO,EACPN,IAAK,OAITW,MAAO,SAASrB,EAAQC,GACtB,GAAGA,EAAME,UAAY,KAAM,CACzB,MAAOF,GAAME,SAASH,EAAQC,GAGhC,GAAGD,EAAOU,MAAO,CACfT,EAAMS,IAAM,KAId,GAAGV,EAAOsB,WAAY,CACpBrB,EAAME,SAAW,IACjB,OAAO,MAGT,GAAIG,GAAKN,EAAOO,MAGhB,IAAGD,GAAM,KAAON,EAAOa,IAAI,KAAM,CAC/BZ,EAAME,SAAWJ,MAGd,IAAGO,GAAM,KAAON,EAAOa,IAAI,KAAM,CACpCZ,EAAME,SAAWC,MAGd,IAAGR,EAAqB2B,KAAKjB,EAAGN,EAAOwB,QAAS,CACnDxB,EAAOO,MACPN,GAAME,SAAW,IACjB,OAAO,eAGJ,IAAGR,EAAqB4B,KAAKjB,GAAK,CACrCL,EAAME,SAAW,IACjB,OAAO,eAGJ,IAAGL,EAAWyB,KAAKjB,GAAK,CAC3BL,EAAME,SAAWQ,MAGd,IAAGL,GAAM,KAAON,EAAOwB,QAAUxB,EAAOwB,QAAU,IAAK,CAC1DvB,EAAME,SAAWe,MAGd,IAAGZ,GAAM,IAAK,CACjBL,EAAME,SAAWK,MAGd,IAAGX,EAAQ0B,KAAKjB,GAAK,CACxBL,EAAME,SAAWgB,MAGd,CACHlB,EAAME,SAAW,IACjB,OAAO,QAGT,MAAOF,GAAME,SAASH,EAAQC,IAGhCwB,OAAQ,SAASxB,EAAOyB,GACtB,GAAIzB,EAAME,UAAY,KAAM,MAAOhB,GAAWwC,IAE9C,IAAIX,GAAQf,EAAMe,KAClB,IAAG,cAAcO,KAAKG,GAAYV,GAClC,IAAG,aAAaO,KAAKG,GAAYV,GACjC,IAAG,sBAAsBO,KAAKG,GAAYV,GAC1C,IAAG,qBAAqBO,KAAKG,GAAYV,GACzC,IAAG,QAAQO,KAAKG,GAAYV,GAE5B,IAAGA,EAAQ,EACT,MAAOzB,GAAWyB,MAElB,OAAO,IAGXY,kBAAmB,KACnBC,gBAAiB,KACjBC,YAAa,OAIjB,SAASC,GAAMC,GACb,GAAIC,MAAUF,EAAQC,EAAIE,MAAM,IAChC,KAAK,GAAIC,GAAE,EAAGA,EAAEJ,EAAMK,SAAUD,EAC9BF,EAAIF,EAAMI,IAAM,IAClB,OAAOF,GAGT,GAAII,GAAmB,+aACvB,IAAIC,GAAkB,4NACtB,IAAIC,GAAgB,6BAEpB,SAASC,GAAIC,EAAOC,GAClB,SAAWD,IAAS,SAClBA,GAASA,EAEX,IAAIV,KAEJ,SAASY,GAAIV,GACX,GAAIA,EACF,IAAK,GAAIW,KAAQX,GACf,GAAIA,EAAIY,eAAeD,GACrBb,EAAMe,KAAKF,GAGnBD,EAAID,EAAKlD,SACTmD,GAAID,EAAKjD,QACTkD,GAAID,EAAKhD,MAET,IAAIqC,EAAMK,OAAQ,CAChBM,EAAKK,WAAaN,EAAM,EACxBtD,GAAW6D,eAAe,YAAaP,EAAM,GAAIV,GAGnD,IAAK,GAAII,GAAE,EAAGA,EAAEM,EAAML,SAAUD,EAC9BhD,EAAW8D,WAAWR,EAAMN,GAAIO,GAGpCF,GAAK,oBACHU,KAAM,WACN1D,SAAUuC,EAAMM,GAChB5C,QAASsC,EAAMO,GACf5C,MAAOqC,EAAMQ","file":"modelica.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Modelica support for CodeMirror, copyright (c) by Lennart Ochel\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})\n\n(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"modelica\", function(config, parserConfig) {\n\n var indentUnit = config.indentUnit;\n var keywords = parserConfig.keywords || {};\n var builtin = parserConfig.builtin || {};\n var atoms = parserConfig.atoms || {};\n\n var isSingleOperatorChar = /[;=\\(:\\),{}.*<>+\\-\\/^\\[\\]]/;\n var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\\.\\+|\\.\\-|\\.\\*|\\.\\/|\\.\\^)/;\n var isDigit = /[0-9]/;\n var isNonDigit = /[_a-zA-Z]/;\n\n function tokenLineComment(stream, state) {\n stream.skipToEnd();\n state.tokenize = null;\n return \"comment\";\n }\n\n function tokenBlockComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n function tokenString(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == '\"' && !escaped) {\n state.tokenize = null;\n state.sol = false;\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n\n return \"string\";\n }\n\n function tokenIdent(stream, state) {\n stream.eatWhile(isDigit);\n while (stream.eat(isDigit) || stream.eat(isNonDigit)) { }\n\n\n var cur = stream.current();\n\n if(state.sol && (cur == \"package\" || cur == \"model\" || cur == \"when\" || cur == \"connector\")) state.level++;\n else if(state.sol && cur == \"end\" && state.level > 0) state.level--;\n\n state.tokenize = null;\n state.sol = false;\n\n if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n else if (builtin.propertyIsEnumerable(cur)) return \"builtin\";\n else if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n else return \"variable\";\n }\n\n function tokenQIdent(stream, state) {\n while (stream.eat(/[^']/)) { }\n\n state.tokenize = null;\n state.sol = false;\n\n if(stream.eat(\"'\"))\n return \"variable\";\n else\n return \"error\";\n }\n\n function tokenUnsignedNuber(stream, state) {\n stream.eatWhile(isDigit);\n if (stream.eat('.')) {\n stream.eatWhile(isDigit);\n }\n if (stream.eat('e') || stream.eat('E')) {\n if (!stream.eat('-'))\n stream.eat('+');\n stream.eatWhile(isDigit);\n }\n\n state.tokenize = null;\n state.sol = false;\n return \"number\";\n }\n\n // Interface\n return {\n startState: function() {\n return {\n tokenize: null,\n level: 0,\n sol: true\n };\n },\n\n token: function(stream, state) {\n if(state.tokenize != null) {\n return state.tokenize(stream, state);\n }\n\n if(stream.sol()) {\n state.sol = true;\n }\n\n // WHITESPACE\n if(stream.eatSpace()) {\n state.tokenize = null;\n return null;\n }\n\n var ch = stream.next();\n\n // LINECOMMENT\n if(ch == '/' && stream.eat('/')) {\n state.tokenize = tokenLineComment;\n }\n // BLOCKCOMMENT\n else if(ch == '/' && stream.eat('*')) {\n state.tokenize = tokenBlockComment;\n }\n // TWO SYMBOL TOKENS\n else if(isDoubleOperatorChar.test(ch+stream.peek())) {\n stream.next();\n state.tokenize = null;\n return \"operator\";\n }\n // SINGLE SYMBOL TOKENS\n else if(isSingleOperatorChar.test(ch)) {\n state.tokenize = null;\n return \"operator\";\n }\n // IDENT\n else if(isNonDigit.test(ch)) {\n state.tokenize = tokenIdent;\n }\n // Q-IDENT\n else if(ch == \"'\" && stream.peek() && stream.peek() != \"'\") {\n state.tokenize = tokenQIdent;\n }\n // STRING\n else if(ch == '\"') {\n state.tokenize = tokenString;\n }\n // UNSIGNED_NUBER\n else if(isDigit.test(ch)) {\n state.tokenize = tokenUnsignedNuber;\n }\n // ERROR\n else {\n state.tokenize = null;\n return \"error\";\n }\n\n return state.tokenize(stream, state);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize != null) return CodeMirror.Pass;\n\n var level = state.level;\n if(/(algorithm)/.test(textAfter)) level--;\n if(/(equation)/.test(textAfter)) level--;\n if(/(initial algorithm)/.test(textAfter)) level--;\n if(/(initial equation)/.test(textAfter)) level--;\n if(/(end)/.test(textAfter)) level--;\n\n if(level > 0)\n return indentUnit*level;\n else\n return 0;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\"\n };\n });\n\n function words(str) {\n var obj = {}, words = str.split(\" \");\n for (var i=0; i