[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/yaml-frontmatter/ -> yaml-frontmatter.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"), require("../yaml/yaml"))
   7    else if (typeof define == "function" && define.amd) // AMD
   8      define(["../../lib/codemirror", "../yaml/yaml"], mod)
   9    else // Plain browser env
  10      mod(CodeMirror)
  11  })(function (CodeMirror) {
  12  
  13    var START = 0, FRONTMATTER = 1, BODY = 2
  14  
  15    // a mixed mode for Markdown text with an optional YAML front matter
  16    CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) {
  17      var yamlMode = CodeMirror.getMode(config, "yaml")
  18      var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm")
  19  
  20      function localMode(state) {
  21        return state.state == FRONTMATTER ? {mode: yamlMode, state: state.yaml} : {mode: innerMode, state: state.inner}
  22      }
  23  
  24      return {
  25        startState: function () {
  26          return {
  27            state: START,
  28            yaml: null,
  29            inner: CodeMirror.startState(innerMode)
  30          }
  31        },
  32        copyState: function (state) {
  33          return {
  34            state: state.state,
  35            yaml: state.yaml && CodeMirror.copyState(yamlMode, state.yaml),
  36            inner: CodeMirror.copyState(innerMode, state.inner)
  37          }
  38        },
  39        token: function (stream, state) {
  40          if (state.state == START) {
  41            if (stream.match('---', false)) {
  42              state.state = FRONTMATTER
  43              state.yaml = CodeMirror.startState(yamlMode)
  44              return yamlMode.token(stream, state.yaml)
  45            } else {
  46              state.state = BODY
  47              return innerMode.token(stream, state.inner)
  48            }
  49          } else if (state.state == FRONTMATTER) {
  50            var end = stream.sol() && stream.match(/(---|\.\.\.)/, false)
  51            var style = yamlMode.token(stream, state.yaml)
  52            if (end) {
  53              state.state = BODY
  54              state.yaml = null
  55            }
  56            return style
  57          } else {
  58            return innerMode.token(stream, state.inner)
  59          }
  60        },
  61        innerMode: localMode,
  62        indent: function(state, a, b) {
  63          var m = localMode(state)
  64          return m.mode.indent ? m.mode.indent(m.state, a, b) : CodeMirror.Pass
  65        },
  66        blankLine: function (state) {
  67          var m = localMode(state)
  68          if (m.mode.blankLine) return m.mode.blankLine(m.state)
  69        }
  70      }
  71    })
  72  });


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