Files
nairobi/lib/markdown_converter.rb
Javi Martín af618eaa45 Extract markdown helper logic to a class
This way it'll be easier for other Consul installations to overwrite
parts of the code, like the default options.
2023-06-29 20:48:01 +02:00

49 lines
1.0 KiB
Ruby

class MarkdownConverter
attr_reader :text, :render_options
def initialize(text, **render_options)
@text = text
@render_options = render_options
end
def render
return text if text.blank?
AdminLegislationSanitizer.new.sanitize(Redcarpet::Markdown.new(renderer, extensions).render(text))
end
def render_toc
Redcarpet::Markdown.new(toc_renderer).render(text)
end
private
def renderer
Redcarpet::Render::HTML.new(default_render_options.merge(render_options))
end
def toc_renderer
Redcarpet::Render::HTML_TOC.new(with_toc_data: true)
end
def default_render_options
{
filter_html: false,
hard_wrap: true,
link_attributes: { target: "_blank" }
}
end
def extensions
{
autolink: true,
fenced_code_blocks: true,
lax_spacing: true,
no_intra_emphasis: true,
strikethrough: true,
superscript: true,
tables: true
}
end
end