Add post_process method to Gitlab::Markdown
This commit is contained in:
parent
ca8d225307
commit
5794d65a07
3 changed files with 27 additions and 3 deletions
|
@ -52,7 +52,8 @@ module GitlabMarkdownHelper
|
|||
ref: @ref
|
||||
)
|
||||
|
||||
Gitlab::Markdown.render(text, context)
|
||||
html = Gitlab::Markdown.render(text, context)
|
||||
Gitlab::Markdown.post_process(html, current_user)
|
||||
end
|
||||
|
||||
# TODO (rspeicher): Remove all usages of this helper and just call `markdown`
|
||||
|
@ -65,7 +66,8 @@ module GitlabMarkdownHelper
|
|||
ref: @ref
|
||||
)
|
||||
|
||||
Gitlab::Markdown.gfm(text, options)
|
||||
html = Gitlab::Markdown.gfm(text, options)
|
||||
Gitlab::Markdown.post_process(html, current_user)
|
||||
end
|
||||
|
||||
def asciidoc(text)
|
||||
|
|
|
@ -31,6 +31,24 @@ module Gitlab
|
|||
renderer.render(markdown)
|
||||
end
|
||||
|
||||
# Perform post-processing on an HTML String
|
||||
#
|
||||
# This method is used to perform state-dependent changes to a String of
|
||||
# HTML, such as removing references that the current user doesn't have
|
||||
# permission to make (`RedactorFilter`).
|
||||
#
|
||||
# html - String to process
|
||||
# for_user - User state
|
||||
#
|
||||
# Returns an HTML-safe String
|
||||
def self.post_process(html, for_user)
|
||||
result = post_processor.call(html, current_user: for_user)
|
||||
|
||||
result[:output].
|
||||
to_html.
|
||||
html_safe
|
||||
end
|
||||
|
||||
# Provide autoload paths for filters to prevent a circular dependency error
|
||||
autoload :AutolinkFilter, 'gitlab/markdown/autolink_filter'
|
||||
autoload :CommitRangeReferenceFilter, 'gitlab/markdown/commit_range_reference_filter'
|
||||
|
@ -115,6 +133,10 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
def self.post_processor
|
||||
@post_processor ||= HTML::Pipeline.new([Gitlab::Markdown::RedactorFilter])
|
||||
end
|
||||
|
||||
def self.redcarpet_options
|
||||
# https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
|
||||
@redcarpet_options ||= {
|
||||
|
|
|
@ -220,7 +220,7 @@ describe 'GitLab Markdown', feature: true do
|
|||
end
|
||||
end
|
||||
|
||||
# `markdown` calls these two methods
|
||||
# Fake a `current_user` helper
|
||||
def current_user
|
||||
@feat.user
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue