2008-10-25 20 views
13

Tính năng ưa thích nhất của StackOverflow đối với tôi là nó có thể tự động phát hiện mã trong bài và thiết lập màu thích hợp cho mã.Cách mã màu được đặt trong StackOverflow?

Tôi tự hỏi cách đặt màu. Khi tôi thực hiện Ctrl + F5 trên một trang, mã có vẻ đầu tiên là văn bản màu đen, sau đó thay đổi thành màu. Nó được thực hiện bởi jQuery?

Trả lời

11

Trong trả lời ..

Spolsky: Làm thế nào để họ biết, làm thế nào để họ thậm chí không biết những gì ngôn ngữ mà bạn đang viết trong?

Không. Các highlighter là rất câm, nhưng quản lý để được đi với nó bởi vì hầu hết các ngôn ngữ lập trình rất giống nhau. Gần như mọi thứ đều sử dụng cú pháp gần đủ để ..

AFunction("a string") 
1 + 4 # <- numbers 
     #  /\ a comment 
     // also a comment.. 

.. hầu hết mọi thứ đều nổi bật chính xác. Ở trên không phải là một ngôn ngữ lập trình actuall, nhưng nó nổi bật hoàn hảo.

Có những ngoại lệ, ví dụ, đôi khi có thể coi một số / là khởi đầu của một regex (như trong Perl/Ruby). khi nó không phải là:

this [^\s>/] # is highlighted as a regex, not a comment 

..nhưng đó là khá hiếm, và nó làm một công việc tốt làm việc ra thứ nhất, giống như ..

/* 
this is a multi-line comment 
"with a string" =~ /and a regex/ 
*/ 
but =~ /this is a regex with a [/*] multiline comment 
markers in it! */ 
20

Từ Stack Overflow Podcast #11:

Atwood: Đó là. Được rồi, từ đó, đó là một dự án mà một số kỹ sư của Google, tôi nghĩ, đã viết nó - nó được gọi là "Prettify". Và có một chút thú vị ở chỗ nó thực sự gây ra tất cả cú pháp tô sáng, có vẻ như nó không thể hoạt động được - âm thanh thực sự điên rồ, nếu bạn nghĩ về nó. Nhưng nó thực sự là loại công trình. Bây giờ, anh ta chỉ hỗ trợ nó cho, có một số phương ngữ mà không thực sự làm việc tốt với nó, nhưng đối với tất cả các phương ngữ mà loại, bạn sẽ tìm thấy trên Google. Tôi nghĩ nó đến từ Google Code của Google. Đó là mã thực tế, đó là mã JavaScript thực tế trên Google Code làm nổi bật rằng mã quay lại khi bạn đang lưu trữ các dự án trên Google Code. Và bạn, và bạn, um, vì tôi nghĩ rằng họ sử dụng Subversion để bạn có thể thực sự nhấp qua ...

Spolsky: Làm thế nào để họ biết, làm thế nào để họ biết bạn đang viết ngôn ngữ nào? Và do đó, nhận xét là gì và ...

Atwood: Tôi không biết. Thật là điên rồ. Đó là prettify.js, vì vậy nếu ai đó quan tâm đến việc xem xét điều này, chỉ cần thực hiện tìm kiếm trên web cho "prettify.js" và bạn sẽ tìm thấy nó.

Và đây là nơi bạn có thể tìm prettify.js: http://code.google.com/p/google-code-prettify/

+0

Công cụ "Làm đẹp" này khá tuyệt! –

3

Như đã nói bởi DBR, nó hoạt động điểm nhấn giả của các cấu trúc ngôn ngữ phổ biến nhất. Mà không làm việc tốt với một số cú pháp kỳ lạ. Tôi tự hỏi nếu chúng ta có thể làm phần mã mà không làm nổi bật, 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) 

Hoạt động đủ tốt để mã thông thường tạo ảo giác và tốt hơn tải hàng chục cú pháp trong trình duyệt.

+0

Các phần mã không làm nổi bật? Chắc chắn rồi. Chỉ cần bao gồm các khối văn bản bình thường, không bị chặn trong các thẻ PRE, giống như HTML thuần túy. –

Các vấn đề liên quan