瀏覽代碼

Fix wrongful matching of last period in extended usernames

Fix anchor tags in some wikipedia URLs being matches as a hashtag
master
Eugen Rochko 7 年之前
父節點
當前提交
4fb95c91fb
共有 4 個文件被更改,包括 20 次插入3 次删除
  1. +1
    -1
      app/models/account.rb
  2. +1
    -1
      app/models/tag.rb
  3. +8
    -1
      spec/models/account_spec.rb
  4. +10
    -0
      spec/models/tag_spec.rb

+ 1
- 1
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


+ 1
- 1
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



+ 8
- 1
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


+ 10
- 0
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

Loading…
取消
儲存