diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb index 89d2a648494..2f760af02fd 100644 --- a/app/helpers/gitlab_markdown_helper.rb +++ b/app/helpers/gitlab_markdown_helper.rb @@ -50,6 +50,8 @@ module GitlabMarkdownHelper context[:project] ||= @project + text = Banzai.pre_process(text, context) + html = Banzai.render(text, context) context.merge!( diff --git a/lib/banzai.rb b/lib/banzai.rb index 093382261ae..b467413a7dd 100644 --- a/lib/banzai.rb +++ b/lib/banzai.rb @@ -7,6 +7,10 @@ module Banzai Renderer.render_result(text, context) end + def self.pre_process(text, context) + Renderer.pre_process(text, context) + end + def self.post_process(html, context) Renderer.post_process(html, context) end diff --git a/lib/banzai/pipeline/pre_process_pipeline.rb b/lib/banzai/pipeline/pre_process_pipeline.rb new file mode 100644 index 00000000000..c174f0b862d --- /dev/null +++ b/lib/banzai/pipeline/pre_process_pipeline.rb @@ -0,0 +1,16 @@ +module Banzai + module Pipeline + class PreProcessPipeline < BasePipeline + def self.filters + [ + ] + end + + def self.transform_context(context) + context.merge( + pre_process: true + ) + end + end + end +end diff --git a/lib/banzai/renderer.rb b/lib/banzai/renderer.rb index 891c0fd7749..ae714c87dc5 100644 --- a/lib/banzai/renderer.rb +++ b/lib/banzai/renderer.rb @@ -31,6 +31,12 @@ module Banzai Pipeline[context[:pipeline]].call(text, context) end + def self.pre_process(text, context) + pipeline = Pipeline[:pre_process] + + pipeline.to_html(text, context) + end + # Perform post-processing on an HTML String # # This method is used to perform state-dependent changes to a String of