使用coderay和railscasts样式进行代码高亮
谷梁云瀚
2023-12-01
[url=http://coderay.rubychan.de/]CodeRay[/url]是一个语法高亮的Ruby库,效率很不错。
CodeRay目前支持的语法包括:
[list=1]
[*]Ruby
[*]C
[*]Delphi
[*]HTML
[*]RHTML (Rails)
[*]Nitro-XHTML
[*]YAML
[*]SQL
[*]Python
[*]Perl
[*]PHP
[*]Java
[/list]
[url=http://www.railscasts.com]railscasts[/url]的播主Ryan Bates自定义了一些css,让ruby、rhtml等代码看起来非常cool!
1,安装coderay gem
[code]
gem install coderay
[/code]
2,在application.rb中
[code]
require 'coderay'
[/code]
3,在application_helper.rb里添加一个helper方法
[code]
def parse_coderay(text)
text.scan(/(\[code\:([a-z].+?)\](.+?)\[\/code\])/m).each do |match|
text.gsub!(match[0],CodeRay.scan(match[2].strip, match[1].to_sym).div( :line_numbers => :table,:css => :class))
end
return text
end
[/code]
这样,我们的文本输入框就支持这样的code标签了:
[code]
\[code:ruby\]
def aaa
puts "aaaa"
end
\[\/code\]
[/code]
code:ruby这样的标签中ruby可以用上面提到的支持的语言来替代
4,借用railscasts的coderay样式
[url]http://railscasts.com/stylesheets/coderay.css[/url]
5,在html.erb页面中
[code]
<div class="CodeRay"><%= parse_coderay @post.content %></div>
[/code]
效果如下:
[img]http://www.iteye.com/upload/attachment/27903/90c8ab2a-465c-3ed9-b6ad-c228f84920c3.jpg[/img]