GCI.unescape предоставляет генерацию тегов <code>
def coderay(text)
text.gsub(/\<pre( )?\="" lang="(.+?)">\<code( )?\="" lang="(.+?)">(.+?)\<\/code\>\<\/pre\>/m) do
lang = $4
text = CGI.unescapeHTML($5).gsub /\<code( )?\="" lang="(.+?)">|\<\/code\>/, ""
text = text.gsub('<br />', "\n")
text = text.gsub(/[\<]([\/])*([A-Za-z0-9])*[\>]/, '')
text = text.gsub('>', ">")
text = text.gsub('<', "<")
text = text.gsub(' ', " ")
text = text.gsub('&', "&")
CodeRay.scan(text, lang).div(:css => :class)
end
end
Выше генерируется это при последнем закрытии "конца":
</code(></code(></pre(>
Кто-нибудь знает почему? Я использую гемы CodeRay 1.1.0 и RedCloth 4.2.9. Версия Ruby: 2.1.1 и Rails 3.2.19. RefineryCMS 2.1.3 и их блог-движок.
Я думал, что эта линия была лекарством, но это не так:
text = CGI.unescapeHTML($5).gsub /\<code( )?\="" lang="(.+?)">|\<\/code\>/, ""
Отредактировано:
Это в файле show.html.erb:
<%= raw (coderay(RedCloth.new(render 'post').to_html)) %>