{"version":3,"file":"mode-lua-2106139d.js","sources":["../../node_modules/ace-builds/src-noconflict/mode-lua.js"],"sourcesContent":["ace.define(\"ace/mode/lua_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar LuaHighlightRules = function () {\n var keywords = (\"break|do|else|elseif|end|for|function|if|in|local|repeat|\" +\n \"return|then|until|while|or|and|not\");\n var builtinConstants = (\"true|false|nil|_G|_VERSION\");\n var functions = (\n \"string|xpcall|package|tostring|print|os|unpack|require|\" +\n \"getfenv|setmetatable|next|assert|tonumber|io|rawequal|\" +\n \"collectgarbage|getmetatable|module|rawset|math|debug|\" +\n \"pcall|table|newproxy|type|coroutine|_G|select|gcinfo|\" +\n \"pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|\" +\n \"load|error|loadfile|\" +\n \"sub|upper|len|gfind|rep|find|match|char|dump|gmatch|\" +\n \"reverse|byte|format|gsub|lower|preload|loadlib|loaded|\" +\n \"loaders|cpath|config|path|seeall|exit|setlocale|date|\" +\n \"getenv|difftime|remove|time|clock|tmpname|rename|execute|\" +\n \"lines|write|close|flush|open|output|type|read|stderr|\" +\n \"stdin|input|stdout|popen|tmpfile|log|max|acos|huge|\" +\n \"ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|\" +\n \"frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|\" +\n \"atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|\" +\n \"gethook|setmetatable|setlocal|traceback|setfenv|getinfo|\" +\n \"setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|\" +\n \"foreachi|maxn|foreach|concat|sort|remove|resume|yield|\" +\n \"status|wrap|create|running|\" +\n \"__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|\" +\n \"__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber\");\n var stdLibaries = (\"string|package|os|io|math|debug|table|coroutine\");\n var deprecatedIn5152 = (\"setn|foreach|foreachi|gcinfo|log10|maxn\");\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"support.function\": functions,\n \"keyword.deprecated\": deprecatedIn5152,\n \"constant.library\": stdLibaries,\n \"constant.language\": builtinConstants,\n \"variable.language\": \"self\"\n }, \"identifier\");\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + hexInteger + \")\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var floatNumber = \"(?:\" + pointFloat + \")\";\n this.$rules = {\n \"start\": [{\n stateName: \"bracketedComment\",\n onMatch: function (value, currentState, stack) {\n stack.unshift(this.next, value.length - 2, currentState);\n return \"comment\";\n },\n regex: /\\-\\-\\[=*\\[/,\n next: [\n {\n onMatch: function (value, currentState, stack) {\n if (value.length == stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n }\n else {\n this.next = \"\";\n }\n return \"comment\";\n },\n regex: /\\]=*\\]/,\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n },\n {\n token: \"comment\",\n regex: \"\\\\-\\\\-.*$\"\n },\n {\n stateName: \"bracketedString\",\n onMatch: function (value, currentState, stack) {\n stack.unshift(this.next, value.length, currentState);\n return \"string.start\";\n },\n regex: /\\[=*\\[/,\n next: [\n {\n onMatch: function (value, currentState, stack) {\n if (value.length == stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n }\n else {\n this.next = \"\";\n }\n return \"string.end\";\n },\n regex: /\\]=*\\]/,\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }\n ]\n },\n {\n token: \"string\",\n regex: '\"(?:[^\\\\\\\\]|\\\\\\\\.)*?\"'\n }, {\n token: \"string\",\n regex: \"'(?:[^\\\\\\\\]|\\\\\\\\.)*?'\"\n }, {\n token: \"constant.numeric\",\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n regex: integer + \"\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\/|%|\\\\#|\\\\^|~|<|>|<=|=>|==|~=|=|\\\\:|\\\\.\\\\.\\\\.|\\\\.\\\\.\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|\\\\w+\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(LuaHighlightRules, TextHighlightRules);\nexports.LuaHighlightRules = LuaHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/lua\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar Range = require(\"../../range\").Range;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar FoldMode = exports.FoldMode = function () { };\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /\\b(function|then|do|repeat)\\b|{\\s*$|(\\[=*\\[)/;\n this.foldingStopMarker = /\\bend\\b|^\\s*}|\\]=*\\]/;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var isStart = this.foldingStartMarker.test(line);\n var isEnd = this.foldingStopMarker.test(line);\n if (isStart && !isEnd) {\n var match = line.match(this.foldingStartMarker);\n if (match[1] == \"then\" && /\\belseif\\b/.test(line))\n return;\n if (match[1]) {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return \"start\";\n }\n else if (match[2]) {\n var type = session.bgTokenizer.getState(row) || \"\";\n if (type[0] == \"bracketedComment\" || type[0] == \"bracketedString\")\n return \"start\";\n }\n else {\n return \"start\";\n }\n }\n if (foldStyle != \"markbeginend\" || !isEnd || isStart && isEnd)\n return \"\";\n var match = line.match(this.foldingStopMarker);\n if (match[0] === \"end\") {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return \"end\";\n }\n else if (match[0][0] === \"]\") {\n var type = session.bgTokenizer.getState(row - 1) || \"\";\n if (type[0] == \"bracketedComment\" || type[0] == \"bracketedString\")\n return \"end\";\n }\n else\n return \"end\";\n };\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.doc.getLine(row);\n var match = this.foldingStartMarker.exec(line);\n if (match) {\n if (match[1])\n return this.luaBlock(session, row, match.index + 1);\n if (match[2])\n return session.getCommentFoldRange(row, match.index + 1);\n return this.openingBracketBlock(session, \"{\", row, match.index);\n }\n var match = this.foldingStopMarker.exec(line);\n if (match) {\n if (match[0] === \"end\") {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return this.luaBlock(session, row, match.index + 1);\n }\n if (match[0][0] === \"]\")\n return session.getCommentFoldRange(row, match.index + 1);\n return this.closingBracketBlock(session, \"}\", row, match.index + match[0].length);\n }\n };\n this.luaBlock = function (session, row, column, tokenRange) {\n var stream = new TokenIterator(session, row, column);\n var indentKeywords = {\n \"function\": 1,\n \"do\": 1,\n \"then\": 1,\n \"elseif\": -1,\n \"end\": -1,\n \"repeat\": 1,\n \"until\": -1\n };\n var token = stream.getCurrentToken();\n if (!token || token.type != \"keyword\")\n return;\n var val = token.value;\n var stack = [val];\n var dir = indentKeywords[val];\n if (!dir)\n return;\n var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length;\n var startRow = row;\n stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;\n while (token = stream.step()) {\n if (token.type !== \"keyword\")\n continue;\n var level = dir * indentKeywords[token.value];\n if (level > 0) {\n stack.unshift(token.value);\n }\n else if (level <= 0) {\n stack.shift();\n if (!stack.length && token.value != \"elseif\")\n break;\n if (level === 0)\n stack.unshift(token.value);\n }\n }\n if (!token)\n return null;\n if (tokenRange)\n return stream.getCurrentTokenRange();\n var row = stream.getCurrentTokenRow();\n if (dir === -1)\n return new Range(row, session.getLine(row).length, startRow, startColumn);\n else\n return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn());\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/lua\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/lua_highlight_rules\",\"ace/mode/folding/lua\",\"ace/range\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar LuaHighlightRules = require(\"./lua_highlight_rules\").LuaHighlightRules;\nvar LuaFoldMode = require(\"./folding/lua\").FoldMode;\nvar Range = require(\"../range\").Range;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n this.HighlightRules = LuaHighlightRules;\n this.foldingRules = new LuaFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"--\";\n this.blockComment = { start: \"--[[\", end: \"--]]\" };\n var indentKeywords = {\n \"function\": 1,\n \"then\": 1,\n \"do\": 1,\n \"else\": 1,\n \"elseif\": 1,\n \"repeat\": 1,\n \"end\": -1,\n \"until\": -1\n };\n var outdentKeywords = [\n \"else\",\n \"elseif\",\n \"end\",\n \"until\"\n ];\n function getNetIndentLevel(tokens) {\n var level = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"keyword\") {\n if (token.value in indentKeywords) {\n level += indentKeywords[token.value];\n }\n }\n else if (token.type == \"paren.lparen\") {\n level += token.value.length;\n }\n else if (token.type == \"paren.rparen\") {\n level -= token.value.length;\n }\n }\n if (level < 0) {\n return -1;\n }\n else if (level > 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var level = 0;\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (state == \"start\") {\n level = getNetIndentLevel(tokens);\n }\n if (level > 0) {\n return indent + tab;\n }\n else if (level < 0 && indent.substr(indent.length - tab.length) == tab) {\n if (!this.checkOutdent(state, line, \"\\n\")) {\n return indent.substr(0, indent.length - tab.length);\n }\n }\n return indent;\n };\n this.checkOutdent = function (state, line, input) {\n if (input != \"\\n\" && input != \"\\r\" && input != \"\\r\\n\")\n return false;\n if (line.match(/^\\s*[\\)\\}\\]]$/))\n return true;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens || !tokens.length)\n return false;\n return (tokens[0].type == \"keyword\" && outdentKeywords.indexOf(tokens[0].value) != -1);\n };\n this.getMatching = function (session, row, column) {\n if (row == undefined) {\n var pos = session.selection.lead;\n column = pos.column;\n row = pos.row;\n }\n var startToken = session.getTokenAt(row, column);\n if (startToken && startToken.value in indentKeywords)\n return this.foldingRules.luaBlock(session, row, column, true);\n };\n this.autoOutdent = function (state, session, row) {\n var line = session.getLine(row);\n var column = line.match(/^\\s*/)[0].length;\n if (!column || !row)\n return;\n var startRange = this.getMatching(session, row, column + 1);\n if (!startRange || startRange.start.row == row)\n return;\n var indent = this.$getIndent(session.getLine(startRange.start.row));\n if (indent.length != column) {\n session.replace(new Range(row, 0, row, column), indent);\n session.outdentRows(new Range(row + 1, 0, row + 1, 0));\n }\n };\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/lua_worker\", \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n this.$id = \"ace/mode/lua\";\n this.snippetFileId = \"ace/snippets/lua\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/lua\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n "],"names":["require","exports","module","oop","TextHighlightRules","LuaHighlightRules","keywords","builtinConstants","functions","stdLibaries","deprecatedIn5152","keywordMapper","decimalInteger","hexInteger","integer","fraction","intPart","pointFloat","floatNumber","value","currentState","stack","BaseFoldMode","Range","TokenIterator","FoldMode","session","foldStyle","row","line","isStart","isEnd","match","type","column","tokenRange","stream","indentKeywords","token","val","dir","startColumn","startRow","level","TextMode","LuaFoldMode","WorkerClient","Mode","outdentKeywords","getNetIndentLevel","tokens","i","state","tab","indent","tokenizedLine","input","pos","startToken","startRange","worker","e","m"],"mappings":"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","x_google_ignoreList":[0]}