在Ruby on Rails上,如何使用CodeRay使用Markdown(RDiscount / BlueCloth)突出显示语法?
我知道有一个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>
和</code>
缠绕(这样CodeRay可以工作)......
但是如果它是Markdown,那么“4空间缩进”就像在StackOverflow上一样,首先需要首先转换为<code>
和</code>
格式。
所以在这种情况下,似乎我们可以使用
<%= coderay(Markdown.new(@article.content).to_html).html_safe #html_safe for Rails 3 %>
所以它首先得到CodeRay使用的<code>
和</code>
格式,然后基本上用CodeRay结果替换/<code>.*?</code>/m
。
这是一个正确的方法吗?但是如果我们实际上在“4空间缩进”代码中有<code>
和</code>
,那么它实际上会阻止这个处理,因为现在有嵌套的<code>
,所以第一个<code>
将匹配,跳过第二个<code>
作为CodeRay的内容,然后匹配第一个</code>
并留下第二个</code>
悬挂在那里未经处理。如何做到这一点 - 也许CodeRay有一些Markdown选项?
没有找到相关结果
已邀请:
1 个回复
旅牢斯讲
您可以使用“---”来表示您的纺织品/降价中的代码,并可选择添加语言,例如“--- ruby”,如下所示:
与Markdown完美搭配。