首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript中的Markdown语法突出显示

Javascript中的Markdown语法突出显示
EN

Stack Overflow用户
提问于 2013-02-18 05:57:45
回答 4查看 5.4K关注 0票数 4

我正在尝试让rainbow语法高亮显示库与marked标记渲染引擎一起工作。marked文档指出,通过以下配置选项支持语法高亮显示:

代码语言:javascript
复制
marked.setOptions({
  highlight: function(code, lang) {
    return highlighter.javascript(code);
  }
});

rainbow source code指示通过以下语法支持传入要突出显示的字符串:

代码语言:javascript
复制
Rainbow.color(code, lang, success);

我有点不知所措,不知道如何把两者放在一起。具体地说,success是一个将被异步调用的回调,我不能简单地从highlight回调中的Rainbow.color代码返回值。如何做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-28 10:34:04

marked here的作者。我之前在问题跟踪器上解决了这个问题:https://github.com/chjj/marked/issues/47

使用带有标记的异步高亮笔的可能性更大。您只需迭代lexer输出的标记即可。

示例:https://github.com/chjj/marked/issues/47#issuecomment-5297067 (请记住,这只是一个示例。您必须对其进行一些修改。)

我可能只是使用上面链接中的方法在本地实现这一点。这将对使用异步荧光笔的人的性能造成影响,但如果你需要一个异步高亮笔,这意味着高亮笔正在做某种IO,而你已经受到了性能的影响。

票数 7
EN

Stack Overflow用户

发布于 2013-02-26 08:05:05

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

代码语言:javascript
复制
marked.setOptions({
  highlight: function(code) {
    return hljs.highlightAuto(code).value;
  }
});

Here's a working JsFiddle example.

票数 3
EN

Stack Overflow用户

发布于 2013-02-18 06:24:50

不幸的是,没有办法解决这个问题。

marked似乎需要一个同步语法加亮器,而rainbow是一个异步语法加亮器。

在Javascript中,没有办法将后者转换为前者。

例如,这就是为什么在node.js中许多库函数都有同步和异步版本的原因。在Javascript中,没有办法在只给定异步循环的情况下构建同步循环,因为您不能创建“嵌套事件循环”(在某些情况下,相反的转换可以使用web workers来完成)。

可能将同步版本添加到rainbow并不困难(例如,通过预先提供它可能异步加载的外部资源)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14926564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档