Commit 7cc4b3f632dbd2ab9c0096e4f5e6fcd0b4c6b071

Authored by Dmitriy Zaporozhets
2 parents 60ab3bea d661b893

Merge pull request #1406 from riyad/markdown-code-fixes

Markdown code fixes
app/helpers/gitlab_markdown_helper.rb
@@ -27,7 +27,7 @@ module GitlabMarkdownHelper @@ -27,7 +27,7 @@ module GitlabMarkdownHelper
27 filter_html: true, 27 filter_html: true,
28 with_toc_data: true, 28 with_toc_data: true,
29 hard_wrap: true) 29 hard_wrap: true)
30 - @markdown ||= Redcarpet::Markdown.new(gitlab_renderer, 30 + @markdown = Redcarpet::Markdown.new(gitlab_renderer,
31 # see https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use 31 # see https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
32 no_intra_emphasis: true, 32 no_intra_emphasis: true,
33 tables: true, 33 tables: true,
lib/gitlab/markdown.rb
@@ -47,7 +47,9 @@ module Gitlab @@ -47,7 +47,9 @@ module Gitlab
47 # Note: reference links will only be generated if @project is set 47 # Note: reference links will only be generated if @project is set
48 def gfm(text, html_options = {}) 48 def gfm(text, html_options = {})
49 return text if text.nil? 49 return text if text.nil?
50 - return text if @project.nil? 50 +
  51 + # prevents the string supplied through the _text_ argument to be altered
  52 + text = text.dup
51 53
52 @html_options = html_options 54 @html_options = html_options
53 55
@@ -78,9 +80,12 @@ module Gitlab @@ -78,9 +80,12 @@ module Gitlab
78 # 80 #
79 # text - Text to parse 81 # text - Text to parse
80 # 82 #
  83 + # Note: reference links will only be generated if @project is set
  84 + #
81 # Returns parsed text 85 # Returns parsed text
82 def parse(text) 86 def parse(text)
83 - text = text.gsub(REFERENCE_PATTERN) do |match| 87 + # parse reference links
  88 + text.gsub!(REFERENCE_PATTERN) do |match|
84 prefix = $1 || '' 89 prefix = $1 || ''
85 reference = $2 90 reference = $2
86 identifier = $3 || $4 || $5 91 identifier = $3 || $4 || $5
@@ -91,9 +96,10 @@ module Gitlab @@ -91,9 +96,10 @@ module Gitlab
91 else 96 else
92 match 97 match
93 end 98 end
94 - end 99 + end if @project
95 100
96 - text = text.gsub(EMOJI_PATTERN) do |match| 101 + # parse emoji
  102 + text.gsub!(EMOJI_PATTERN) do |match|
97 if valid_emoji?($2) 103 if valid_emoji?($2)
98 image_tag("emoji/#{$2}.png", size: "20x20", class: 'emoji', title: $1, alt: $1) 104 image_tag("emoji/#{$2}.png", size: "20x20", class: 'emoji', title: $1, alt: $1)
99 else 105 else
spec/helpers/gitlab_markdown_helper_spec.rb
@@ -247,6 +247,11 @@ describe GitlabMarkdownHelper do @@ -247,6 +247,11 @@ describe GitlabMarkdownHelper do
247 it "ignores invalid emoji" do 247 it "ignores invalid emoji" do
248 gfm(":invalid-emoji:").should_not match(/<img/) 248 gfm(":invalid-emoji:").should_not match(/<img/)
249 end 249 end
  250 +
  251 + it "should work independet of reference links (i.e. without @project being set)" do
  252 + @project = nil
  253 + gfm(":+1:").should match(/<img/)
  254 + end
250 end 255 end
251 end 256 end
252 257