如何在StackOverflow中设置代码颜色?

Mor*_*eng 13 javascript syntax-highlighting

StackOverflow最受欢迎的功能是它可以自动检测post中的代码并为代码设置合适的颜色.

我想知道颜色是如何设置的.当我在页面上执行Ctrl+ F5时,代码似乎首先是黑色文本,然后变为丰富多彩.它是由jQuery完成的吗?

Jer*_*ten 20

来自Stack Overflow Podcast#11:

阿特伍德:是的.好吧,这就是来自,这是一个谷歌工程师的项目,我想,写了 - 它被称为"Prettify".它有点有趣,因为它实际上推断了所有语法突出显示,听起来它不可能工作 - 如果你想一想,它听起来实际上是疯了.但它实际上是有效的.现在,他只支持它,某些方言并没有真正适用它,但对于所有方言,你会在谷歌找到.我认为它来自谷歌的谷歌代码.这是实际的代码,它是Google Code上的实际JavaScript,突出显示当您在Google Code上托管项目时返回的代码.而你,还有你,嗯,'

Spolsky:他们怎么知道,他们怎么知道你在写什么语言?因此,评论是什么,......

阿特伍德:我不知道.这很疯狂.这是prettify.js,所以如果有人有兴趣看这个,只需要搜索"prettify.js",你就会找到它.

在这里您可以找到prettify.js:http://code.google.com/p/google-code-prettify/


dbr*_*dbr 11

回复..

Spolsky:他们怎么知道,他们怎么知道你在写什么语言?

它没有.荧光笔是非常愚蠢的,但由于大多数编程语言都非常相似,因此设法摆脱它.几乎所有东西都使用语法足够接近..

AFunction("a string")
1 + 4 # <- numbers
      #     /\ a comment
      // also a comment..
Run Code Online (Sandbox Code Playgroud)

..大多数东西突出正确.以上不是一种实用的编程语言,但它完美地突出了.

例如,有一些例外,它有时可以将a /视为正则表达式的开头(如Perl/Ruby).当它不是:

this [^\s>/] # is highlighted as a regex, not a comment
Run Code Online (Sandbox Code Playgroud)

..但这些是相当罕见的,并且它能很好地解决大多数问题,比如..

/*
this is a multi-line comment
"with a string" =~ /and a regex/
*/
but =~ /this is a regex with a [/*] multiline comment
markers in it! */
Run Code Online (Sandbox Code Playgroud)