为 CodeMirror 创建新模式

2023-12-29

我只想突出显示如下所示的关键字:{KEYWORD}(基本上大写单词包裹在单个{}括号)

我通过复制代码来尝试这个小胡子覆盖演示 http://codemirror.net/demo/mustache.html,并将双括号替换为单括号:

CodeMirror.defineMode('mymode', function(config, parserConfig) {
  var mymodeOverlay = {
    token: function(stream, state) {
      if (stream.match("{")) {
        while ((ch = stream.next()) != null)
          if (ch == "}" && stream.next() == "}") break;
        return 'mymode';
      }
      while (stream.next() != null && !stream.match("{", false)) {}
      return null;
    }
  };
  return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mymodeOverlay);
});

但效果不是很好:)

有任何想法吗?


Mustache 示例中有特殊处理,因为它需要处理 2 个字符的分隔符(例如,中有两个字符'{{' and '}}')。我以前从未使用过 CodeMirror,所以这只是一个猜测,但请尝试这样的操作:

CodeMirror.defineMode("mymode", function(config, parserConfig) {
  var mymodeOverlay = {
    token: function(stream, state) {
      if (stream.match("{")) {
        while ((ch = stream.next()) != null)
          if (ch == "}") break;
        return "mymode";
      }
      while (stream.next() != null && !stream.match("{", false)) {}
      return null;
    }
  };
  return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mymodeOverlay);
});

Edit

它有效(尽管它也突出显示带有小写字母的单词)

This should work:

token: function(stream, state) {
  if (stream.match("{")) {
    while ((ch = stream.next()) != null && ch === ch.toUpperCase())
      if (ch == "}") break;
    return "mymode";
  }
  while (stream.next() != null && !stream.match("{", false)) {}
  return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 CodeMirror 创建新模式 的相关文章

随机推荐

  • 从 readr::read_csv 中读取的数据中删除属性

    readr read csv添加编辑数据时不会更新的属性 例如 library tidyverse df lt read csv A B C na 1 x nb 1 y nc 1 z Remove columns with only one
  • LiveCharts WPF 中单独着色的数据点

    我正在使用 Live Charts WPF 来绘制一些图表 为了使每个栏具有不同的颜色 我添加了多个系列 但它没有显示x axis所有系列的标签 为什么 senderChart Series new SeriesCollection int
  • 如何在 Java 中将布尔数组转换为二进制数组,反之亦然?

    在 Java 中将布尔数组输出到文件 以及从文件输入 的最有效方法是什么 我打算使用一个字符串 每个字符要么是 t 要么是 f 然后我想 为什么不减少八倍的空间呢 NOTE 我实际上不知道哪个答案是更好的方法 我只是选择了彼得的 因为我理解
  • 使用 Clips 专家系统中的 Python 函数

    使用 PyClips 我尝试在 Clips 中构建规则 从 Python 解释器动态检索数据 为此 我注册了一个外部函数 如下所示手册 http pyclips sourceforge net manual pyclips overview
  • 在 Razor 视图中渲染 Telerik MVC Grid 时出现问题

    我在 内容 页面中有以下标记 如果没有 Render 调用 则不会呈现任何内容 而使用 Render 调用时 网格将呈现为整个页面中的第一个元素 而不是在我的视图定义的 内容 部分内 using Telerik Web Mvc UI mod
  • 从 BroadcastReceiver 调用活动方法。是否可以?

    我陷入了开发应用程序的困境 因为我需要在触发 BroadcastReceiver 时调用我的活动的方法 我希望 BroadcastReceiver 能够检测到网络连接何时断开并调用我已经编写的活动方法 我一直在搜索 发现以前有更多人问过这个
  • Android 作为 SIP 转 GSM 网关

    很快我就可以使用 SIP 转 GSM 网关 因为我需要从德国向捷克共和国的手机拨打电话 因此 我考虑实施一个 现在 问题是 这样的解决方案是否已经存在 价格合理 是否可以使用可用的 Android API SDK 或 NDK 将 语音 流重
  • itextsharp 使用签名哈希签名 pdf

    我正在尝试通过签名服务签署 pdf 此服务需要发送十六进制编码的 SHA256 摘要 作为回报 我收到十六进制编码的签名值 除此之外 我还收到签名证书 中间证书 OCSP 响应和 TimeStampToken 但是 我已经在尝试使用签名值对
  • 我可以在网站提供的页面中包含本地驱动器中的 CSS 样式表吗

    我的目标是拥有一个由网站提供的页面 其中包含样式表 该样式表不在该网站上可用 也不在其他网站上可用 而是在本地驱动器上可用 就像是 我最初的研究表明浏览器似乎不支持这一点 但我愿意被证明是错误的 或者发现一些偷偷摸摸的方法 上面的方法我都试
  • 在 Android 上将数据库备份到 SDCard

    我使用下面的代码将备份副本写入 SDCard 我得到 java io IOException Parent directory of file is not writable sdcard mydbfile db private class
  • Apache Olinge OData 服务:EdmSimpleTypeException

    当我尝试通过 OData 访问某些实体时 我收到了 EdmSimpleTypeExceptions 我正在使用 Apache Olingo 来执行此操作 问题是我无法实现除整数和字符串之外的任何类型 如果我使用 double 我会得到 Ed
  • 为接受接口的函数传递结构

    我有以下代码 package main type MyInterface interface Test type MyType struct func m MyType Test func AcceptInterface i MyInter
  • 使用 DbContext Set() 而不是在上下文上公开

    执行以下操作时是否存在任何差异 public class UsersContext DbContext public DbSet
  • 通用迭代器

    我正在尝试找到一种访问一组容器的通用方法 除了另一个自定义列表之外 我还有一个标准向量和列表 自定义列表定义了一个迭代器 class Iterator public std iterator
  • JPA完全动态和多级标准API

    我正在尝试了解如何创建一个 JPA Criteria 查询 该查询允许进行多个级别的完全动态过滤 例如 select from table where column1 A and column2 B or column3 C or colu
  • IN(以及 INS、INSB 等)指令可以在 x86 汇编中块吗?

    当尝试从 x86 特别是 Pentium 上的 I O 端口读取数据时 IN 系列指令在等待数据时是否会阻塞 还是总是立即返回 据我所知 x86 系列处理器上只有一条 阻塞 指令 HLT IN 和 OUT 及其变体 只不过是对内存的读 写访
  • 基于java脚本中嵌套对象数组中的键对列表进行排序的最佳方法

    我有以下内容 var list item a 5 a1 6 a2 7 b 3 b1 4 b2 2 item a 1 a1 2 a2 3 b 4 b1 5 b2 6 item a 2 a1 7 a2 4 b 3 b1 7 b2 1 假设我有变
  • 在 bash 中用其内容替换“源文件”并扩展变量

    在 script sh 中 source a sh source b sh CMD1 CMD2 CMD3 我怎样才能更换source sh及其内容 不执行命令 我想看看 bash 解释器在获取文件并扩展所有变量后执行什么 我知道我可以使用s
  • Akka Http 客户端:自定义标头

    我正在尝试使用 Akka Http 来调用 REST url 我正在关注this http doc akka io docs akka 2 4 10 scala http client side request level html Usi
  • 为 CodeMirror 创建新模式

    我只想突出显示如下所示的关键字 KEYWORD 基本上大写单词包裹在单个 括号 我通过复制代码来尝试这个小胡子覆盖演示 http codemirror net demo mustache html 并将双括号替换为单括号 CodeMirro