2010-12-18 471 views
4

我已经看过几个Javascript程序来为页面上的代码块添加语法高亮显示,但是他们所有我发现的代码都需要在代码块上设置属性来告诉它正在使用什么语言。我使用Markdown生成HTML,所以我没有办法设置这些属性,有没有可以自动执行此操作并且不需要设置属性?使用Markdown很好地使用的Javascript语法荧光笔

我能想到这个工作的唯一方法就是用一根shebang线;

#!/usr/bin/ruby 
def foo(bar) 
    bar 
end 

它会知道它的红宝石,甚至可能不显示家当线(具有一个或两个线片段的家当会得到累人)。

我不会需要它做任何非常晦涩的语言,但如果我可以轻松地编写新的定义,那将是非常好的。

感谢。

回答

6

Google Prettifier应该完成这项工作。 StackOverflow也使用它(使用Markdown生成的标记)。它自动确定语言。

+0

我想知道什么SO使用,但我没有注意到我的短代码示例没有得到语法突出显示。我假设这样一个短代码样本不足以唯一确定语言。 – 2010-12-18 19:05:40

+0

@Jeffrey Aylesworth:有趣。起初我没有注意到。是的,可能这段代码太短。 – jwueller 2010-12-18 19:14:08

2

这是我的理解是,Markdown spec允许实际标记的存在作为备用:

对于未覆盖 降价的语法任何标记,只需使用HTML 本身。没有必要在前言 或划定它,以表明你是从从Markdown切换到HTML;你只需使用标签即可。

唯一的限制是 块级HTML元素 - 例如, <DIV>,<表>,<预>,<p>等 - 必须从周围 内容由空行分离,并且该块的开始 和结束标记不应 使用标签来缩进或空间。

所以,如果你已经有了一个语法高亮显示你真的喜欢不自动检测,你可以简单地抛出一个字面<code>块与适当的属性到你降价。我认为这不是特别违反Markdown的目标,这是一个相当直接和可读的指标。

在DOM准备就绪之后,您可能不会很难推出自己执行的脚本,找到代码块,并根据您设计的几个启发式为您选择的语法高亮显示插入适当的属性为他们的内容,但如果有一个图书馆已经这样做,显然这有一些优势。 :)