1{"version":3,"sources":["../../node_modules/codemirror/mode/vbscript/vbscript.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","conf","parserConf","ERRORCLASS","wordRegexp","words","RegExp","join","singleOperators","doubleOperators","singleDelimiters","brakets","identifiers","openingKeywords","middleKeywords","endKeywords","wordOperators","commonkeywords","atomWords","builtinFuncsWords","builtinConsts","builtinObjsWords","knownProperties","knownMethods","aspBuiltinObjsWords","aspKnownProperties","aspKnownMethods","knownWords","concat","isASP","keywords","atoms","builtinFuncs","builtinObjs","known","stringPrefixes","opening","middle","closing","doubleClosing","doOpening","noIndentWords","comment","indent","_stream","state","currentIndent","dedent","tokenBase","stream","eatSpace","ch","peek","skipToEnd","match","floatLiteral","eat","intLiteral","tokenize","tokenStringFactory","current","doInCurrentLine","next","delimiter","singleline","length","OUTCLASS","eol","eatWhile","singleLineStringErrors","tokenLexer","style","substr","indexOf","external","electricChars","startState","lastToken","nextLineIndent","ignoreKeyword","token","sol","content","textAfter","trueText","replace","indentUnit","defineMIME"],"mappings":"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","file":"vbscript.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/*\nFor extra ASP classic objects, initialize CodeMirror instance with this option:\n    isASP: true\n\nE.G.:\n    var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        isASP: true\n      });\n*/\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})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"vbscript\", function(conf, parserConf) {\n    var ERRORCLASS = 'error';\n\n    function wordRegexp(words) {\n        return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\", \"i\");\n    }\n\n    var singleOperators = new RegExp(\"^[\\\\+\\\\-\\\\*/&\\\\\\\\\\\\^<>=]\");\n    var doubleOperators = new RegExp(\"^((<>)|(<=)|(>=))\");\n    var singleDelimiters = new RegExp('^[\\\\.,]');\n    var brakets = new RegExp('^[\\\\(\\\\)]');\n    var identifiers = new RegExp(\"^[A-Za-z][_A-Za-z0-9]*\");\n\n    var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for'];\n    var middleKeywords = ['else','elseif','case'];\n    var endKeywords = ['next','loop','wend'];\n\n    var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']);\n    var commonkeywords = ['dim', 'redim', 'then',  'until', 'randomize',\n                          'byval','byref','new','property', 'exit', 'in',\n                          'const','private', 'public',\n                          'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me'];\n\n    //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx\n    var atomWords = ['true', 'false', 'nothing', 'empty', 'null'];\n    //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx\n    var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart',\n                        'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject',\n                        'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left',\n                        'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round',\n                        'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp',\n                        'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year'];\n\n    //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx\n    var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare',\n                         'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek',\n                         'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError',\n                         'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2',\n                         'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo',\n                         'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse',\n                         'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray'];\n    //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx\n    var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp'];\n    var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count'];\n    var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit'];\n\n    var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application'];\n    var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response\n                              'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request\n                              'contents', 'staticobjects', //application\n                              'codepage', 'lcid', 'sessionid', 'timeout', //session\n                              'scripttimeout']; //server\n    var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response\n                           'binaryread', //request\n                           'remove', 'removeall', 'lock', 'unlock', //application\n                           'abandon', //session\n                           'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server\n\n    var knownWords = knownMethods.concat(knownProperties);\n\n    builtinObjsWords = builtinObjsWords.concat(builtinConsts);\n\n    if (conf.isASP){\n        builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords);\n        knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties);\n    };\n\n    var keywords = wordRegexp(commonkeywords);\n    var atoms = wordRegexp(atomWords);\n    var builtinFuncs = wordRegexp(builtinFuncsWords);\n    var builtinObjs = wordRegexp(builtinObjsWords);\n    var known = wordRegexp(knownWords);\n    var stringPrefixes = '\"';\n\n    var opening = wordRegexp(openingKeywords);\n    var middle = wordRegexp(middleKeywords);\n    var closing = wordRegexp(endKeywords);\n    var doubleClosing = wordRegexp(['end']);\n    var doOpening = wordRegexp(['do']);\n    var noIndentWords = wordRegexp(['on error resume next', 'exit']);\n    var comment = wordRegexp(['rem']);\n\n\n    function indent(_stream, state) {\n      state.currentIndent++;\n    }\n\n    function dedent(_stream, state) {\n      state.currentIndent--;\n    }\n    // tokenizers\n    function tokenBase(stream, state) {\n        if (stream.eatSpace()) {\n            return 'space';\n            //return null;\n        }\n\n        var ch = stream.peek();\n\n        // Handle Comments\n        if (ch === \"'\") {\n            stream.skipToEnd();\n            return 'comment';\n        }\n        if (stream.match(comment)){\n            stream.skipToEnd();\n            return 'comment';\n        }\n\n\n        // Handle Number Literals\n        if (stream.match(/^((&H)|(&O))?[0-9\\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\\.]+[a-z_]/i, false)) {\n            var floatLiteral = false;\n            // Floats\n            if (stream.match(/^\\d*\\.\\d+/i)) { floatLiteral = true; }\n            else if (stream.match(/^\\d+\\.\\d*/)) { floatLiteral = true; }\n            else if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n\n            if (floatLiteral) {\n                // Float literals may be \"imaginary\"\n                stream.eat(/J/i);\n                return 'number';\n            }\n            // Integers\n            var intLiteral = false;\n            // Hex\n            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }\n            // Octal\n            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }\n            // Decimal\n            else if (stream.match(/^[1-9]\\d*F?/)) {\n                // Decimal literals may be \"imaginary\"\n                stream.eat(/J/i);\n                // TODO - Can you have imaginary longs?\n                intLiteral = true;\n            }\n            // Zero by itself with no other piece of number.\n            else if (stream.match(/^0(?![\\dx])/i)) { intLiteral = true; }\n            if (intLiteral) {\n                // Integer literals may be \"long\"\n                stream.eat(/L/i);\n                return 'number';\n            }\n        }\n\n        // Handle Strings\n        if (stream.match(stringPrefixes)) {\n            state.tokenize = tokenStringFactory(stream.current());\n            return state.tokenize(stream, state);\n        }\n\n        // Handle operators and Delimiters\n        if (stream.match(doubleOperators)\n            || stream.match(singleOperators)\n            || stream.match(wordOperators)) {\n            return 'operator';\n        }\n        if (stream.match(singleDelimiters)) {\n            return null;\n        }\n\n        if (stream.match(brakets)) {\n            return \"bracket\";\n        }\n\n        if (stream.match(noIndentWords)) {\n            state.doInCurrentLine = true;\n\n            return 'keyword';\n        }\n\n        if (stream.match(doOpening)) {\n            indent(stream,state);\n            state.doInCurrentLine = true;\n\n            return 'keyword';\n        }\n        if (stream.match(opening)) {\n            if (! state.doInCurrentLine)\n              indent(stream,state);\n            else\n              state.doInCurrentLine = false;\n\n            return 'keyword';\n        }\n        if (stream.match(middle)) {\n            return 'keyword';\n        }\n\n\n        if (stream.match(doubleClosing)) {\n            dedent(stream,state);\n            dedent(stream,state);\n\n            return 'keyword';\n        }\n        if (stream.match(closing)) {\n            if (! state.doInCurrentLine)\n              dedent(stream,state);\n            else\n              state.doInCurrentLine = false;\n\n            return 'keyword';\n        }\n\n        if (stream.match(keywords)) {\n            return 'keyword';\n        }\n\n        if (stream.match(atoms)) {\n            return 'atom';\n        }\n\n        if (stream.match(known)) {\n            return 'variable-2';\n        }\n\n        if (stream.match(builtinFuncs)) {\n            return 'builtin';\n        }\n\n        if (stream.match(builtinObjs)){\n            return 'variable-2';\n        }\n\n        if (stream.match(identifiers)) {\n            return 'variable';\n        }\n\n        // Handle non-detected items\n        stream.next();\n        return ERRORCLASS;\n    }\n\n    function tokenStringFactory(delimiter) {\n        var singleline = delimiter.length == 1;\n        var OUTCLASS = 'string';\n\n        return function(stream, state) {\n            while (!stream.eol()) {\n                stream.eatWhile(/[^'\"]/);\n                if (stream.match(delimiter)) {\n                    state.tokenize = tokenBase;\n                    return OUTCLASS;\n                } else {\n                    stream.eat(/['\"]/);\n                }\n            }\n            if (singleline) {\n                if (parserConf.singleLineStringErrors) {\n                    return ERRORCLASS;\n                } else {\n                    state.tokenize = tokenBase;\n                }\n            }\n            return OUTCLASS;\n        };\n    }\n\n\n    function tokenLexer(stream, state) {\n        var style = state.tokenize(stream, state);\n        var current = stream.current();\n\n        // Handle '.' connected identifiers\n        if (current === '.') {\n            style = state.tokenize(stream, state);\n\n            current = stream.current();\n            if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) {\n                if (style === 'builtin' || style === 'keyword') style='variable';\n                if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2';\n\n                return style;\n            } else {\n                return ERRORCLASS;\n            }\n        }\n\n        return style;\n    }\n\n    var external = {\n        electricChars:\"dDpPtTfFeE \",\n        startState: function() {\n            return {\n              tokenize: tokenBase,\n              lastToken: null,\n              currentIndent: 0,\n              nextLineIndent: 0,\n              doInCurrentLine: false,\n              ignoreKeyword: false\n\n\n          };\n        },\n\n        token: function(stream, state) {\n            if (stream.sol()) {\n              state.currentIndent += state.nextLineIndent;\n              state.nextLineIndent = 0;\n              state.doInCurrentLine = 0;\n            }\n            var style = tokenLexer(stream, state);\n\n            state.lastToken = {style:style, content: stream.current()};\n\n            if (style==='space') style=null;\n\n            return style;\n        },\n\n        indent: function(state, textAfter) {\n            var trueText = textAfter.replace(/^\\s+|\\s+$/g, '') ;\n            if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);\n            if(state.currentIndent < 0) return 0;\n            return state.currentIndent * conf.indentUnit;\n        }\n\n    };\n    return external;\n});\n\nCodeMirror.defineMIME(\"text/vbscript\", \"vbscript\");\n\n});\n"]}