{"version":3,"file":"r-D3PcvI1z.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/r.js"],"sourcesContent":["function wordObj(words) {\n  var res = {};\n  for (var i = 0; i < words.length; ++i) res[words[i]] = true;\n  return res;\n}\nvar commonAtoms = [\"NULL\", \"NA\", \"Inf\", \"NaN\", \"NA_integer_\", \"NA_real_\", \"NA_complex_\", \"NA_character_\", \"TRUE\", \"FALSE\"];\nvar commonBuiltins = [\"list\", \"quote\", \"bquote\", \"eval\", \"return\", \"call\", \"parse\", \"deparse\"];\nvar commonKeywords = [\"if\", \"else\", \"repeat\", \"while\", \"function\", \"for\", \"in\", \"next\", \"break\"];\nvar commonBlockKeywords = [\"if\", \"else\", \"repeat\", \"while\", \"function\", \"for\"];\n\nvar atoms = wordObj(commonAtoms);\nvar builtins = wordObj(commonBuiltins);\nvar keywords = wordObj(commonKeywords);\nvar blockkeywords = wordObj(commonBlockKeywords);\nvar opChars = /[+\\-*\\/^<>=!&|~$:]/;\nvar curPunc;\n\nfunction 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 \"string.special\";\n  } else if (ch == \".\" && stream.match(/.(?:[.]|\\d+)/)) {\n    return \"keyword\";\n  } else if (/[a-zA-Z\\.]/.test(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 \"variableName.special\";\n  } else if (\n    (ch == \"<\" && stream.eat(\"-\")) ||\n      (ch == \"<\" && stream.match(\"<-\")) ||\n      (ch == \"-\" && stream.match(/>>?/))\n  ) {\n    return \"operator\";\n  } else if (ch == \"=\" && state.ctx.argList) {\n    return \"operator\";\n  } else if (opChars.test(ch)) {\n    if (ch == \"$\") return \"operator\";\n    stream.eatWhile(opChars);\n    return \"operator\";\n  } else if (/[\\(\\){}\\[\\];]/.test(ch)) {\n    curPunc = ch;\n    if (ch == \";\") return \"punctuation\";\n    return null;\n  } else {\n    return null;\n  }\n}\n\nfunction 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.special\";\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\nvar ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4\n\nfunction 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}\nfunction 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}\nfunction pop(state) {\n  state.indent = state.ctx.indent;\n  state.ctx = state.ctx.prev;\n}\n\nexport const r = {\n  name: \"r\",\n  startState: function(indentUnit) {\n    return {tokenize: tokenBase,\n            ctx: {type: \"top\",\n                  indent: -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, cx) {\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 : cx.unit);\n    else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1);\n    else return ctx.indent + (closing ? 0 : cx.unit);\n  },\n\n  languageData: {\n    wordChars: \".\",\n    commentTokens: {line: \"#\"},\n    autocomplete: commonAtoms.concat(commonBuiltins, commonKeywords)\n  }\n};\n"],"names":["wordObj","words","res","i","length","curPunc","commonAtoms","commonBuiltins","commonKeywords","atoms","builtins","keywords","blockkeywords","opChars","tokenBase","stream","state","quote","ch","next","skipToEnd","eat","eatWhile","match","test","tokenize","skipTo","backUp","word","current","propertyIsEnumerable","ctx","argList","push","type","indent","flags","column","prev","setFlag","flag","pop","r","name","startState","indentUnit","afterIdent","token","sol","indentation","eatSpace","style","textAfter","cx","firstChar","charAt","closing","unit","languageData","wordChars","commentTokens","line","autocomplete","concat"],"mappings":"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","x_google_ignoreList":[0]}