Commit 8bd9d096 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'sh-thread-safe-markdown' into 'master'

Make Redcarpet Markdown renderer thread-safe

Closes #36637

See merge request gitlab-org/gitlab-ce!14604
parents b40192a9 15bebda7
---
title: Make Redcarpet Markdown renderer thread-safe
merge_request:
author:
type: fixed
module Banzai module Banzai
module Filter module Filter
class MarkdownFilter < HTML::Pipeline::TextFilter class MarkdownFilter < HTML::Pipeline::TextFilter
# https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
REDCARPET_OPTIONS = {
fenced_code_blocks: true,
footnotes: true,
lax_spacing: true,
no_intra_emphasis: true,
space_after_headers: true,
strikethrough: true,
superscript: true,
tables: true
}.freeze
def initialize(text, context = nil, result = nil) def initialize(text, context = nil, result = nil)
super text, context, result super text, context, result
@text = @text.delete "\r" @text = @text.delete "\r"
...@@ -13,27 +25,11 @@ module Banzai ...@@ -13,27 +25,11 @@ module Banzai
end end
def self.renderer def self.renderer
@renderer ||= begin Thread.current[:banzai_markdown_renderer] ||= begin
renderer = Banzai::Renderer::HTML.new renderer = Banzai::Renderer::HTML.new
Redcarpet::Markdown.new(renderer, redcarpet_options) Redcarpet::Markdown.new(renderer, REDCARPET_OPTIONS)
end end
end end
def self.redcarpet_options
# https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
@redcarpet_options ||= {
fenced_code_blocks: true,
footnotes: true,
lax_spacing: true,
no_intra_emphasis: true,
space_after_headers: true,
strikethrough: true,
superscript: true,
tables: true
}.freeze
end
private_class_method :redcarpet_options
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment