J'essaie d'ajouter de la coloration syntaxique à mon blog qui utilise actuellement RDiscount. Je convertis le Markdown en HTML avec RDiscount puis en analysant les blocs de code HTML avec CodeRay pour ajouter de la coloration syntaxique. Voilà ce que j'ai jusqu'à présent:Mise en surbrillance de la syntaxe avec CodeRay et Markdown (RDiscount) dans une application Rails 3
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
Et à mon avis:
<%= raw @post.rendered_body %>
L'utilisation de ce démarquage:
<code lang="ruby">
def function(param1, param2)
puts param1
param2.each do |a|
a.hello :world
end
end
</code>
Le résultat est que les blocs de code sont enveloppés deux fois.
<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>
Que dois-je faire à la place?
Pouvez-vous inclure le self.body dans ce cas? – rwilliams
Avez-vous pu tester ma solution? – rwilliams