1

我想将语法高亮与 redcloth 一起使用。

coderay的描述说:

用 Ruby 编写的选定语言的快速简单的语法高亮显示。带有 RedCloth 集成和 LOC 计数器。1

但是我没有找到有关如何执行此操作的文档?

我应该把代码放在哪里做高亮显示?我想把它放进去module ApplicationHelper是个好主意吗?

4

1 回答 1

3

选项1:

像这样简单:http ://railscasts.com/episodes/207-syntax-highlighting?autoplay=true 使用 rails3 时将助手更改为:

  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 标记语言进行样式设置的更多信息

于 2012-01-13T11:49:06.503 回答