public
Last active

Upgrading to Redcarpet v2.0 with highlighting of code blocks with Albino/Pygments

  • Download Gist
application_helper.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
module ApplicationHelper
def markdown(text, *renderer)
rndr_flags = {
hard_wrap: true,
gh_blockcode: true,
safe_links_only: true,
filter_html: true
}
case renderer[0]
when :authored
rndr_flags[:filter_html] = false
else
rndr_flags.merge({:no_images => true, :no_styles => true})
end
rndr = HTMLwithAlbino.new(rndr_flags)
redcarpet = Redcarpet::Markdown.new(rndr, :space_after_headers => true,
:fenced_code_blocks => true, :autolink => true, :no_intra_emphasis => true,
:strikethrough => true, :superscripts => true)
redcarpet.render(text).html_safe
end
end
 
# create a custom renderer that allows highlighting of code blocks
class HTMLwithAlbino < Redcarpet::Render::HTML
def block_code(code, language)
Albino.colorize(code, language)
end
end

Calling markdown without any arguments will assume publicly created content, hence, it filters out as much as possible; still doing Albino.colorize() instead of Albino.safe_colorize() as I haven't upgraded it yet.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.