summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/gitlab_markdown_helper.rb11
-rw-r--r--lib/redcarpet/render/gitlab_html.rb4
2 files changed, 14 insertions, 1 deletions
diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb
index 375f8861dae..ae6ba46ffb7 100644
--- a/app/helpers/gitlab_markdown_helper.rb
+++ b/app/helpers/gitlab_markdown_helper.rb
@@ -34,7 +34,8 @@ module GitlabMarkdownHelper
# see https://github.com/vmg/redcarpet#darling-i-packed-you-a-couple-renderers-for-lunch-
filter_html: true,
with_toc_data: true,
- hard_wrap: true)
+ hard_wrap: true,
+ safe_links_only: true)
@markdown = Redcarpet::Markdown.new(gitlab_renderer,
# see https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
no_intra_emphasis: true,
@@ -57,4 +58,12 @@ module GitlabMarkdownHelper
wiki_page.formatted_content.html_safe
end
end
+
+ def create_relative_links(text, project_path_with_namespace)
+ to_be_fixed = text.split("\n").map { |a| a.scan(/\]\(([^(]+)\)/) }.reject{|b| b.empty? }.flatten.reject{|c| c.include?("http" || "www")}
+ to_be_fixed.each do |string|
+ text.gsub!(string, "/#{project_path_with_namespace}/blob/master/#{string}")
+ end
+ text
+ end
end
diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb
index d9c2d3b626d..c0e858bab7d 100644
--- a/lib/redcarpet/render/gitlab_html.rb
+++ b/lib/redcarpet/render/gitlab_html.rb
@@ -32,6 +32,10 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
h.link_to_gfm(content, link, title: title)
end
+ def preprocess(full_document)
+ h.create_relative_links(full_document, @project.path_with_namespace)
+ end
+
def postprocess(full_document)
h.gfm(full_document)
end