10/21/2006

Syntax Highlight 套件

我在這個 Blog 寫的程式碼都是用 nopaste 這個網站幫我轉的,他會自動幫我 Syntax Highlight,實在很方便,不過我最近發現到 JAVAEye 有一個很棒的功能,當你在論壇發表文章,文章裡面放上程式碼的時候,如果你用 [code] [/code] 將他包起來。他會自動幫你作 Syntax Highlight。大家都知道 JavaEye是 Ruby on Rails 作的,那他是怎麼做到的呢?我發現到也有人跟我有一樣的問題,有人的回答是『有一个叫Syntax的lib』。我上網找到 syntax 的官方網站,並且測試一下,發現到他的 Syntax Highlight 是CSS class 包起來的
 <span class="keyword">yield</span>
需要自己寫 CSS Class 才可以成功顯示顏色,並且縮排有問題。既然這樣的話,有沒有可能 JavaEye 是另外一個套件呢?又花點時間 survey到 CodeRay 這個套件,一經適用,發現到他產生的 HTML 是呈現
<span style="color:#080; font-weight:bold">case</span>
因為是直接把顏色包入 tag 之中,所以不需 CSS 就可以直接顯示了。很不幸的,CodeRay 的縮排還是有問題,會呈現這樣的慘狀
! /usr/bin/ruby

when 'Net::HTTPServiceUnavailable'
puts now+ ' '+res.class.to_s
when 'Net::HTTPMethodNotAllowed'
puts now+ ' '+res.class.to_s
else
puts now + ' '+res.class.to_s
end

真是夠慘的,是我那裡使用錯誤嗎?有人知道嗎?

以下是我目前試出來的用法。

Syntax :
安裝 : gem i syntax
使用方式:
require 'syntax/convertors/html'

convertor
= Syntax::Convertors::HTML.for_syntax "ruby"
html
= convertor.convert( File.read( "program.rb" ) )

puts html
CodeRay :
安裝:gem i coderay
使用方式:
require 'coderay'
print CodeRay.scan(File.read('ruby.rb'), :ruby).div
PS. typo 有 CodeRay 的套件,可以到這裡看看怎麼安裝

0 意見: