diff options
author | multiple creatures <dev@multiple-creature.party> | 2019-05-21 21:20:42 -0500 |
---|---|---|
committer | multiple creatures <dev@multiple-creature.party> | 2019-05-21 21:20:42 -0500 |
commit | dd7164aac2e26426dbc82f213aa30249aae5638b (patch) | |
tree | 8af48dc7204f71c0283974a4f9010bb68459299c /app | |
parent | 9abf1ce535f48fd641b8bfb5083d6086a5d5cb0d (diff) |
handle tags with the old `:` scope delimiter but translate those to `.`
Diffstat (limited to 'app')
-rw-r--r-- | app/lib/activitypub/activity/create.rb | 2 | ||||
-rw-r--r-- | app/models/tag.rb | 4 | ||||
-rw-r--r-- | app/services/process_hashtags_service.rb | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index a0cf03686..263dbbb87 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -179,7 +179,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity def process_hashtag(tag) return if tag['name'].blank? - hashtag = tag['name'].gsub(/\A#/, '').mb_chars.downcase + hashtag = tag['name'].gsub(/\A#/, '').gsub(':', '.').mb_chars.downcase return if !@options[:imported] && hashtag.starts_with?('self.', '_self.', 'local.', '_local.') diff --git a/app/models/tag.rb b/app/models/tag.rb index a6a1445a3..d3511a54e 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -19,7 +19,7 @@ class Tag < ApplicationRecord has_many :featured_tags, dependent: :destroy, inverse_of: :tag has_one :account_tag_stat, dependent: :destroy - HASHTAG_NAME_RE = '[[:word:]._\-]*[[:alpha:]._·\-][[:word:]._\-]*' + HASHTAG_NAME_RE = '[[:word:]:._\-]*[[:alpha:]:._·\-][[:word:]:._\-]*' HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i validates :name, presence: true, uniqueness: true, format: { with: /\A#{HASHTAG_NAME_RE}\z/i } @@ -82,7 +82,7 @@ class Tag < ApplicationRecord end def find_normalized(name) - find_by(name: name.mb_chars.gsub(':', '.').downcase.to_s) + find_by(name: name.gsub(':', '.').mb_chars.downcase.to_s) end def find_normalized!(name) diff --git a/app/services/process_hashtags_service.rb b/app/services/process_hashtags_service.rb index e8c2c95bb..07806b4a7 100644 --- a/app/services/process_hashtags_service.rb +++ b/app/services/process_hashtags_service.rb @@ -8,7 +8,7 @@ class ProcessHashtagsService < BaseService records = [] tags.map { |str| str.mb_chars.downcase }.uniq(&:to_s).each do |name| - name = name.gsub(/\.\.+/, '.') + name = name.gsub(/[:.]+/, '.') next if name.blank? component_indices = name.size.times.select {|i| name[i] == '.'} component_indices << name.size - 1 |