diff options
author | Robert Speicher <robert@gitlab.com> | 2015-12-08 20:22:23 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2015-12-08 20:22:23 +0000 |
commit | bcd89a58e736685bcce662fe0acf793ee925b536 (patch) | |
tree | d38abe907bf3d9d9591227d627c2b25bb4a2720c /app/helpers | |
parent | 02cc978ebc0650284b2b7b0bd4cf0bc633ab788e (diff) | |
parent | 926c3bef9fbda49d5cab268bcd83355142e945c1 (diff) | |
download | gitlab-ce-bcd89a58e736685bcce662fe0acf793ee925b536.tar.gz |
Merge branch 'reference-pipeline-and-caching' into 'master'
Implement different Markdown rendering pipelines and cache Markdown
Builds on !1090.
Related to !1014.
Fixes #2054.
See merge request !1602
Diffstat (limited to 'app/helpers')
-rw-r--r-- | app/helpers/gitlab_markdown_helper.rb | 60 |
1 files changed, 25 insertions, 35 deletions
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb index 98c6d9d5d2e..5004e02ea0b 100644 --- a/app/helpers/gitlab_markdown_helper.rb +++ b/app/helpers/gitlab_markdown_helper.rb @@ -20,7 +20,7 @@ module GitlabMarkdownHelper end user = current_user if defined?(current_user) - gfm_body = Gitlab::Markdown.gfm(escaped_body, project: @project, current_user: user) + gfm_body = Gitlab::Markdown.render(escaped_body, project: @project, current_user: user, pipeline: :single_line) fragment = Nokogiri::HTML::DocumentFragment.parse(gfm_body) if fragment.children.size == 1 && fragment.children[0].name == 'a' @@ -46,23 +46,35 @@ module GitlabMarkdownHelper end def markdown(text, context = {}) - process_markdown(text, context) - end + return "" unless text.present? + + context[:project] ||= @project - # TODO (rspeicher): Remove all usages of this helper and just call `markdown` - # with a custom pipeline depending on the content being rendered - def gfm(text, options = {}) - process_markdown(text, options, :gfm) + html = Gitlab::Markdown.render(text, context) + + context.merge!( + current_user: (current_user if defined?(current_user)), + + # RelativeLinkFilter + requested_path: @path, + project_wiki: @project_wiki, + ref: @ref + ) + + Gitlab::Markdown.post_process(html, context) end def asciidoc(text) - Gitlab::Asciidoc.render(text, { - commit: @commit, - project: @project, - project_wiki: @project_wiki, + Gitlab::Asciidoc.render(text, + project: @project, + current_user: (current_user if defined?(current_user)), + + # RelativeLinkFilter + project_wiki: @project_wiki, requested_path: @path, - ref: @ref - }) + ref: @ref, + commit: @commit + ) end # Return the first line of +text+, up to +max_chars+, after parsing the line @@ -178,26 +190,4 @@ module GitlabMarkdownHelper '' end end - - def process_markdown(text, options, method = :markdown) - return "" unless text.present? - - options.reverse_merge!( - path: @path, - pipeline: :default, - project: @project, - project_wiki: @project_wiki, - ref: @ref - ) - - user = current_user if defined?(current_user) - - html = if method == :gfm - Gitlab::Markdown.gfm(text, options) - else - Gitlab::Markdown.render(text, options) - end - - Gitlab::Markdown.post_process(html, pipeline: options[:pipeline], project: @project, user: user) - end end |