Commit 1b530f96 authored by Alex's avatar Alex Committed by Robert Speicher

Fix double brackets being linkified in wiki markdown

parent 076ab2e8
---
title: Fix double-brackets being linkified in wiki markdown
merge_request: 18524
author: brewingcode
type: fixed
...@@ -58,6 +58,9 @@ module Banzai ...@@ -58,6 +58,9 @@ module Banzai
def call def call
doc.search(".//text()").each do |node| doc.search(".//text()").each do |node|
# Do not perform linking inside <code> blocks
next unless node.ancestors('code').empty?
# A Gollum ToC tag is `[[_TOC_]]`, but due to MarkdownFilter running # A Gollum ToC tag is `[[_TOC_]]`, but due to MarkdownFilter running
# before this one, it will be converted into `[[<em>TOC</em>]]`, so it # before this one, it will be converted into `[[<em>TOC</em>]]`, so it
# needs special-case handling # needs special-case handling
......
...@@ -155,4 +155,27 @@ feature 'Projects > Wiki > User previews markdown changes', :js do ...@@ -155,4 +155,27 @@ feature 'Projects > Wiki > User previews markdown changes', :js do
end end
end end
end end
it "does not linkify double brackets inside code blocks as expected" do
click_link 'New page'
page.within '#modal-new-wiki' do
fill_in :new_wiki_path, with: 'linkify_test'
click_button 'Create page'
end
page.within '.wiki-form' do
fill_in :wiki_content, with: <<-HEREDOC
`[[do_not_linkify]]`
```
[[also_do_not_linkify]]
```
HEREDOC
click_on "Preview"
end
expect(page).to have_content("do_not_linkify")
expect(page.html).to include('[[do_not_linkify]]')
expect(page.html).to include('[[also_do_not_linkify]]')
end
end end
...@@ -91,6 +91,12 @@ describe Banzai::Filter::GollumTagsFilter do ...@@ -91,6 +91,12 @@ describe Banzai::Filter::GollumTagsFilter do
expect(doc.at_css('a').text).to eq 'link-text' expect(doc.at_css('a').text).to eq 'link-text'
expect(doc.at_css('a')['href']).to eq expected_path expect(doc.at_css('a')['href']).to eq expected_path
end end
it "inside back ticks will be exempt from linkification" do
doc = filter('<code>[[link-in-backticks]]</code>', project_wiki: project_wiki)
expect(doc.at_css('code').text).to eq '[[link-in-backticks]]'
end
end end
context 'table of contents' do context 'table of contents' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment