1{"version":3,"sources":["../../node_modules/codemirror/mode/eiffel/eiffel.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","wordObj","words","o","i","e","length","keywords","operators","chain","newtok","stream","state","tokenize","push","tokenBase","eatSpace","ch","next","readQuoted","eat","skipToEnd","test","eatWhile","quote","style","unescaped","escaped","pop","startState","token","word","current","propertyIsEnumerable","lineComment","defineMIME"],"mappings":"CAGA,SAAUA,GACR,SAAWC,UAAW,gBAAmBC,SAAU,SACjDF,EAAIG,QAAQ,6BACT,UAAWC,SAAU,YAAcA,OAAOC,IAC7CD,QAAQ,wBAAyBJ,OAEjCA,GAAIM,cACL,SAASA,GACZ,YAEAA,GAAWC,WAAW,SAAU,WAC9B,QAASC,GAAQC,GACf,GAAIC,KACJ,KAAK,GAAIC,GAAI,EAAGC,EAAIH,EAAMI,OAAQF,EAAIC,IAAKD,EAAGD,EAAED,EAAME,IAAM,IAC5D,OAAOD,GAET,GAAII,GAAWN,GACb,OACA,SACA,OACA,UACA,QACA,SACA,WACA,OACA,QACA,SACA,QACA,SACA,UACA,SACA,YACA,WACA,SACA,OACA,MACA,WACA,OACA,QACA,OACA,KACA,UACA,QACA,UACA,KACA,SACA,OACA,WACA,SACA,SACA,MACA,SACA,OACA,KACA,WACA,SACA,QACA,QACA,QACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,YACA,QACA,UACA,SACA,WACA,aACA,KACA,MACA,UACA,MACA,MAEF,IAAIO,GAAYP,GAAS,KAAM,WAAW,MAAO,KAAK,KAAK,MAE3D,SAASQ,GAAMC,EAAQC,EAAQC,GAC7BA,EAAMC,SAASC,KAAKJ,EACpB,OAAOA,GAAOC,EAAQC,GAGxB,QAASG,GAAUJ,EAAQC,GACzB,GAAID,EAAOK,WAAY,MAAO,KAC9B,IAAIC,GAAKN,EAAOO,MAChB,IAAID,GAAM,KAAKA,GAAM,IAAK,CACxB,MAAOR,GAAMU,EAAWF,EAAI,UAAWN,EAAQC,OAC1C,IAAIK,GAAM,KAAKN,EAAOS,IAAI,KAAM,CACrCT,EAAOU,WACP,OAAO,cACF,IAAIJ,GAAM,KAAKN,EAAOS,IAAI,KAAM,CACrC,MAAO,eACF,IAAI,QAAQE,KAAKL,GAAK,CAC3BN,EAAOY,SAAS,gBAChBZ,GAAOS,IAAI,SACX,OAAO,YACF,IAAI,eAAeE,KAAKL,GAAK,CAClCN,EAAOY,SAAS,eAChBZ,GAAOS,IAAI,SACX,OAAO,YACF,IAAI,iBAAiBE,KAAKL,GAAK,CACpCN,EAAOY,SAAS,iBAChB,OAAO,eACF,CACL,MAAO,OAIX,QAASJ,GAAWK,EAAOC,EAAQC,GACjC,MAAO,UAASf,EAAQC,GACtB,GAAIe,GAAU,MAAOV,CACrB,QAAQA,EAAKN,EAAOO,SAAW,KAAM,CACnC,GAAID,GAAMO,IAAUE,IAAcC,GAAU,CAC1Cf,EAAMC,SAASe,KACf,OAEFD,GAAWA,GAAWV,GAAM,IAE9B,MAAOQ,IAIX,OACEI,WAAY,WACV,OAAQhB,UAAWE,KAGrBe,MAAO,SAASnB,EAAQC,GACtB,GAAIa,GAAQb,EAAMC,SAASD,EAAMC,SAASP,OAAO,GAAGK,EAAQC,EAC5D,IAAIa,GAAS,QAAS,CACpB,GAAIM,GAAOpB,EAAOqB,SAClBP,GAAQlB,EAAS0B,qBAAqBtB,EAAOqB,WAAa,UACtDxB,EAAUyB,qBAAqBtB,EAAOqB,WAAa,WACnD,qBAAqBV,KAAKS,GAAQ,MAClC,iBAAiBT,KAAKS,GAAQ,SAC9B,iBAAiBT,KAAKS,GAAQ,SAC9B,uBAAuBT,KAAKS,GAAQ,SACpC,uCAAuCT,KAAKS,GAAQ,SACpD,YAAYT,KAAKS,GAAQ,SACzB,WAEN,MAAON,IAETS,YAAa,OAIjBnC,GAAWoC,WAAW,gBAAiB","file":"eiffel.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(\"eiffel\", function() {\n  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  var keywords = wordObj([\n    'note',\n    'across',\n    'when',\n    'variant',\n    'until',\n    'unique',\n    'undefine',\n    'then',\n    'strip',\n    'select',\n    'retry',\n    'rescue',\n    'require',\n    'rename',\n    'reference',\n    'redefine',\n    'prefix',\n    'once',\n    'old',\n    'obsolete',\n    'loop',\n    'local',\n    'like',\n    'is',\n    'inspect',\n    'infix',\n    'include',\n    'if',\n    'frozen',\n    'from',\n    'external',\n    'export',\n    'ensure',\n    'end',\n    'elseif',\n    'else',\n    'do',\n    'creation',\n    'create',\n    'check',\n    'alias',\n    'agent',\n    'separate',\n    'invariant',\n    'inherit',\n    'indexing',\n    'feature',\n    'expanded',\n    'deferred',\n    'class',\n    'Void',\n    'True',\n    'Result',\n    'Precursor',\n    'False',\n    'Current',\n    'create',\n    'attached',\n    'detachable',\n    'as',\n    'and',\n    'implies',\n    'not',\n    'or'\n  ]);\n  var operators = wordObj([\":=\", \"and then\",\"and\", \"or\",\"<<\",\">>\"]);\n\n  function chain(newtok, stream, state) {\n    state.tokenize.push(newtok);\n    return newtok(stream, state);\n  }\n\n  function tokenBase(stream, state) {\n    if (stream.eatSpace()) return null;\n    var ch = stream.next();\n    if (ch == '\"'||ch == \"'\") {\n      return chain(readQuoted(ch, \"string\"), stream, state);\n    } else if (ch == \"-\"&&stream.eat(\"-\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \":\"&&stream.eat(\"=\")) {\n      return \"operator\";\n    } else if (/[0-9]/.test(ch)) {\n      stream.eatWhile(/[xXbBCc0-9\\.]/);\n      stream.eat(/[\\?\\!]/);\n      return \"ident\";\n    } else if (/[a-zA-Z_0-9]/.test(ch)) {\n      stream.eatWhile(/[a-zA-Z_0-9]/);\n      stream.eat(/[\\?\\!]/);\n      return \"ident\";\n    } else if (/[=+\\-\\/*^%<>~]/.test(ch)) {\n      stream.eatWhile(/[=+\\-\\/*^%<>~]/);\n      return \"operator\";\n    } else {\n      return null;\n    }\n  }\n\n  function readQuoted(quote, style,  unescaped) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && (unescaped || !escaped)) {\n          state.tokenize.pop();\n          break;\n        }\n        escaped = !escaped && ch == \"%\";\n      }\n      return style;\n    };\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: [tokenBase]};\n    },\n\n    token: function(stream, state) {\n      var style = state.tokenize[state.tokenize.length-1](stream, state);\n      if (style == \"ident\") {\n        var word = stream.current();\n        style = keywords.propertyIsEnumerable(stream.current()) ? \"keyword\"\n          : operators.propertyIsEnumerable(stream.current()) ? \"operator\"\n          : /^[A-Z][A-Z_0-9]*$/g.test(word) ? \"tag\"\n          : /^0[bB][0-1]+$/g.test(word) ? \"number\"\n          : /^0[cC][0-7]+$/g.test(word) ? \"number\"\n          : /^0[xX][a-fA-F0-9]+$/g.test(word) ? \"number\"\n          : /^([0-9]+\\.[0-9]*)|([0-9]*\\.[0-9]+)$/g.test(word) ? \"number\"\n          : /^[0-9]+$/g.test(word) ? \"number\"\n          : \"variable\";\n      }\n      return style;\n    },\n    lineComment: \"--\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-eiffel\", \"eiffel\");\n\n});\n"]}