title | nav_text | category | order |
---|---|---|---|
Jets Custom Markdown Renderer |
Markdown |
howtos-renderers |
1 |
Here's a cheatsheet that shows you how to add and use a custom renderer. We'll use markdown as an example.
We'll use the redcarpet
gem. Add it to your Gemfile
.
Gemfile
gem "redcarpet"
To add a custom render, you can register new template handlers. This is typcially done in the initializer.
config/initializers/renderers.rb
require 'renderers/markdown_renderer'
ActionView::Template.register_template_handler(:md, Renderers::MarkdownRenderer)
ActionView::Template.register_template_handler(:markdown, Renderers::MarkdownRenderer)
Here's the MarkdownRenderer definition.
lib/renderers/markdown_renderer.rb
module Renderers
class MarkdownRenderer
def self.call(template, text = nil)
text ||= template.source
renderer = Redcarpet::Render::HTML.new
markdown = Redcarpet::Markdown.new(renderer)
markdown.render(text).html_safe.inspect
end
end
end
app/views/examples/index.html.md
## Title 1
This text will be rendered in markdown.
{% include howtos/renderers/controller-and-routes.md %}