diff --git a/lib/gollum/markup.rb b/lib/gollum/markup.rb index 06463be7..f4a92b4f 100644 --- a/lib/gollum/markup.rb +++ b/lib/gollum/markup.rb @@ -53,9 +53,12 @@ module Gollum end data = process_tags(data) data = process_code(data, encoding) + + doc = Nokogiri::HTML::DocumentFragment.parse(data) + doc = remove_links_in_code(doc) + if sanitize || block_given? - doc = Nokogiri::HTML::DocumentFragment.parse(data) - doc = sanitize.clean_node!(doc) if sanitize + doc = sanitize.clean_node!(doc) if sanitize yield doc if block_given? data = doc.to_html end @@ -353,6 +356,15 @@ module Gollum end end + def remove_links_in_code(doc) + doc.css('code > a').each do |link| + link.before("[[#{link.content}]]") + link.remove + end + + doc + end + ######################################################################### # # Code diff --git a/test/test_markup.rb b/test/test_markup.rb index 4a9ced06..2a2b2d0c 100644 --- a/test/test_markup.rb +++ b/test/test_markup.rb @@ -173,7 +173,20 @@ context "Markup" do @wiki.write_page("Potato", :mediawiki, "a [[Potato|Potato Heaad]] ", commit_details) page = @wiki.page("Potato") output = page.formatted_data - assert_equal normal("
\na Potato Heaad
"), normal(output) + assert_equal normal("\na Potato Heaad
+"), normal(output) + end + + test "wiki link within inline code block" do + @wiki.write_page("Potato", :markdown, "`sed -i '' 's/[[:space:]]*$//'`", commit_details) + page = @wiki.page("Potato") + assert_equal "sed -i '' 's/[[:space:]]*$//'
sed -i '' 's/[[:space:]]*$//'\n", page.formatted_data
end
#########################################################################
@@ -598,11 +611,11 @@ np.array([[2,2],[1,3]],np.float)
# Asciidoc
#########################################################################
- test "asciidoc header" do
+ test "asciidoc header" do
compare("= Book Title\n\n== Heading", '