[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/mllike/ -> mllike.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('mllike', function(_config, parserConfig) {
  15    var words = {
  16      'as': 'keyword',
  17      'do': 'keyword',
  18      'else': 'keyword',
  19      'end': 'keyword',
  20      'exception': 'keyword',
  21      'fun': 'keyword',
  22      'functor': 'keyword',
  23      'if': 'keyword',
  24      'in': 'keyword',
  25      'include': 'keyword',
  26      'let': 'keyword',
  27      'of': 'keyword',
  28      'open': 'keyword',
  29      'rec': 'keyword',
  30      'struct': 'keyword',
  31      'then': 'keyword',
  32      'type': 'keyword',
  33      'val': 'keyword',
  34      'while': 'keyword',
  35      'with': 'keyword'
  36    };
  37  
  38    var extraWords = parserConfig.extraWords || {};
  39    for (var prop in extraWords) {
  40      if (extraWords.hasOwnProperty(prop)) {
  41        words[prop] = parserConfig.extraWords[prop];
  42      }
  43    }
  44    var hintWords = [];
  45    for (var k in words) { hintWords.push(k); }
  46    CodeMirror.registerHelper("hintWords", "mllike", hintWords);
  47  
  48    function tokenBase(stream, state) {
  49      var ch = stream.next();
  50  
  51      if (ch === '"') {
  52        state.tokenize = tokenString;
  53        return state.tokenize(stream, state);
  54      }
  55      if (ch === '{') {
  56        if (stream.eat('|')) {
  57          state.longString = true;
  58          state.tokenize = tokenLongString;
  59          return state.tokenize(stream, state);
  60        }
  61      }
  62      if (ch === '(') {
  63        if (stream.match(/^\*(?!\))/)) {
  64          state.commentLevel++;
  65          state.tokenize = tokenComment;
  66          return state.tokenize(stream, state);
  67        }
  68      }
  69      if (ch === '~' || ch === '?') {
  70        stream.eatWhile(/\w/);
  71        return 'variable-2';
  72      }
  73      if (ch === '`') {
  74        stream.eatWhile(/\w/);
  75        return 'quote';
  76      }
  77      if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {
  78        stream.skipToEnd();
  79        return 'comment';
  80      }
  81      if (/\d/.test(ch)) {
  82        if (ch === '0' && stream.eat(/[bB]/)) {
  83          stream.eatWhile(/[01]/);
  84        } if (ch === '0' && stream.eat(/[xX]/)) {
  85          stream.eatWhile(/[0-9a-fA-F]/)
  86        } if (ch === '0' && stream.eat(/[oO]/)) {
  87          stream.eatWhile(/[0-7]/);
  88        } else {
  89          stream.eatWhile(/[\d_]/);
  90          if (stream.eat('.')) {
  91            stream.eatWhile(/[\d]/);
  92          }
  93          if (stream.eat(/[eE]/)) {
  94            stream.eatWhile(/[\d\-+]/);
  95          }
  96        }
  97        return 'number';
  98      }
  99      if ( /[+\-*&%=<>!?|@\.~:]/.test(ch)) {
 100        return 'operator';
 101      }
 102      if (/[\w\xa1-\uffff]/.test(ch)) {
 103        stream.eatWhile(/[\w\xa1-\uffff]/);
 104        var cur = stream.current();
 105        return words.hasOwnProperty(cur) ? words[cur] : 'variable';
 106      }
 107      return null
 108    }
 109  
 110    function tokenString(stream, state) {
 111      var next, end = false, escaped = false;
 112      while ((next = stream.next()) != null) {
 113        if (next === '"' && !escaped) {
 114          end = true;
 115          break;
 116        }
 117        escaped = !escaped && next === '\\';
 118      }
 119      if (end && !escaped) {
 120        state.tokenize = tokenBase;
 121      }
 122      return 'string';
 123    };
 124  
 125    function tokenComment(stream, state) {
 126      var prev, next;
 127      while(state.commentLevel > 0 && (next = stream.next()) != null) {
 128        if (prev === '(' && next === '*') state.commentLevel++;
 129        if (prev === '*' && next === ')') state.commentLevel--;
 130        prev = next;
 131      }
 132      if (state.commentLevel <= 0) {
 133        state.tokenize = tokenBase;
 134      }
 135      return 'comment';
 136    }
 137  
 138    function tokenLongString(stream, state) {
 139      var prev, next;
 140      while (state.longString && (next = stream.next()) != null) {
 141        if (prev === '|' && next === '}') state.longString = false;
 142        prev = next;
 143      }
 144      if (!state.longString) {
 145        state.tokenize = tokenBase;
 146      }
 147      return 'string';
 148    }
 149  
 150    return {
 151      startState: function() {return {tokenize: tokenBase, commentLevel: 0, longString: false};},
 152      token: function(stream, state) {
 153        if (stream.eatSpace()) return null;
 154        return state.tokenize(stream, state);
 155      },
 156  
 157      blockCommentStart: "(*",
 158      blockCommentEnd: "*)",
 159      lineComment: parserConfig.slashComments ? "//" : null
 160    };
 161  });
 162  
 163  CodeMirror.defineMIME('text/x-ocaml', {
 164    name: 'mllike',
 165    extraWords: {
 166      'and': 'keyword',
 167      'assert': 'keyword',
 168      'begin': 'keyword',
 169      'class': 'keyword',
 170      'constraint': 'keyword',
 171      'done': 'keyword',
 172      'downto': 'keyword',
 173      'external': 'keyword',
 174      'function': 'keyword',
 175      'initializer': 'keyword',
 176      'lazy': 'keyword',
 177      'match': 'keyword',
 178      'method': 'keyword',
 179      'module': 'keyword',
 180      'mutable': 'keyword',
 181      'new': 'keyword',
 182      'nonrec': 'keyword',
 183      'object': 'keyword',
 184      'private': 'keyword',
 185      'sig': 'keyword',
 186      'to': 'keyword',
 187      'try': 'keyword',
 188      'value': 'keyword',
 189      'virtual': 'keyword',
 190      'when': 'keyword',
 191  
 192      // builtins
 193      'raise': 'builtin',
 194      'failwith': 'builtin',
 195      'true': 'builtin',
 196      'false': 'builtin',
 197  
 198      // Pervasives builtins
 199      'asr': 'builtin',
 200      'land': 'builtin',
 201      'lor': 'builtin',
 202      'lsl': 'builtin',
 203      'lsr': 'builtin',
 204      'lxor': 'builtin',
 205      'mod': 'builtin',
 206      'or': 'builtin',
 207  
 208      // More Pervasives
 209      'raise_notrace': 'builtin',
 210      'trace': 'builtin',
 211      'exit': 'builtin',
 212      'print_string': 'builtin',
 213      'print_endline': 'builtin',
 214  
 215       'int': 'type',
 216       'float': 'type',
 217       'bool': 'type',
 218       'char': 'type',
 219       'string': 'type',
 220       'unit': 'type',
 221  
 222       // Modules
 223       'List': 'builtin'
 224    }
 225  });
 226  
 227  CodeMirror.defineMIME('text/x-fsharp', {
 228    name: 'mllike',
 229    extraWords: {
 230      'abstract': 'keyword',
 231      'assert': 'keyword',
 232      'base': 'keyword',
 233      'begin': 'keyword',
 234      'class': 'keyword',
 235      'default': 'keyword',
 236      'delegate': 'keyword',
 237      'do!': 'keyword',
 238      'done': 'keyword',
 239      'downcast': 'keyword',
 240      'downto': 'keyword',
 241      'elif': 'keyword',
 242      'extern': 'keyword',
 243      'finally': 'keyword',
 244      'for': 'keyword',
 245      'function': 'keyword',
 246      'global': 'keyword',
 247      'inherit': 'keyword',
 248      'inline': 'keyword',
 249      'interface': 'keyword',
 250      'internal': 'keyword',
 251      'lazy': 'keyword',
 252      'let!': 'keyword',
 253      'match': 'keyword',
 254      'member': 'keyword',
 255      'module': 'keyword',
 256      'mutable': 'keyword',
 257      'namespace': 'keyword',
 258      'new': 'keyword',
 259      'null': 'keyword',
 260      'override': 'keyword',
 261      'private': 'keyword',
 262      'public': 'keyword',
 263      'return!': 'keyword',
 264      'return': 'keyword',
 265      'select': 'keyword',
 266      'static': 'keyword',
 267      'to': 'keyword',
 268      'try': 'keyword',
 269      'upcast': 'keyword',
 270      'use!': 'keyword',
 271      'use': 'keyword',
 272      'void': 'keyword',
 273      'when': 'keyword',
 274      'yield!': 'keyword',
 275      'yield': 'keyword',
 276  
 277      // Reserved words
 278      'atomic': 'keyword',
 279      'break': 'keyword',
 280      'checked': 'keyword',
 281      'component': 'keyword',
 282      'const': 'keyword',
 283      'constraint': 'keyword',
 284      'constructor': 'keyword',
 285      'continue': 'keyword',
 286      'eager': 'keyword',
 287      'event': 'keyword',
 288      'external': 'keyword',
 289      'fixed': 'keyword',
 290      'method': 'keyword',
 291      'mixin': 'keyword',
 292      'object': 'keyword',
 293      'parallel': 'keyword',
 294      'process': 'keyword',
 295      'protected': 'keyword',
 296      'pure': 'keyword',
 297      'sealed': 'keyword',
 298      'tailcall': 'keyword',
 299      'trait': 'keyword',
 300      'virtual': 'keyword',
 301      'volatile': 'keyword',
 302  
 303      // builtins
 304      'List': 'builtin',
 305      'Seq': 'builtin',
 306      'Map': 'builtin',
 307      'Set': 'builtin',
 308      'Option': 'builtin',
 309      'int': 'builtin',
 310      'string': 'builtin',
 311      'not': 'builtin',
 312      'true': 'builtin',
 313      'false': 'builtin',
 314  
 315      'raise': 'builtin',
 316      'failwith': 'builtin'
 317    },
 318    slashComments: true
 319  });
 320  
 321  
 322  CodeMirror.defineMIME('text/x-sml', {
 323    name: 'mllike',
 324    extraWords: {
 325      'abstype': 'keyword',
 326      'and': 'keyword',
 327      'andalso': 'keyword',
 328      'case': 'keyword',
 329      'datatype': 'keyword',
 330      'fn': 'keyword',
 331      'handle': 'keyword',
 332      'infix': 'keyword',
 333      'infixr': 'keyword',
 334      'local': 'keyword',
 335      'nonfix': 'keyword',
 336      'op': 'keyword',
 337      'orelse': 'keyword',
 338      'raise': 'keyword',
 339      'withtype': 'keyword',
 340      'eqtype': 'keyword',
 341      'sharing': 'keyword',
 342      'sig': 'keyword',
 343      'signature': 'keyword',
 344      'structure': 'keyword',
 345      'where': 'keyword',
 346      'true': 'keyword',
 347      'false': 'keyword',
 348  
 349      // types
 350      'int': 'builtin',
 351      'real': 'builtin',
 352      'string': 'builtin',
 353      'char': 'builtin',
 354      'bool': 'builtin'
 355    },
 356    slashComments: true
 357  });
 358  
 359  });


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