[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/yaml/ -> yaml.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("yaml", function() {
  15  
  16    var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
  17    var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');
  18  
  19    return {
  20      token: function(stream, state) {
  21        var ch = stream.peek();
  22        var esc = state.escaped;
  23        state.escaped = false;
  24        /* comments */
  25        if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) {
  26          stream.skipToEnd();
  27          return "comment";
  28        }
  29  
  30        if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))
  31          return "string";
  32  
  33        if (state.literal && stream.indentation() > state.keyCol) {
  34          stream.skipToEnd(); return "string";
  35        } else if (state.literal) { state.literal = false; }
  36        if (stream.sol()) {
  37          state.keyCol = 0;
  38          state.pair = false;
  39          state.pairStart = false;
  40          /* document start */
  41          if(stream.match('---')) { return "def"; }
  42          /* document end */
  43          if (stream.match('...')) { return "def"; }
  44          /* array list item */
  45          if (stream.match(/\s*-\s+/)) { return 'meta'; }
  46        }
  47        /* inline pairs/lists */
  48        if (stream.match(/^(\{|\}|\[|\])/)) {
  49          if (ch == '{')
  50            state.inlinePairs++;
  51          else if (ch == '}')
  52            state.inlinePairs--;
  53          else if (ch == '[')
  54            state.inlineList++;
  55          else
  56            state.inlineList--;
  57          return 'meta';
  58        }
  59  
  60        /* list separator */
  61        if (state.inlineList > 0 && !esc && ch == ',') {
  62          stream.next();
  63          return 'meta';
  64        }
  65        /* pairs separator */
  66        if (state.inlinePairs > 0 && !esc && ch == ',') {
  67          state.keyCol = 0;
  68          state.pair = false;
  69          state.pairStart = false;
  70          stream.next();
  71          return 'meta';
  72        }
  73  
  74        /* start of value of a pair */
  75        if (state.pairStart) {
  76          /* block literals */
  77          if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
  78          /* references */
  79          if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
  80          /* numbers */
  81          if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
  82          if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
  83          /* keywords */
  84          if (stream.match(keywordRegex)) { return 'keyword'; }
  85        }
  86  
  87        /* pairs (associative arrays) -> key */
  88        if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) {
  89          state.pair = true;
  90          state.keyCol = stream.indentation();
  91          return "atom";
  92        }
  93        if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
  94  
  95        /* nothing found, continue */
  96        state.pairStart = false;
  97        state.escaped = (ch == '\\');
  98        stream.next();
  99        return null;
 100      },
 101      startState: function() {
 102        return {
 103          pair: false,
 104          pairStart: false,
 105          keyCol: 0,
 106          inlinePairs: 0,
 107          inlineList: 0,
 108          literal: false,
 109          escaped: false
 110        };
 111      },
 112      lineComment: "#",
 113      fold: "indent"
 114    };
 115  });
 116  
 117  CodeMirror.defineMIME("text/x-yaml", "yaml");
 118  CodeMirror.defineMIME("text/yaml", "yaml");
 119  
 120  });


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