From 1617aa27562c6c92c981cadf13f0fb999558e1cc Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Thu, 6 Jun 2019 17:49:08 +0100 Subject: 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 :100:, 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. --- .../unreleased/allow-emoji-in-references.yml | 5 +++++ lib/banzai/pipeline/gfm_pipeline.rb | 2 +- spec/lib/banzai/pipeline/gfm_pipeline_spec.rb | 23 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/allow-emoji-in-references.yml diff --git a/changelogs/unreleased/allow-emoji-in-references.yml b/changelogs/unreleased/allow-emoji-in-references.yml new file mode 100644 index 00000000000..3116b346c00 --- /dev/null +++ b/changelogs/unreleased/allow-emoji-in-references.yml @@ -0,0 +1,5 @@ +--- +title: Allow references to labels and milestones to contain emoji +merge_request: 29284 +author: +type: changed diff --git a/lib/banzai/pipeline/gfm_pipeline.rb b/lib/banzai/pipeline/gfm_pipeline.rb index 30cafd11834..d67f461be57 100644 --- a/lib/banzai/pipeline/gfm_pipeline.rb +++ b/lib/banzai/pipeline/gfm_pipeline.rb @@ -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, diff --git a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb index 91b0499375d..7119c826bca 100644 --- a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb +++ b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb @@ -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 -- cgit v1.2.1