現在 RDiscount を使用しているブログに構文の強調表示を追加しようとしています。RDiscount を使用して Markdown を HTML に変換し、CodeRay を使用して HTML コード ブロックを解析して、構文の強調表示を追加しています。これは私がこれまでに持っているものです:
class Post < ActiveRecord::Base
before_save :render_body
def render_body
self.rendered_body = coderay(markdown(self.body))
end
def markdown(text)
RDiscount.new(text).to_html
end
def coderay(text)
text.gsub(/\<code( lang="(.+?)")?\>(.+?)\<\/code\>/m) do
CodeRay.scan($3, $2).div(:css => :class)
end
end
end
そして私の見解では:
<%= raw @post.rendered_body %>
このマークダウンの使用:
<code lang="ruby">
def function(param1, param2)
puts param1
param2.each do |a|
a.hello :world
end
end
</code>
その結果、コード ブロックが 2 回ラップされます。
<pre>
<div class="CodeRay">
<div class="code">
<pre>
def function(param1, param2)
puts param1
param2.each do |a|
a.hello :world
end
end
</pre>
</div>
</div>
</pre>
代わりに何をすべきですか?