在Javascript中突出显示Markdown语法

use*_*029 4 javascript markdown syntax-highlighting callback

我试图让彩虹语法高亮库与标记的降价渲染引擎一起工作.该marked文档指出通过以下配置选项支持语法高亮显示:

marked.setOptions({
  highlight: function(code, lang) {
    return highlighter.javascript(code);
  }
});
Run Code Online (Sandbox Code Playgroud)

rainbow 源代码表示传入的字符串以突出显示通过下面的语法被支撑:

Rainbow.color(code, lang, success);
Run Code Online (Sandbox Code Playgroud)

关于如何把两者放在一起,我有点不知所措.具体来说,success是一个异步调用的回调,我不能简单地从回调Rainbow.color内的代码返回值highlight.这将如何实现?

chj*_*hjj 7

作者标记在这里.我刚才在问题跟踪器上解决了这个问题:https://github.com/chjj/marked/issues/47

使用标记的异步荧光笔是可能的.你只需要迭代lexer吐出的标记.

示例:https://github.com/chjj/marked/issues/47#issuecomment-5297067(请记住这是一个示例.您必须稍微修改它.)

我可能只是使用上面链接中的方法标记实现它.对于使用异步荧光笔的人来说,它会受到性能影响,但是如果你需要一个异步荧光笔,这意味着荧光笔正在做某种IO而你已经受到了性能损失.


Dai*_*aiz 5

您可以尝试使用另一个突出显示库,例如highlight.js - 它具有同步突出显示方法(hljs.highlight(lang, code).valuehljs.highlightAuto(code).value),您可以在浏览器中使用它们,如下所示:

marked.setOptions({
  highlight: function(code) {
    return hljs.highlightAuto(code).value;
  }
});
Run Code Online (Sandbox Code Playgroud)

这是一个有效的 JsFiddle 示例。