{"version":3,"file":"sieve-woNLjsDA.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/sieve.js"],"sourcesContent":["function words(str) {\n  var obj = {}, words = str.split(\" \");\n  for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n  return obj;\n}\n\nvar keywords = words(\"if elsif else stop require\");\nvar atoms = words(\"true false not\");\n\nfunction tokenBase(stream, state) {\n\n  var ch = stream.next();\n  if (ch == \"/\" && stream.eat(\"*\")) {\n    state.tokenize = tokenCComment;\n    return tokenCComment(stream, state);\n  }\n\n  if (ch === '#') {\n    stream.skipToEnd();\n    return \"comment\";\n  }\n\n  if (ch == \"\\\"\") {\n    state.tokenize = tokenString(ch);\n    return state.tokenize(stream, state);\n  }\n\n  if (ch == \"(\") {\n    state._indent.push(\"(\");\n    // add virtual angel wings so that editor behaves...\n    // ...more sane incase of broken brackets\n    state._indent.push(\"{\");\n    return null;\n  }\n\n  if (ch === \"{\") {\n    state._indent.push(\"{\");\n    return null;\n  }\n\n  if (ch == \")\")  {\n    state._indent.pop();\n    state._indent.pop();\n  }\n\n  if (ch === \"}\") {\n    state._indent.pop();\n    return null;\n  }\n\n  if (ch == \",\")\n    return null;\n\n  if (ch == \";\")\n    return null;\n\n\n  if (/[{}\\(\\),;]/.test(ch))\n    return null;\n\n  // 1*DIGIT \"K\" / \"M\" / \"G\"\n  if (/\\d/.test(ch)) {\n    stream.eatWhile(/[\\d]/);\n    stream.eat(/[KkMmGg]/);\n    return \"number\";\n  }\n\n  // \":\" (ALPHA / \"_\") *(ALPHA / DIGIT / \"_\")\n  if (ch == \":\") {\n    stream.eatWhile(/[a-zA-Z_]/);\n    stream.eatWhile(/[a-zA-Z0-9_]/);\n\n    return \"operator\";\n  }\n\n  stream.eatWhile(/\\w/);\n  var cur = stream.current();\n\n  // \"text:\" *(SP / HTAB) (hash-comment / CRLF)\n  // *(multiline-literal / multiline-dotstart)\n  // \".\" CRLF\n  if ((cur == \"text\") && stream.eat(\":\"))\n  {\n    state.tokenize = tokenMultiLineString;\n    return \"string\";\n  }\n\n  if (keywords.propertyIsEnumerable(cur))\n    return \"keyword\";\n\n  if (atoms.propertyIsEnumerable(cur))\n    return \"atom\";\n\n  return null;\n}\n\nfunction tokenMultiLineString(stream, state)\n{\n  state._multiLineString = true;\n  // the first line is special it may contain a comment\n  if (!stream.sol()) {\n    stream.eatSpace();\n\n    if (stream.peek() == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    stream.skipToEnd();\n    return \"string\";\n  }\n\n  if ((stream.next() == \".\")  && (stream.eol()))\n  {\n    state._multiLineString = false;\n    state.tokenize = tokenBase;\n  }\n\n  return \"string\";\n}\n\nfunction tokenCComment(stream, state) {\n  var maybeEnd = false, ch;\n  while ((ch = stream.next()) != null) {\n    if (maybeEnd && ch == \"/\") {\n      state.tokenize = tokenBase;\n      break;\n    }\n    maybeEnd = (ch == \"*\");\n  }\n  return \"comment\";\n}\n\nfunction tokenString(quote) {\n  return function(stream, state) {\n    var escaped = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (ch == quote && !escaped)\n        break;\n      escaped = !escaped && ch == \"\\\\\";\n    }\n    if (!escaped) state.tokenize = tokenBase;\n    return \"string\";\n  };\n}\n\nexport const sieve = {\n  name: \"sieve\",\n  startState: function(base) {\n    return {tokenize: tokenBase,\n            baseIndent: base || 0,\n            _indent: []};\n  },\n\n  token: function(stream, state) {\n    if (stream.eatSpace())\n      return null;\n\n    return (state.tokenize || tokenBase)(stream, state);\n  },\n\n  indent: function(state, _textAfter, cx) {\n    var length = state._indent.length;\n    if (_textAfter && (_textAfter[0] == \"}\"))\n      length--;\n\n    if (length <0)\n      length = 0;\n\n    return length * cx.unit;\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*\\}$/\n  }\n};\n"],"names":["words","str","obj","split","i","length","keywords","atoms","tokenBase","stream","state","quote","ch","next","eat","tokenize","tokenCComment","skipToEnd","escaped","_indent","push","pop","test","eatWhile","cur","current","tokenMultiLineString","propertyIsEnumerable","_multiLineString","sol","eol","eatSpace","peek","maybeEnd","sieve","name","startState","base","baseIndent","token","indent","_textAfter","cx","unit","languageData","indentOnInput"],"mappings":"aAAA,SAASA,EAAMC,GAEb,IADA,IAAIC,EAAM,CAAA,EAAIF,EAAQC,EAAIE,MAAM,KACvBC,EAAI,EAAGA,EAAIJ,EAAMK,SAAUD,EAAGF,EAAIF,EAAMI,KAAM,EACvD,OAAOF,CACT,oEAEA,IAAII,EAAWN,EAAM,8BACjBO,EAAQP,EAAM,kBAElB,SAASQ,EAAUC,EAAQC,GAEzB,IA0HmBC,EA1HfC,EAAKH,EAAOI,OAChB,GAAU,KAAND,GAAaH,EAAOK,IAAI,KAE1B,OADAJ,EAAMK,SAAWC,EACVA,EAAcP,EAAQC,GAG/B,GAAW,MAAPE,EAEF,OADAH,EAAOQ,YACA,UAGT,GAAU,KAANL,EAEF,OADAF,EAAMK,UA8GWJ,EA9GYC,EA+GxB,SAASH,EAAQC,GAEtB,IADA,IAAqBE,EAAjBM,GAAU,EACiB,OAAvBN,EAAKH,EAAOI,UACdD,GAAMD,GAAUO,IAEpBA,GAAWA,GAAiB,MAANN,EAGxB,OADKM,IAASR,EAAMK,SAAWP,GACxB,QACT,GAvHSE,EAAMK,SAASN,EAAQC,GAGhC,GAAU,KAANE,EAKF,OAJAF,EAAMS,QAAQC,KAAK,KAGnBV,EAAMS,QAAQC,KAAK,KACZ,KAGT,GAAW,MAAPR,EAEF,OADAF,EAAMS,QAAQC,KAAK,KACZ,KAQT,GALU,KAANR,IACFF,EAAMS,QAAQE,MACdX,EAAMS,QAAQE,OAGL,MAAPT,EAEF,OADAF,EAAMS,QAAQE,MACP,KAGT,GAAU,KAANT,EACF,OAAO,KAET,GAAU,KAANA,EACF,OAAO,KAGT,GAAI,aAAaU,KAAKV,GACpB,OAAO,KAGT,GAAI,KAAKU,KAAKV,GAGZ,OAFAH,EAAOc,SAAS,QAChBd,EAAOK,IAAI,YACJ,SAIT,GAAU,KAANF,EAIF,OAHAH,EAAOc,SAAS,aAChBd,EAAOc,SAAS,gBAET,WAGTd,EAAOc,SAAS,MAChB,IAAIC,EAAMf,EAAOgB,UAKjB,MAAY,QAAPD,GAAkBf,EAAOK,IAAI,MAEhCJ,EAAMK,SAAWW,EACV,UAGLpB,EAASqB,qBAAqBH,GACzB,UAELjB,EAAMoB,qBAAqBH,GACtB,OAEF,IACT,CAEA,SAASE,EAAqBjB,EAAQC,GAIpC,OAFAA,EAAMkB,kBAAmB,EAEpBnB,EAAOoB,OAYU,KAAjBpB,EAAOI,QAAoBJ,EAAOqB,QAErCpB,EAAMkB,kBAAmB,EACzBlB,EAAMK,SAAWP,GAGZ,WAjBLC,EAAOsB,WAEc,KAAjBtB,EAAOuB,QACTvB,EAAOQ,YACA,YAGTR,EAAOQ,YACA,UAUX,CAEA,SAASD,EAAcP,EAAQC,GAE7B,IADA,IAAsBE,EAAlBqB,GAAW,EACgB,OAAvBrB,EAAKH,EAAOI,SAAiB,CACnC,GAAIoB,GAAkB,KAANrB,EAAW,CACzBF,EAAMK,SAAWP,EACjB,KACF,CACAyB,EAAkB,KAANrB,CACd,CACA,MAAO,SACT,CAeY,MAACsB,EAAQ,CACnBC,KAAM,QACNC,WAAY,SAASC,GACnB,MAAO,CAACtB,SAAUP,EACV8B,WAAYD,GAAQ,EACpBlB,QAAS,GACnB,EAEAoB,MAAO,SAAS9B,EAAQC,GACtB,OAAID,EAAOsB,WACF,MAEDrB,EAAMK,UAAYP,GAAWC,EAAQC,EAC/C,EAEA8B,OAAQ,SAAS9B,EAAO+B,EAAYC,GAClC,IAAIrC,EAASK,EAAMS,QAAQd,OAO3B,OANIoC,GAAgC,KAAjBA,EAAW,IAC5BpC,IAEEA,EAAQ,IACVA,EAAS,GAEJA,EAASqC,EAAGC,IACrB,EAEAC,aAAc,CACZC,cAAe","x_google_ignoreList":[0]}