2010-12-18 38 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準備就緒之後,您可能不會很難推出自己執行的腳本,找到代碼塊,並根據您設計的幾個啓發式爲您選擇的語法高亮顯示插入適當的屬性爲他們的內容,但如果有一個圖書館已經這樣做,顯然這有一些優勢。 :)