From 5357411e0f478feda817d86b4d1bded72afc968a Mon Sep 17 00:00:00 2001 From: Felix Wolfsteller Date: Thu, 28 Feb 2019 23:29:16 +0100 Subject: [PATCH 1/3] Extract options and renderer initialization. This is a minor refactor to improve readability and extendability (e.g. for a TOCRenderer), inspired by original source https://stackoverflow.com/a/33778564/1680728 who quotes https://gist.github.com/davidjrice/3014948 . --- .../initializers/markdown_template_handler.rb | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/config/initializers/markdown_template_handler.rb b/config/initializers/markdown_template_handler.rb index eb9b3f5..d2e56c4 100644 --- a/config/initializers/markdown_template_handler.rb +++ b/config/initializers/markdown_template_handler.rb @@ -4,17 +4,20 @@ def self.erb end def self.call(template) + options = { + space_after_headers: true, + fenced_code_blocks: true, + smartypants: true, + disable_indented_code_blocks: true, + prettify: true, + tables: true, + with_toc_data: true, + no_intra_emphasis: true, + autolink: true + } + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, options) compiled_source = erb.call(template) - "Redcarpet::Markdown.new(Redcarpet::Render::HTML, - no_intra_emphasis: true, - fenced_code_blocks: true, - space_after_headers: true, - smartypants: true, - disable_indented_code_blocks: true, - prettify: true, - tables: true, - with_toc_data: true, - autolink: true).render(begin;#{compiled_source};end).html_safe" + "#{@markdown}.render(begin;#{compiled_source};end).html_safe" end end From 899fc507dcdd821df81dac4f34ed6fce87a56d03 Mon Sep 17 00:00:00 2001 From: Felix Wolfsteller Date: Thu, 28 Feb 2019 23:32:17 +0100 Subject: [PATCH 2/3] Extract Markdown Renderer creation. --- config/initializers/markdown_template_handler.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/initializers/markdown_template_handler.rb b/config/initializers/markdown_template_handler.rb index d2e56c4..e3fd30c 100644 --- a/config/initializers/markdown_template_handler.rb +++ b/config/initializers/markdown_template_handler.rb @@ -3,6 +3,10 @@ def self.erb @erb ||= ActionView::Template.registered_template_handler(:erb) end + def self.markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, options) + end + def self.call(template) options = { space_after_headers: true, @@ -15,9 +19,8 @@ def self.call(template) no_intra_emphasis: true, autolink: true } - @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, options) compiled_source = erb.call(template) - "#{@markdown}.render(begin;#{compiled_source};end).html_safe" + "#{markdown}.render(begin;#{compiled_source};end).html_safe" end end From d57b4cd86f09147fe32d1f2ccee2c52cea6a5ef4 Mon Sep 17 00:00:00 2001 From: Felix Wolfsteller Date: Fri, 1 Mar 2019 00:01:38 +0100 Subject: [PATCH 3/3] properly use options and 'escape' output --- .../initializers/markdown_template_handler.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/config/initializers/markdown_template_handler.rb b/config/initializers/markdown_template_handler.rb index e3fd30c..2d2615b 100644 --- a/config/initializers/markdown_template_handler.rb +++ b/config/initializers/markdown_template_handler.rb @@ -3,12 +3,8 @@ def self.erb @erb ||= ActionView::Template.registered_template_handler(:erb) end - def self.markdown - @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, options) - end - - def self.call(template) - options = { + def self.redcarpet_options + @options = { space_after_headers: true, fenced_code_blocks: true, smartypants: true, @@ -19,8 +15,15 @@ def self.call(template) no_intra_emphasis: true, autolink: true } + end + + def self.markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, redcarpet_options) + end + + def self.call(template) compiled_source = erb.call(template) - "#{markdown}.render(begin;#{compiled_source};end).html_safe" + "#{markdown.render(compiled_source).inspect}.html_safe" end end