1{"version":3,"sources":["../../node_modules/codemirror/mode/r/r.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","registerHelper","defineMode","config","wordObj","words","res","i","length","commonAtoms","commonBuiltins","commonKeywords","commonBlockKeywords","concat","atoms","builtins","keywords","blockkeywords","opChars","curPunc","tokenBase","stream","state","ch","next","skipToEnd","eat","eatWhile","match","test","tokenize","tokenString","word","current","propertyIsEnumerable","skipTo","ctx","argList","quote","backUp","ALIGN_YES","ALIGN_NO","BRACELESS","push","type","indent","flags","column","prev","setFlag","flag","pop","startState","indentUnit","afterIdent","token","sol","indentation","eatSpace","style","textAfter","firstChar","charAt","closing","lineComment","defineMIME"],"mappings":"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","file":"r.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.registerHelper(\"wordChars\", \"r\", /[\\w.]/);\n\nCodeMirror.defineMode(\"r\", function(config) {\n  function wordObj(words) {\n    var res = {};\n    for (var i = 0; i < words.length; ++i) res[words[i]] = true;\n    return res;\n  }\n  var commonAtoms = [\"NULL\", \"NA\", \"Inf\", \"NaN\", \"NA_integer_\", \"NA_real_\", \"NA_complex_\", \"NA_character_\", \"TRUE\", \"FALSE\"];\n  var commonBuiltins = [\"list\", \"quote\", \"bquote\", \"eval\", \"return\", \"call\", \"parse\", \"deparse\"];\n  var commonKeywords = [\"if\", \"else\", \"repeat\", \"while\", \"function\", \"for\", \"in\", \"next\", \"break\"];\n  var commonBlockKeywords = [\"if\", \"else\", \"repeat\", \"while\", \"function\", \"for\"];\n\n  CodeMirror.registerHelper(\"hintWords\", \"r\", commonAtoms.concat(commonBuiltins, commonKeywords));\n\n  var atoms = wordObj(commonAtoms);\n  var builtins = wordObj(commonBuiltins);\n  var keywords = wordObj(commonKeywords);\n  var blockkeywords = wordObj(commonBlockKeywords);\n  var opChars = /[+\\-*\\/^<>=!&|~$:]/;\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    curPunc = null;\n    var ch = stream.next();\n    if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \"0\" && stream.eat(\"x\")) {\n      stream.eatWhile(/[\\da-f]/i);\n      return \"number\";\n    } else if (ch == \".\" && stream.eat(/\\d/)) {\n      stream.match(/\\d*(?:e[+\\-]?\\d+)?/);\n      return \"number\";\n    } else if (/\\d/.test(ch)) {\n      stream.match(/\\d*(?:\\.\\d+)?(?:e[+\\-]\\d+)?L?/);\n      return \"number\";\n    } else if (ch == \"'\" || ch == '\"') {\n      state.tokenize = tokenString(ch);\n      return \"string\";\n    } else if (ch == \"`\") {\n      stream.match(/[^`]+`/);\n      return \"variable-3\";\n    } else if (ch == \".\" && stream.match(/.[.\\d]+/)) {\n      return \"keyword\";\n    } else if (/[\\w\\.]/.test(ch) && ch != \"_\") {\n      stream.eatWhile(/[\\w\\.]/);\n      var word = stream.current();\n      if (atoms.propertyIsEnumerable(word)) return \"atom\";\n      if (keywords.propertyIsEnumerable(word)) {\n        // Block keywords start new blocks, except 'else if', which only starts\n        // one new block for the 'if', no block for the 'else'.\n        if (blockkeywords.propertyIsEnumerable(word) &&\n            !stream.match(/\\s*if(\\s+|$)/, false))\n          curPunc = \"block\";\n        return \"keyword\";\n      }\n      if (builtins.propertyIsEnumerable(word)) return \"builtin\";\n      return \"variable\";\n    } else if (ch == \"%\") {\n      if (stream.skipTo(\"%\")) stream.next();\n      return \"operator variable-2\";\n    } else if (\n        (ch == \"<\" && stream.eat(\"-\")) ||\n        (ch == \"<\" && stream.match(\"<-\")) ||\n        (ch == \"-\" && stream.match(/>>?/))\n      ) {\n      return \"operator arrow\";\n    } else if (ch == \"=\" && state.ctx.argList) {\n      return \"arg-is\";\n    } else if (opChars.test(ch)) {\n      if (ch == \"$\") return \"operator dollar\";\n      stream.eatWhile(opChars);\n      return \"operator\";\n    } else if (/[\\(\\){}\\[\\];]/.test(ch)) {\n      curPunc = ch;\n      if (ch == \";\") return \"semi\";\n      return null;\n    } else {\n      return null;\n    }\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      if (stream.eat(\"\\\\\")) {\n        var ch = stream.next();\n        if (ch == \"x\") stream.match(/^[a-f0-9]{2}/i);\n        else if ((ch == \"u\" || ch == \"U\") && stream.eat(\"{\") && stream.skipTo(\"}\")) stream.next();\n        else if (ch == \"u\") stream.match(/^[a-f0-9]{4}/i);\n        else if (ch == \"U\") stream.match(/^[a-f0-9]{8}/i);\n        else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/);\n        return \"string-2\";\n      } else {\n        var next;\n        while ((next = stream.next()) != null) {\n          if (next == quote) { state.tokenize = tokenBase; break; }\n          if (next == \"\\\\\") { stream.backUp(1); break; }\n        }\n        return \"string\";\n      }\n    };\n  }\n\n  var ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4\n\n  function push(state, type, stream) {\n    state.ctx = {type: type,\n                 indent: state.indent,\n                 flags: 0,\n                 column: stream.column(),\n                 prev: state.ctx};\n  }\n  function setFlag(state, flag) {\n    var ctx = state.ctx\n    state.ctx = {type: ctx.type,\n                 indent: ctx.indent,\n                 flags: ctx.flags | flag,\n                 column: ctx.column,\n                 prev: ctx.prev}\n  }\n  function pop(state) {\n    state.indent = state.ctx.indent;\n    state.ctx = state.ctx.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase,\n              ctx: {type: \"top\",\n                    indent: -config.indentUnit,\n                    flags: ALIGN_NO},\n              indent: 0,\n              afterIdent: false};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO\n        if (state.ctx.flags & BRACELESS) pop(state)\n        state.indent = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      if (style != \"comment\" && (state.ctx.flags & ALIGN_NO) == 0) setFlag(state, ALIGN_YES)\n\n      if ((curPunc == \";\" || curPunc == \"{\" || curPunc == \"}\") && state.ctx.type == \"block\") pop(state);\n      if (curPunc == \"{\") push(state, \"}\", stream);\n      else if (curPunc == \"(\") {\n        push(state, \")\", stream);\n        if (state.afterIdent) state.ctx.argList = true;\n      }\n      else if (curPunc == \"[\") push(state, \"]\", stream);\n      else if (curPunc == \"block\") push(state, \"block\", stream);\n      else if (curPunc == state.ctx.type) pop(state);\n      else if (state.ctx.type == \"block\" && style != \"comment\") setFlag(state, BRACELESS)\n      state.afterIdent = style == \"variable\" || style == \"keyword\";\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx,\n          closing = firstChar == ctx.type;\n      if (ctx.flags & BRACELESS) ctx = ctx.prev\n      if (ctx.type == \"block\") return ctx.indent + (firstChar == \"{\" ? 0 : config.indentUnit);\n      else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indent + (closing ? 0 : config.indentUnit);\n    },\n\n    lineComment: \"#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-rsrc\", \"r\");\n\n});\n"]}