Как интегрировать красную ткань с coderay - PullRequest
1 голос
/ 22 ноября 2011

Я хочу использовать подсветку синтаксиса вместе с красной тканью.

В описании coderay говорится:

Быстрая и простая подсветка синтаксиса для выбранных языков, написанная на Рубин. Поставляется с интеграцией RedCloth и счетчиком LOC. 1

Но я не нашел документации о том, как это сделать?

Где я должен поместить код, чтобы сделать подсветку? Я думал о том, чтобы поместить это в module ApplicationHelper Это хорошая идея?

1 Ответ

3 голосов
/ 13 января 2012

ВАРИАНТ 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. Добавьте необходимые файлы драгоценных камней в свой 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"))

Я предпочитаю второй вариант.

Подробнее о стиле с языком разметки Textile вы можете узнать по адресу http://en.wikipedia.org/wiki/Textile_(markup_language)

...