StackOverflow最受欢迎的功能是它可以自动检测帖子中的代码并为代码设置合适的颜色。
我想知道颜色是如何设置的。当我在页面上执行 Ctrl + F5 时,代码似乎首先是黑色文本,然后变为丰富多彩。它是由jQuery完成的吗?
答案 0 :(得分:20)
阿特伍德:确实如此。好吧,这就是来自,这是一个谷歌工程师的项目,我想,写了 - 它被称为“Prettify”。它有点有趣,因为它实际上推断了所有语法突出显示,听起来它不可能工作 - 如果你想一想,它听起来实际上是疯了。但它实际上是有效的。现在,他只支持它,某些方言并没有真正适用它,但对于所有方言,你会在谷歌找到。我认为它来自谷歌的谷歌代码。这是实际的代码,它是Google Code上的实际JavaScript,突出显示当您在Google Code上托管项目时返回的代码。你和你,嗯,因为我认为他们使用Subversion所以你可以实际点击...
Spolsky:他们怎么知道,他们怎么知道你在写什么语言?因此,评论是什么和......
阿特伍德:我不知道。这很疯狂。这是prettify.js,所以如果有人有兴趣看这个,只需在网上搜索“prettify.js”,你就会找到它。
在这里你可以找到prettify.js:http://code.google.com/p/google-code-prettify/
答案 1 :(得分:11)
回复..
Spolsky:他们怎么知道,他们怎么知道你在写什么语言?
没有。荧光笔是非常愚蠢的,但由于大多数编程语言都非常相似,因此设法摆脱它。几乎所有东西都使用语法足够接近..
AFunction("a string")
1 + 4 # <- numbers
# /\ a comment
// also a comment..
..大多数东西都突出了。以上不是一种实用的编程语言,但它完美地突出了。
有一些例外,例如,它有时可以将/
视为正则表达式的开头(如Perl / Ruby)。当它不是:
this [^\s>/] # is highlighted as a regex, not a comment
..但这些相当罕见,而且它能很好地解决大部分问题,比如..
/*
this is a multi-line comment
"with a string" =~ /and a regex/
*/
but =~ /this is a regex with a [/*] multiline comment
markers in it! */
答案 2 :(得分:3)
正如dbr所说,它是大多数常见语言结构的虚拟亮点。哪些不适用于一些奇特的语法。我想知道我们是否可以在没有突出显示的情况下执行代码段,BTW。
For id = 1 To 10 Do
CallSomething() // It likes CamelCase identifiers...
End
for id = 1 to 10 do # Also highlight some common keywords...
if id % 2 then call_something(); x++; end
end
'str' "str" 12 + 15.6 * -7e+9 /* Some common constant forms */
=/regex/ ~/regex/ +/RE/ !/regexpr/ but not /[^regex]/ (no operator before it)
(* Some comment conventions are overlooked... *)
-- Lua's (and some other languages')
; So are these comments...
' And these (Basic)
可以很好地使公共代码产生错觉,并且比在浏览器中加载十几种语法更好。