在不处理代码的情况下扩展 Markdown 标签

Extending Markdown tags without processing the code

我正在使用 Hexo - 一个基于 nodeJS 的静态博客 CMS,我正在扩展 hexo API 以注册一个名为 tabblock 的新块标签,请参见此处:

hexo.extend.tag.register('tabblock', function (args, content) {
    var tabNumber = NumberOfTabs(content);
    var isTabbed = (tabNumber !== 0);
    console.log("Args: " + content);
    // Where my proper logic should go
    result = '<h1> TAG </h1>';
    return result;
  }, { ends: true });

这是我要解释的源代码片段:

{% tabblock %}
``` JavaScript
    console.log("Double Tap");
```
``` TypeScript
    console.log("Double Tap");
```
{% endtabblock %}

但是,应该处理该源的函数的 console.log 输出如下:

Args: <!--0--> <!--1-->

???我假设这是因为代码被解释为代码而不是内容?因此,如果我将 {% tabblock %} 包装在 {% raw %} 标签中,那么我根本不会得到任何输出,但是,如果我将原始标签放在 tabblock 中,那么我会得到以下输出:

Args: {% raw

如何获得我想要的内容?

\``` code ```\ 被 Hexo 解释为一个代码块,所以它输出了一个乱七八糟的东西。尝试只用 2 或 1 个背杆,它会起作用;像这样 \`` code ``\

我为 Hexo 创建了一个 tabbed-codeblock 标签,你应该看看我是怎么做的。如你所见,我用hexo标签包裹了代码,并使用这种结构来分隔代码块,以避免与源代码冲突。

<!-- tab [lang] -->
    code
<!-- endtab -->
<!-- tab [lang] -->
    code
<!-- endtab -->
  • Gist : 选项卡式代码块标签的源代码 + 用于在浏览器中为组件设置动画的 JS 代码
  • : 因为我为这个问题创建了这个标签 :p 阅读它,我解释了整个过程 :)
  • JSFiddle demo