diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-05 22:09:51 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-05 22:09:51 +0100 |
commit | 7bb28bf7804eadbaeac05e7adb8123a8fb6c5d02 (patch) | |
tree | 9bc9bf1fe93f36f169b903d930c69fbaf624ed1d | |
parent | 262adb9791f32162340cec23e3b571655225a3da (diff) |
Improve @mention regex
-rw-r--r-- | app/models/account.rb | 2 | ||||
-rw-r--r-- | app/services/process_hashtags_service.rb | 2 | ||||
-rw-r--r-- | spec/controllers/tags_controller_spec.rb | 4 |
3 files changed, 6 insertions, 2 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 9999f05dd..cb186b465 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -1,7 +1,7 @@ class Account < ApplicationRecord include Targetable - MENTION_RE = /(?:^|\s|\.|>)@([a-z0-9_]+(?:@[a-z0-9\.\-]+)?)/i + MENTION_RE = /(?:^|[\s\.>*+])@([a-z0-9_]+(?:@[a-z0-9\.\-]+)?)/i IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze # Local users diff --git a/app/services/process_hashtags_service.rb b/app/services/process_hashtags_service.rb index 8c68ce989..df30f73ae 100644 --- a/app/services/process_hashtags_service.rb +++ b/app/services/process_hashtags_service.rb @@ -4,7 +4,7 @@ class ProcessHashtagsService < BaseService tags = status.text.scan(Tag::HASHTAG_RE).map(&:first) end - tags.map(&:downcase).each do |tag| + tags.map(&:downcase).uniq.each do |tag| status.tags << Tag.where(name: tag).first_or_initialize(name: tag) end end diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index f433cf271..92e25e03b 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -3,6 +3,10 @@ require 'rails_helper' RSpec.describe TagsController, type: :controller do describe 'GET #show' do + before do + Fabricate(:tag, name: 'test') + end + it 'returns http success' do get :show, params: { id: 'test' } expect(response).to have_http_status(:success) |