1{"version":3,"sources":["../../node_modules/codemirror/mode/shell/shell.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","words","style","dict","i","length","commonAtoms","commonKeywords","commonCommands","registerHelper","concat","tokenBase","stream","state","eatSpace","sol","ch","next","tokens","unshift","tokenString","tokenize","eat","skipToEnd","tokenDollar","eatWhile","test","eol","peek","cur","current","hasOwnProperty","quote","close","escaped","shift","backUp","tokenStringStart","startState","token","closeBrackets","lineComment","fold","defineMIME"],"mappings":"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","file":"shell.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\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('shell', function() {\n\n  var words = {};\n  function define(style, dict) {\n    for(var i = 0; i < dict.length; i++) {\n      words[dict[i]] = style;\n    }\n  };\n\n  var commonAtoms = [\"true\", \"false\"];\n  var commonKeywords = [\"if\", \"then\", \"do\", \"else\", \"elif\", \"while\", \"until\", \"for\", \"in\", \"esac\", \"fi\",\n    \"fin\", \"fil\", \"done\", \"exit\", \"set\", \"unset\", \"export\", \"function\"];\n  var commonCommands = [\"ab\", \"awk\", \"bash\", \"beep\", \"cat\", \"cc\", \"cd\", \"chown\", \"chmod\", \"chroot\", \"clear\",\n    \"cp\", \"curl\", \"cut\", \"diff\", \"echo\", \"find\", \"gawk\", \"gcc\", \"get\", \"git\", \"grep\", \"hg\", \"kill\", \"killall\",\n    \"ln\", \"ls\", \"make\", \"mkdir\", \"openssl\", \"mv\", \"nc\", \"nl\", \"node\", \"npm\", \"ping\", \"ps\", \"restart\", \"rm\",\n    \"rmdir\", \"sed\", \"service\", \"sh\", \"shopt\", \"shred\", \"source\", \"sort\", \"sleep\", \"ssh\", \"start\", \"stop\",\n    \"su\", \"sudo\", \"svn\", \"tee\", \"telnet\", \"top\", \"touch\", \"vi\", \"vim\", \"wall\", \"wc\", \"wget\", \"who\", \"write\",\n    \"yes\", \"zsh\"];\n\n  CodeMirror.registerHelper(\"hintWords\", \"shell\", commonAtoms.concat(commonKeywords, commonCommands));\n\n  define('atom', commonAtoms);\n  define('keyword', commonKeywords);\n  define('builtin', commonCommands);\n\n  function tokenBase(stream, state) {\n    if (stream.eatSpace()) return null;\n\n    var sol = stream.sol();\n    var ch = stream.next();\n\n    if (ch === '\\\\') {\n      stream.next();\n      return null;\n    }\n    if (ch === '\\'' || ch === '\"' || ch === '`') {\n      state.tokens.unshift(tokenString(ch, ch === \"`\" ? \"quote\" : \"string\"));\n      return tokenize(stream, state);\n    }\n    if (ch === '#') {\n      if (sol && stream.eat('!')) {\n        stream.skipToEnd();\n        return 'meta'; // 'comment'?\n      }\n      stream.skipToEnd();\n      return 'comment';\n    }\n    if (ch === '$') {\n      state.tokens.unshift(tokenDollar);\n      return tokenize(stream, state);\n    }\n    if (ch === '+' || ch === '=') {\n      return 'operator';\n    }\n    if (ch === '-') {\n      stream.eat('-');\n      stream.eatWhile(/\\w/);\n      return 'attribute';\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/\\d/);\n      if(stream.eol() || !/\\w/.test(stream.peek())) {\n        return 'number';\n      }\n    }\n    stream.eatWhile(/[\\w-]/);\n    var cur = stream.current();\n    if (stream.peek() === '=' && /\\w+/.test(cur)) return 'def';\n    return words.hasOwnProperty(cur) ? words[cur] : null;\n  }\n\n  function tokenString(quote, style) {\n    var close = quote == \"(\" ? \")\" : quote == \"{\" ? \"}\" : quote\n    return function(stream, state) {\n      var next, escaped = false;\n      while ((next = stream.next()) != null) {\n        if (next === close && !escaped) {\n          state.tokens.shift();\n          break;\n        } else if (next === '$' && !escaped && quote !== \"'\" && stream.peek() != close) {\n          escaped = true;\n          stream.backUp(1);\n          state.tokens.unshift(tokenDollar);\n          break;\n        } else if (!escaped && quote !== close && next === quote) {\n          state.tokens.unshift(tokenString(quote, style))\n          return tokenize(stream, state)\n        } else if (!escaped && /['\"]/.test(next) && !/['\"]/.test(quote)) {\n          state.tokens.unshift(tokenStringStart(next, \"string\"));\n          stream.backUp(1);\n          break;\n        }\n        escaped = !escaped && next === '\\\\';\n      }\n      return style;\n    };\n  };\n\n  function tokenStringStart(quote, style) {\n    return function(stream, state) {\n      state.tokens[0] = tokenString(quote, style)\n      stream.next()\n      return tokenize(stream, state)\n    }\n  }\n\n  var tokenDollar = function(stream, state) {\n    if (state.tokens.length > 1) stream.eat('$');\n    var ch = stream.next()\n    if (/['\"({]/.test(ch)) {\n      state.tokens[0] = tokenString(ch, ch == \"(\" ? \"quote\" : ch == \"{\" ? \"def\" : \"string\");\n      return tokenize(stream, state);\n    }\n    if (!/\\d/.test(ch)) stream.eatWhile(/\\w/);\n    state.tokens.shift();\n    return 'def';\n  };\n\n  function tokenize(stream, state) {\n    return (state.tokens[0] || tokenBase) (stream, state);\n  };\n\n  return {\n    startState: function() {return {tokens:[]};},\n    token: function(stream, state) {\n      return tokenize(stream, state);\n    },\n    closeBrackets: \"()[]{}''\\\"\\\"``\",\n    lineComment: '#',\n    fold: \"brace\"\n  };\n});\n\nCodeMirror.defineMIME('text/x-sh', 'shell');\n// Apache uses a slightly different Media Type for Shell scripts\n// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\nCodeMirror.defineMIME('application/x-sh', 'shell');\n\n});\n"]}