如何整合红布与coderay



我想使用语法高亮和红布。

coderay的描述说:

快速和容易的语法高亮显示选定的语言,写在鲁比(人名)自带RedCloth集成和LOC计数器。1

但是我没有找到关于如何做到这一点的文档?

我应该把代码放在哪里做高亮?我想过把它放到module ApplicationHelper中这是个好主意吗?

选项1:

简单如下:http://railscasts.com/episodes/207-syntax-highlighting?autoplay=true当使用rails3时,将helper更改为:

  def coderay(text) 
    text.gsub!(/<code(?: lang="(.+?)")?>(.+?)</code>/m) do 
      code = CodeRay.scan($2, $1).div(:css => :class) 
      "<notextile>#{code}</notextile>" 
    end 
    return text.html_safe 
  end

如果你使用HAML,你需要使用~符号:

~ raw textilize(coderay(...))

选项2:

CodeRay内置了对RedCloth的支持。

  1. 将所需的gem文件添加到Gemfile中。
gem "RedCloth", :require => 'redcloth'
gem 'coderay', :require => ['coderay', 'coderay/for_redcloth']
  1. 渲染代码字符串,就像你会用RedCloth(~而不是=,因为我使用HAML)。
~ raw textilize("Some code here @that should@ be formated.")
~ raw textilize("Some code here @[ruby]that should@ be formated.")
  1. 你也可以渲染一个文件
# File at /my/file/path/filename.doc
h1. My title 
bc[ruby].. # Nekaj za napisat 
def self.myfun   
puts "asdas" 
end
# Inside your view file
~ raw textilize(File.read("/my/file/path/filename.doc"))

我更喜欢第二个选项。

您可以在http://en.wikipedia.org/wiki/Textile_(markup_language找到更多关于使用Textile标记语言进行样式化的信息

相关内容

  • 没有找到相关文章

最新更新