logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 4fb95c91fbf808bafa581b8976d94ec36eee8619
parent: 5f4e402204c9da289d1a6b5e3902bf2c9cfe61c1
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Sun,  5 Mar 2017 18:08:19 +0100

Fix wrongful matching of last period in extended usernames
Fix anchor tags in some wikipedia URLs being matches as a hashtag

Diffstat:

Mapp/models/account.rb2+-
Mapp/models/tag.rb2+-
Mspec/models/account_spec.rb9++++++++-
Mspec/models/tag_spec.rb10++++++++++
4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/app/models/account.rb b/app/models/account.rb @@ -4,7 +4,7 @@ class Account < ApplicationRecord include Targetable include PgSearch - MENTION_RE = /(?:^|[^\/\w])@([a-z0-9_]+(?:@[a-z0-9\.\-]+)?)/i + MENTION_RE = /(?:^|[^\/\w])@([a-z0-9_]+(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze # Local users diff --git a/app/models/tag.rb b/app/models/tag.rb @@ -3,7 +3,7 @@ class Tag < ApplicationRecord has_and_belongs_to_many :statuses - HASHTAG_RE = /(?:^|[^\/\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i + HASHTAG_RE = /(?:^|[^\/\)\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i validates :name, presence: true, uniqueness: true diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb @@ -178,7 +178,6 @@ RSpec.describe Account, type: :model do end end - describe 'MENTION_RE' do subject { Account::MENTION_RE } @@ -190,6 +189,14 @@ RSpec.describe Account, type: :model do expect(subject.match('@alice Hey how are you?')[1]).to eq 'alice' end + it 'matches full usernames' do + expect(subject.match('@alice@example.com')[1]).to eq 'alice@example.com' + end + + it 'matches full usernames with a dot at the end' do + expect(subject.match('Hello @alice@example.com.')[1]).to eq 'alice@example.com' + end + it 'matches dot-prepended usernames' do expect(subject.match('.@alice I want everybody to see this')[1]).to eq 'alice' end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb @@ -1,5 +1,15 @@ require 'rails_helper' RSpec.describe Tag, type: :model do + describe 'HASHTAG_RE' do + subject { Tag::HASHTAG_RE } + it 'does not match URLs with anchors with non-hashtag characters' do + expect(subject.match('Check this out https://medium.com/@alice/some-article#.abcdef123')).to be_nil + end + + it 'does not match URLs with hashtag-like anchors' do + expect(subject.match('https://en.wikipedia.org/wiki/Ghostbusters_(song)#Lawsuit')).to be_nil + end + end end