Я знаю, что есть Railscast и ASCIIcast для использования Textile (RedCloth) с CodeRay, и способ, которым это делается помощником:
module ApplicationHelper
def coderay(text)
text.gsub(/\<code( lang="(.+?)")?\>(.+?)\<\/code\>/m) do
CodeRay.scan($3, $2).div(:css => :class)
end
end
end
и
<%= textilize(coderay(@article.content)) %>
, поэтому предполагается, что @article.content
уже имеет <code>
и
, обернутые вокруг (чтобы CodeRay мог работать) ...
но что если это Markdown, тогда «4 отступа», как и в StackOverflow, сначала нужно будет сначала преобразовать в формат <code>
и
.
Так что в этомпохоже, что мы можем использовать
<%= coderay(Markdown.new(@article.content).to_html).html_safe #html_safe for Rails 3 %>
, поэтому сначала он получает формат <code>
и
для использования CodeRay, а затем просто подставляет /<code>.*?
/ m с результатами CodeRay.
Это правильный способ сделать это?Но если то, что у нас есть на самом деле <code>
и
в коде с "4 пробелами с отступом", то это фактически захлебнет эту обработку, потому что теперь есть вложенный <code>
, поэтому первый <code>
получитсовпал, пропустив второй <code>
как просто содержимое для CodeRay, а затем сопоставив первый
и оставив второй
висящим там без обработки.Как это можно сделать - может быть, у CodeRay есть некоторые опции Markdown?