Disable reference creation for comments surrounded by code/preformatted blocks
This commit is contained in:
parent
6c1074e302
commit
83d552d50d
|
|
@ -1,6 +1,7 @@
|
|||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 7.10.0 (unreleased)
|
||||
- Disable reference creation for comments surrounded by code/preformatted blocks (Stan Hu)
|
||||
- enable line wrapping per default and remove the checkbox to toggle it (Hannes Rosenögger)
|
||||
- extend the commit calendar to show the actual commits made on a date (Hannes Rosenögger)
|
||||
- Add a service to support external wikis (Hannes Rosenögger)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,13 @@ module Gitlab
|
|||
end
|
||||
|
||||
def analyze(string, project)
|
||||
parse_references(string.dup, project)
|
||||
text = string.dup
|
||||
|
||||
# Remove preformatted/code blocks so that references are not included
|
||||
text.gsub!(%r{<pre>.*?</pre>|<code>.*?</code>}m) { |match| '' }
|
||||
text.gsub!(%r{^```.*?^```}m) { |match| '' }
|
||||
|
||||
parse_references(text, project)
|
||||
end
|
||||
|
||||
# Given a valid project, resolve the extracted identifiers of the requested type to
|
||||
|
|
|
|||
|
|
@ -50,6 +50,26 @@ describe Gitlab::ReferenceExtractor do
|
|||
expect(text).to eq('issue #123 is just the worst, @user')
|
||||
end
|
||||
|
||||
it 'extracts no references for <pre>..</pre> blocks' do
|
||||
subject.analyze("<pre>def puts '#1 issue'\nend\n</pre>```", nil)
|
||||
expect(subject.issues).to be_blank
|
||||
end
|
||||
|
||||
it 'extracts no references for <code>..</code> blocks' do
|
||||
subject.analyze("<code>def puts '!1 request'\nend\n</code>```", nil)
|
||||
expect(subject.merge_requests).to be_blank
|
||||
end
|
||||
|
||||
it 'extracts no references for code blocks with language' do
|
||||
subject.analyze("this code:\n```ruby\ndef puts '#1 issue'\nend\n```", nil)
|
||||
expect(subject.issues).to be_blank
|
||||
end
|
||||
|
||||
it 'extracts issue references for invalid code blocks' do
|
||||
subject.analyze('test: ```this one talks about issue #1234```', nil)
|
||||
expect(subject.issues).to eq([{ project: nil, id: '1234' }])
|
||||
end
|
||||
|
||||
it 'handles all possible kinds of references' do
|
||||
accessors = Gitlab::Markdown::TYPES.map { |t| "#{t}s".to_sym }
|
||||
expect(subject).to respond_to(*accessors)
|
||||
|
|
|
|||
Loading…
Reference in New Issue