[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/spreadsheet/ -> spreadsheet.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("spreadsheet", function () {
  15      return {
  16        startState: function () {
  17          return {
  18            stringType: null,
  19            stack: []
  20          };
  21        },
  22        token: function (stream, state) {
  23          if (!stream) return;
  24  
  25          //check for state changes
  26          if (state.stack.length === 0) {
  27            //strings
  28            if ((stream.peek() == '"') || (stream.peek() == "'")) {
  29              state.stringType = stream.peek();
  30              stream.next(); // Skip quote
  31              state.stack.unshift("string");
  32            }
  33          }
  34  
  35          //return state
  36          //stack has
  37          switch (state.stack[0]) {
  38          case "string":
  39            while (state.stack[0] === "string" && !stream.eol()) {
  40              if (stream.peek() === state.stringType) {
  41                stream.next(); // Skip quote
  42                state.stack.shift(); // Clear flag
  43              } else if (stream.peek() === "\\") {
  44                stream.next();
  45                stream.next();
  46              } else {
  47                stream.match(/^.[^\\\"\']*/);
  48              }
  49            }
  50            return "string";
  51  
  52          case "characterClass":
  53            while (state.stack[0] === "characterClass" && !stream.eol()) {
  54              if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./)))
  55                state.stack.shift();
  56            }
  57            return "operator";
  58          }
  59  
  60          var peek = stream.peek();
  61  
  62          //no stack
  63          switch (peek) {
  64          case "[":
  65            stream.next();
  66            state.stack.unshift("characterClass");
  67            return "bracket";
  68          case ":":
  69            stream.next();
  70            return "operator";
  71          case "\\":
  72            if (stream.match(/\\[a-z]+/)) return "string-2";
  73            else {
  74              stream.next();
  75              return "atom";
  76            }
  77          case ".":
  78          case ",":
  79          case ";":
  80          case "*":
  81          case "-":
  82          case "+":
  83          case "^":
  84          case "<":
  85          case "/":
  86          case "=":
  87            stream.next();
  88            return "atom";
  89          case "$":
  90            stream.next();
  91            return "builtin";
  92          }
  93  
  94          if (stream.match(/\d+/)) {
  95            if (stream.match(/^\w+/)) return "error";
  96            return "number";
  97          } else if (stream.match(/^[a-zA-Z_]\w*/)) {
  98            if (stream.match(/(?=[\(.])/, false)) return "keyword";
  99            return "variable-2";
 100          } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) {
 101            stream.next();
 102            return "bracket";
 103          } else if (!stream.eatSpace()) {
 104            stream.next();
 105          }
 106          return null;
 107        }
 108      };
 109    });
 110  
 111    CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet");
 112  });


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