Here's how:
module ApplicationHelper
def markdown(text, *renderer)
case renderer[0]
when :authored
rndr = HTMLwithAlbino.new(:hard_wrap => true, :gh_blockcode => true,
:filter_html => false, :safe_links_only => true)
when :featured
rndr = HTMLwithAlbino.new(:hard_wrap => true, :gh_blockcode => true,
:filter_html => true, :safe_links_only => true)
else
rndr = HTMLwithAlbino.new(:hard_wrap => true, :gh_blockcode => true,
:filter_html => true, :no_images => true, :no_styles => true,
:safe_links_only => true)
end
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.