[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/eiffel/ -> eiffel.js (source)

   1  // CodeMirror, copyright (c) by Marijn Haverbeke and others
   2  // Distributed under an MIT license: https://codemirror.net/5/LICENSE
   3  
   4  (function(mod) {
   5    if (typeof exports == "object" && typeof module == "object") // CommonJS
   6      mod(require("../../lib/codemirror"));
   7    else if (typeof define == "function" && define.amd) // AMD
   8      define(["../../lib/codemirror"], mod);
   9    else // Plain browser env
  10      mod(CodeMirror);
  11  })(function(CodeMirror) {
  12  "use strict";
  13  
  14  CodeMirror.defineMode("eiffel", function() {
  15    function wordObj(words) {
  16      var o = {};
  17      for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
  18      return o;
  19    }
  20    var keywords = wordObj([
  21      'note',
  22      'across',
  23      'when',
  24      'variant',
  25      'until',
  26      'unique',
  27      'undefine',
  28      'then',
  29      'strip',
  30      'select',
  31      'retry',
  32      'rescue',
  33      'require',
  34      'rename',
  35      'reference',
  36      'redefine',
  37      'prefix',
  38      'once',
  39      'old',
  40      'obsolete',
  41      'loop',
  42      'local',
  43      'like',
  44      'is',
  45      'inspect',
  46      'infix',
  47      'include',
  48      'if',
  49      'frozen',
  50      'from',
  51      'external',
  52      'export',
  53      'ensure',
  54      'end',
  55      'elseif',
  56      'else',
  57      'do',
  58      'creation',
  59      'create',
  60      'check',
  61      'alias',
  62      'agent',
  63      'separate',
  64      'invariant',
  65      'inherit',
  66      'indexing',
  67      'feature',
  68      'expanded',
  69      'deferred',
  70      'class',
  71      'Void',
  72      'True',
  73      'Result',
  74      'Precursor',
  75      'False',
  76      'Current',
  77      'create',
  78      'attached',
  79      'detachable',
  80      'as',
  81      'and',
  82      'implies',
  83      'not',
  84      'or'
  85    ]);
  86    var operators = wordObj([":=", "and then","and", "or","<<",">>"]);
  87  
  88    function chain(newtok, stream, state) {
  89      state.tokenize.push(newtok);
  90      return newtok(stream, state);
  91    }
  92  
  93    function tokenBase(stream, state) {
  94      if (stream.eatSpace()) return null;
  95      var ch = stream.next();
  96      if (ch == '"'||ch == "'") {
  97        return chain(readQuoted(ch, "string"), stream, state);
  98      } else if (ch == "-"&&stream.eat("-")) {
  99        stream.skipToEnd();
 100        return "comment";
 101      } else if (ch == ":"&&stream.eat("=")) {
 102        return "operator";
 103      } else if (/[0-9]/.test(ch)) {
 104        stream.eatWhile(/[xXbBCc0-9\.]/);
 105        stream.eat(/[\?\!]/);
 106        return "ident";
 107      } else if (/[a-zA-Z_0-9]/.test(ch)) {
 108        stream.eatWhile(/[a-zA-Z_0-9]/);
 109        stream.eat(/[\?\!]/);
 110        return "ident";
 111      } else if (/[=+\-\/*^%<>~]/.test(ch)) {
 112        stream.eatWhile(/[=+\-\/*^%<>~]/);
 113        return "operator";
 114      } else {
 115        return null;
 116      }
 117    }
 118  
 119    function readQuoted(quote, style,  unescaped) {
 120      return function(stream, state) {
 121        var escaped = false, ch;
 122        while ((ch = stream.next()) != null) {
 123          if (ch == quote && (unescaped || !escaped)) {
 124            state.tokenize.pop();
 125            break;
 126          }
 127          escaped = !escaped && ch == "%";
 128        }
 129        return style;
 130      };
 131    }
 132  
 133    return {
 134      startState: function() {
 135        return {tokenize: [tokenBase]};
 136      },
 137  
 138      token: function(stream, state) {
 139        var style = state.tokenize[state.tokenize.length-1](stream, state);
 140        if (style == "ident") {
 141          var word = stream.current();
 142          style = keywords.propertyIsEnumerable(stream.current()) ? "keyword"
 143            : operators.propertyIsEnumerable(stream.current()) ? "operator"
 144            : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag"
 145            : /^0[bB][0-1]+$/g.test(word) ? "number"
 146            : /^0[cC][0-7]+$/g.test(word) ? "number"
 147            : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number"
 148            : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number"
 149            : /^[0-9]+$/g.test(word) ? "number"
 150            : "variable";
 151        }
 152        return style;
 153      },
 154      lineComment: "--"
 155    };
 156  });
 157  
 158  CodeMirror.defineMIME("text/x-eiffel", "eiffel");
 159  
 160  });


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer