1 |
- {"version":3,"file":"mode-makefile-8fd2d982.js","sources":["../../node_modules/ace-builds/src-noconflict/mode-makefile.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: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|~|<|>|<=|=>|=|!=|[
|