Allow emoji in label and milestone references
If we put the emoji filter before the reference filters, each emoji will
have a wrapper element that prevents the reference filter from detecting
the presence of the emoji.
As the emoji filter now runs after the reference filters, references
must contain a literal emoji, not the GitLab Flavored Markdown
versions (:100`, for example).
A weird side-effect is that if you have a label with the 100 emoji, and
a label named 💯, then trying to reference the latter will work (link
to the correct label), but will render with the 100 emoji. I'm
comfortable with that edge case, I think.
This commit is contained in:
parent
a18b7e7e2b
commit
1617aa2756
3 changed files with 29 additions and 1 deletions
5
changelogs/unreleased/allow-emoji-in-references.yml
Normal file
5
changelogs/unreleased/allow-emoji-in-references.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Allow references to labels and milestones to contain emoji
|
||||
merge_request: 29284
|
||||
author:
|
||||
type: changed
|
|
@ -25,7 +25,6 @@ module Banzai
|
|||
Filter::VideoLinkFilter,
|
||||
Filter::ImageLazyLoadFilter,
|
||||
Filter::ImageLinkFilter,
|
||||
Filter::EmojiFilter,
|
||||
Filter::TableOfContentsFilter,
|
||||
Filter::AutolinkFilter,
|
||||
Filter::ExternalLinkFilter,
|
||||
|
@ -34,6 +33,7 @@ module Banzai
|
|||
|
||||
*reference_filters,
|
||||
|
||||
Filter::EmojiFilter,
|
||||
Filter::TaskListFilter,
|
||||
Filter::InlineDiffFilter,
|
||||
|
||||
|
|
|
@ -117,4 +117,27 @@ describe Banzai::Pipeline::GfmPipeline do
|
|||
expect(output).not_to include("javascript")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'emoji in references' do
|
||||
set(:project) { create(:project, :public) }
|
||||
let(:emoji) { '💯' }
|
||||
|
||||
it 'renders a label reference with emoji inside' do
|
||||
create(:label, project: project, name: emoji)
|
||||
|
||||
output = described_class.to_html("#{Label.reference_prefix}\"#{emoji}\"", project: project)
|
||||
|
||||
expect(output).to include(emoji)
|
||||
expect(output).to include(Gitlab::Routing.url_helpers.project_issues_path(project, label_name: emoji))
|
||||
end
|
||||
|
||||
it 'renders a milestone reference with emoji inside' do
|
||||
milestone = create(:milestone, project: project, title: emoji)
|
||||
|
||||
output = described_class.to_html("#{Milestone.reference_prefix}\"#{emoji}\"", project: project)
|
||||
|
||||
expect(output).to include(emoji)
|
||||
expect(output).to include(Gitlab::Routing.url_helpers.milestone_path(milestone))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue