{"version":3,"file":"ruby-B5mrZV-E.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/ruby.js"],"sourcesContent":["function wordObj(words) {\n  var o = {};\n  for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;\n  return o;\n}\n\nvar keywordList = [\n  \"alias\", \"and\", \"BEGIN\", \"begin\", \"break\", \"case\", \"class\", \"def\", \"defined?\", \"do\", \"else\",\n  \"elsif\", \"END\", \"end\", \"ensure\", \"false\", \"for\", \"if\", \"in\", \"module\", \"next\", \"not\", \"or\",\n  \"redo\", \"rescue\", \"retry\", \"return\", \"self\", \"super\", \"then\", \"true\", \"undef\", \"unless\",\n  \"until\", \"when\", \"while\", \"yield\", \"nil\", \"raise\", \"throw\", \"catch\", \"fail\", \"loop\", \"callcc\",\n  \"caller\", \"lambda\", \"proc\", \"public\", \"protected\", \"private\", \"require\", \"load\",\n  \"require_relative\", \"extend\", \"autoload\", \"__END__\", \"__FILE__\", \"__LINE__\", \"__dir__\"\n], keywords = wordObj(keywordList);\n\nvar indentWords = wordObj([\"def\", \"class\", \"case\", \"for\", \"while\", \"until\", \"module\",\n                           \"catch\", \"loop\", \"proc\", \"begin\"]);\nvar dedentWords = wordObj([\"end\", \"until\"]);\nvar opening = {\"[\": \"]\", \"{\": \"}\", \"(\": \")\"};\nvar closing = {\"]\": \"[\", \"}\": \"{\", \")\": \"(\"};\n\nvar curPunc;\n\nfunction chain(newtok, stream, state) {\n  state.tokenize.push(newtok);\n  return newtok(stream, state);\n}\n\nfunction tokenBase(stream, state) {\n  if (stream.sol() && stream.match(\"=begin\") && stream.eol()) {\n    state.tokenize.push(readBlockComment);\n    return \"comment\";\n  }\n  if (stream.eatSpace()) return null;\n  var ch = stream.next(), m;\n  if (ch == \"`\" || ch == \"'\" || ch == '\"') {\n    return chain(readQuoted(ch, \"string\", ch == '\"' || ch == \"`\"), stream, state);\n  } else if (ch == \"/\") {\n    if (regexpAhead(stream))\n      return chain(readQuoted(ch, \"string.special\", true), stream, state);\n    else\n      return \"operator\";\n  } else if (ch == \"%\") {\n    var style = \"string\", embed = true;\n    if (stream.eat(\"s\")) style = \"atom\";\n    else if (stream.eat(/[WQ]/)) style = \"string\";\n    else if (stream.eat(/[r]/)) style = \"string.special\";\n    else if (stream.eat(/[wxq]/)) { style = \"string\"; embed = false; }\n    var delim = stream.eat(/[^\\w\\s=]/);\n    if (!delim) return \"operator\";\n    if (opening.propertyIsEnumerable(delim)) delim = opening[delim];\n    return chain(readQuoted(delim, style, embed, true), stream, state);\n  } else if (ch == \"#\") {\n    stream.skipToEnd();\n    return \"comment\";\n  } else if (ch == \"<\" && (m = stream.match(/^<([-~])[\\`\\\"\\']?([a-zA-Z_?]\\w*)[\\`\\\"\\']?(?:;|$)/))) {\n    return chain(readHereDoc(m[2], m[1]), stream, state);\n  } else if (ch == \"0\") {\n    if (stream.eat(\"x\")) stream.eatWhile(/[\\da-fA-F]/);\n    else if (stream.eat(\"b\")) stream.eatWhile(/[01]/);\n    else stream.eatWhile(/[0-7]/);\n    return \"number\";\n  } else if (/\\d/.test(ch)) {\n    stream.match(/^[\\d_]*(?:\\.[\\d_]+)?(?:[eE][+\\-]?[\\d_]+)?/);\n    return \"number\";\n  } else if (ch == \"?\") {\n    while (stream.match(/^\\\\[CM]-/)) {}\n    if (stream.eat(\"\\\\\")) stream.eatWhile(/\\w/);\n    else stream.next();\n    return \"string\";\n  } else if (ch == \":\") {\n    if (stream.eat(\"'\")) return chain(readQuoted(\"'\", \"atom\", false), stream, state);\n    if (stream.eat('\"')) return chain(readQuoted('\"', \"atom\", true), stream, state);\n\n    // :> :>> :< :<< are valid symbols\n    if (stream.eat(/[\\<\\>]/)) {\n      stream.eat(/[\\<\\>]/);\n      return \"atom\";\n    }\n\n    // :+ :- :/ :* :| :& :! are valid symbols\n    if (stream.eat(/[\\+\\-\\*\\/\\&\\|\\:\\!]/)) {\n      return \"atom\";\n    }\n\n    // Symbols can't start by a digit\n    if (stream.eat(/[a-zA-Z$@_\\xa1-\\uffff]/)) {\n      stream.eatWhile(/[\\w$\\xa1-\\uffff]/);\n      // Only one ? ! = is allowed and only as the last character\n      stream.eat(/[\\?\\!\\=]/);\n      return \"atom\";\n    }\n    return \"operator\";\n  } else if (ch == \"@\" && stream.match(/^@?[a-zA-Z_\\xa1-\\uffff]/)) {\n    stream.eat(\"@\");\n    stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n    return \"propertyName\";\n  } else if (ch == \"$\") {\n    if (stream.eat(/[a-zA-Z_]/)) {\n      stream.eatWhile(/[\\w]/);\n    } else if (stream.eat(/\\d/)) {\n      stream.eat(/\\d/);\n    } else {\n      stream.next(); // Must be a special global like $: or $!\n    }\n    return \"variableName.special\";\n  } else if (/[a-zA-Z_\\xa1-\\uffff]/.test(ch)) {\n    stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n    stream.eat(/[\\?\\!]/);\n    if (stream.eat(\":\")) return \"atom\";\n    return \"variable\";\n  } else if (ch == \"|\" && (state.varList || state.lastTok == \"{\" || state.lastTok == \"do\")) {\n    curPunc = \"|\";\n    return null;\n  } else if (/[\\(\\)\\[\\]{}\\\\;]/.test(ch)) {\n    curPunc = ch;\n    return null;\n  } else if (ch == \"-\" && stream.eat(\">\")) {\n    return \"operator\";\n  } else if (/[=+\\-\\/*:\\.^%<>~|]/.test(ch)) {\n    var more = stream.eatWhile(/[=+\\-\\/*:\\.^%<>~|]/);\n    if (ch == \".\" && !more) curPunc = \".\";\n    return \"operator\";\n  } else {\n    return null;\n  }\n}\n\nfunction regexpAhead(stream) {\n  var start = stream.pos, depth = 0, next, found = false, escaped = false\n  while ((next = stream.next()) != null) {\n    if (!escaped) {\n      if (\"[{(\".indexOf(next) > -1) {\n        depth++\n      } else if (\"]})\".indexOf(next) > -1) {\n        depth--\n        if (depth < 0) break\n      } else if (next == \"/\" && depth == 0) {\n        found = true\n        break\n      }\n      escaped = next == \"\\\\\"\n    } else {\n      escaped = false\n    }\n  }\n  stream.backUp(stream.pos - start)\n  return found\n}\n\nfunction tokenBaseUntilBrace(depth) {\n  if (!depth) depth = 1;\n  return function(stream, state) {\n    if (stream.peek() == \"}\") {\n      if (depth == 1) {\n        state.tokenize.pop();\n        return state.tokenize[state.tokenize.length-1](stream, state);\n      } else {\n        state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1);\n      }\n    } else if (stream.peek() == \"{\") {\n      state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1);\n    }\n    return tokenBase(stream, state);\n  };\n}\nfunction tokenBaseOnce() {\n  var alreadyCalled = false;\n  return function(stream, state) {\n    if (alreadyCalled) {\n      state.tokenize.pop();\n      return state.tokenize[state.tokenize.length-1](stream, state);\n    }\n    alreadyCalled = true;\n    return tokenBase(stream, state);\n  };\n}\nfunction readQuoted(quote, style, embed, unescaped) {\n  return function(stream, state) {\n    var escaped = false, ch;\n\n    if (state.context.type === 'read-quoted-paused') {\n      state.context = state.context.prev;\n      stream.eat(\"}\");\n    }\n\n    while ((ch = stream.next()) != null) {\n      if (ch == quote && (unescaped || !escaped)) {\n        state.tokenize.pop();\n        break;\n      }\n      if (embed && ch == \"#\" && !escaped) {\n        if (stream.eat(\"{\")) {\n          if (quote == \"}\") {\n            state.context = {prev: state.context, type: 'read-quoted-paused'};\n          }\n          state.tokenize.push(tokenBaseUntilBrace());\n          break;\n        } else if (/[@\\$]/.test(stream.peek())) {\n          state.tokenize.push(tokenBaseOnce());\n          break;\n        }\n      }\n      escaped = !escaped && ch == \"\\\\\";\n    }\n    return style;\n  };\n}\nfunction readHereDoc(phrase, mayIndent) {\n  return function(stream, state) {\n    if (mayIndent) stream.eatSpace()\n    if (stream.match(phrase)) state.tokenize.pop();\n    else stream.skipToEnd();\n    return \"string\";\n  };\n}\nfunction readBlockComment(stream, state) {\n  if (stream.sol() && stream.match(\"=end\") && stream.eol())\n    state.tokenize.pop();\n  stream.skipToEnd();\n  return \"comment\";\n}\n\nexport const ruby = {\n  name: \"ruby\",\n  startState: function(indentUnit) {\n    return {tokenize: [tokenBase],\n            indented: 0,\n            context: {type: \"top\", indented: -indentUnit},\n            continuedLine: false,\n            lastTok: null,\n            varList: false};\n  },\n\n  token: function(stream, state) {\n    curPunc = null;\n    if (stream.sol()) state.indented = stream.indentation();\n    var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;\n    var thisTok = curPunc;\n    if (style == \"variable\") {\n      var word = stream.current();\n      style = state.lastTok == \".\" ? \"property\"\n        : keywords.propertyIsEnumerable(stream.current()) ? \"keyword\"\n        : /^[A-Z]/.test(word) ? \"tag\"\n        : (state.lastTok == \"def\" || state.lastTok == \"class\" || state.varList) ? \"def\"\n        : \"variable\";\n      if (style == \"keyword\") {\n        thisTok = word;\n        if (indentWords.propertyIsEnumerable(word)) kwtype = \"indent\";\n        else if (dedentWords.propertyIsEnumerable(word)) kwtype = \"dedent\";\n        else if ((word == \"if\" || word == \"unless\") && stream.column() == stream.indentation())\n          kwtype = \"indent\";\n        else if (word == \"do\" && state.context.indented < state.indented)\n          kwtype = \"indent\";\n      }\n    }\n    if (curPunc || (style && style != \"comment\")) state.lastTok = thisTok;\n    if (curPunc == \"|\") state.varList = !state.varList;\n\n    if (kwtype == \"indent\" || /[\\(\\[\\{]/.test(curPunc))\n      state.context = {prev: state.context, type: curPunc || style, indented: state.indented};\n    else if ((kwtype == \"dedent\" || /[\\)\\]\\}]/.test(curPunc)) && state.context.prev)\n      state.context = state.context.prev;\n\n    if (stream.eol())\n      state.continuedLine = (curPunc == \"\\\\\" || style == \"operator\");\n    return style;\n  },\n\n  indent: function(state, textAfter, cx) {\n    if (state.tokenize[state.tokenize.length-1] != tokenBase) return null;\n    var firstChar = textAfter && textAfter.charAt(0);\n    var ct = state.context;\n    var closed = ct.type == closing[firstChar] ||\n        ct.type == \"keyword\" && /^(?:end|until|else|elsif|when|rescue)\\b/.test(textAfter);\n    return ct.indented + (closed ? 0 : cx.unit) +\n      (state.continuedLine ? cx.unit : 0);\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*(?:end|rescue|elsif|else|\\})$/,\n    commentTokens: {line: \"#\"},\n    autocomplete: keywordList\n  }\n};\n\n"],"names":["wordObj","words","o","i","e","length","curPunc","keywordList","keywords","indentWords","dedentWords","opening","closing","chain","newtok","stream","state","tokenize","push","tokenBase","sol","match","eol","readBlockComment","eatSpace","m","phrase","mayIndent","ch","next","readQuoted","start","pos","depth","found","escaped","indexOf","backUp","regexpAhead","style","embed","eat","delim","propertyIsEnumerable","skipToEnd","pop","eatWhile","test","varList","lastTok","more","tokenBaseUntilBrace","peek","tokenBaseOnce","alreadyCalled","quote","unescaped","context","type","prev","ruby","name","startState","indentUnit","indented","continuedLine","token","indentation","kwtype","thisTok","word","current","column","indent","textAfter","cx","firstChar","charAt","ct","closed","unit","languageData","indentOnInput","commentTokens","line","autocomplete"],"mappings":"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","x_google_ignoreList":[0]}