{"version":3,"file":"mode-sh-597e6f6b.js","sources":["../../node_modules/ace-builds/src-noconflict/mode-sh.js"],"sourcesContent":["ace.define(\"ace/mode/sh_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 reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' +\n 'esac|fi|for|if|in|then|until|while|' +\n '&|;|export|local|read|typeset|unset|' +\n 'elif|select|set|function|declare|readonly');\nvar languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' +\n 'cd|command|compgen|complete|continue|' +\n 'dirs|disown|echo|enable|eval|exec|' +\n 'exit|fc|fg|getopts|hash|help|history|' +\n 'jobs|kill|let|logout|popd|printf|pushd|' +\n 'pwd|return|set|shift|shopt|source|' +\n 'suspend|test|times|trap|type|ulimit|' +\n 'umask|unalias|wait');\nvar ShHighlightRules = function () {\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": reservedKeywords,\n \"support.function.builtin\": languageConstructs,\n \"invalid.deprecated\": \"debugger\"\n }, \"identifier\");\n var integer = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var fileDescriptor = \"(?:&\" + intPart + \")\";\n var variableName = \"[a-zA-Z_][a-zA-Z0-9_]*\";\n var variable = \"(?:\" + variableName + \"(?==))\";\n var builtinVariable = \"(?:\\\\$(?:SHLVL|\\\\$|\\\\!|\\\\?))\";\n var func = \"(?:\" + variableName + \"\\\\s*\\\\(\\\\))\";\n this.$rules = {\n \"start\": [{\n token: \"constant\",\n regex: /\\\\./\n }, {\n token: [\"text\", \"comment\"],\n regex: /(^|\\s)(#.*)$/\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"constant.language.escape\",\n regex: /\\\\(?:[$`\"\\\\]|$)/\n }, {\n include: \"variables\"\n }, {\n token: \"keyword.operator\",\n regex: /`/ // TODO highlight `\n }, {\n token: \"string.end\",\n regex: '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string\",\n regex: \"\\\\$'\",\n push: [{\n token: \"constant.language.escape\",\n regex: /\\\\(?:[abeEfnrtv\\\\'\"]|x[a-fA-F\\d]{1,2}|u[a-fA-F\\d]{4}([a-fA-F\\d]{4})?|c.|\\d{1,3})/\n }, {\n token: \"string\",\n regex: \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n regex: \"<<<\",\n token: \"keyword.operator\"\n }, {\n stateName: \"heredoc\",\n regex: \"(<<-?)(\\\\s*)(['\\\"`]?)([\\\\w\\\\-]+)(['\\\"`]?)\",\n onMatch: function (value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[4]);\n return [\n { type: \"constant\", value: tokens[1] },\n { type: \"text\", value: tokens[2] },\n { type: \"string\", value: tokens[3] },\n { type: \"support.class\", value: tokens[4] },\n { type: \"string\", value: tokens[5] }\n ];\n },\n rules: {\n heredoc: [{\n onMatch: function (value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^\\t+\"\n }, {\n onMatch: function (value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex: \"$\",\n token: \"empty\",\n next: function (currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token: [\"keyword\", \"text\", \"text\", \"text\", \"variable\"],\n regex: /(declare|local|readonly)(\\s+)(?:(-[fixar]+)(\\s+))?([a-zA-Z_][a-zA-Z0-9_]*\\b)/\n }, {\n token: \"variable.language\",\n regex: builtinVariable\n }, {\n token: \"variable\",\n regex: variable\n }, {\n include: \"variables\"\n }, {\n token: \"support.function\",\n regex: func\n }, {\n token: \"support.function\",\n regex: fileDescriptor\n }, {\n token: \"string\",\n start: \"'\", end: \"'\"\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: \"punctuation.operator\",\n regex: \";\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\)\\\\}]\",\n next: \"pop\"\n }],\n variables: [{\n token: \"variable\",\n regex: /(\\$)(\\w+)/\n }, {\n token: [\"variable\", \"paren.lparen\"],\n regex: /(\\$)(\\()/,\n push: \"start\"\n }, {\n token: [\"variable\", \"paren.lparen\", \"keyword.operator\", \"variable\", \"keyword.operator\"],\n regex: /(\\$)(\\{)([#!]?)(\\w+|[*@#?\\-$!0_])(:[?+\\-=]?|##?|%%?|,,?\\/|\\^\\^?)?/,\n push: \"start\"\n }, {\n token: \"variable\",\n regex: /\\$[*@#?\\-$!0_]/\n }, {\n token: [\"variable\", \"paren.lparen\"],\n regex: /(\\$)(\\{)/,\n push: \"start\"\n }]\n };\n this.normalizeRules();\n};\noop.inherits(ShHighlightRules, TextHighlightRules);\nexports.ShHighlightRules = ShHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n return fw;\n };\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n }\n else if (foldStyle != \"all\")\n range = null;\n }\n return range;\n }\n if (foldStyle === \"markbegin\")\n return;\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n }\n else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n }\n else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n if (!depth)\n break;\n }\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/sh\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sh_highlight_rules\",\"ace/range\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar ShHighlightRules = require(\"./sh_highlight_rules\").ShHighlightRules;\nvar Range = require(\"../range\").Range;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n this.HighlightRules = ShHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n(function () {\n this.lineCommentStart = \"#\";\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n return indent;\n };\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n if (!last)\n return false;\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n this.$id = \"ace/mode/sh\";\n this.snippetFileId = \"ace/snippets/sh\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n}); (function() {\n ace.require([\"ace/mode/sh\"], 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","reservedKeywords","languageConstructs","ShHighlightRules","keywordMapper","integer","fraction","intPart","pointFloat","exponentFloat","floatNumber","fileDescriptor","variableName","variable","builtinVariable","func","value","currentState","stack","next","tokens","Range","BaseFoldMode","FoldMode","commentRegex","session","foldStyle","row","line","fw","forceMultiline","match","i","range","startIndent","startRow","startColumn","endRow","maxRow","indent","subRange","re","depth","m","TextMode","CStyleFoldMode","Mode","state","tab","tokenizedLine","outdents","input","last","doc"],"mappings":"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","x_google_ignoreList":[0]}