about summary refs log tree commit diff
path: root/app/models
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-04-02 17:11:05 -0500
committermultiple creatures <dev@multiple-creature.party>2019-05-21 03:16:21 -0500
commitb507a598c50676ac4b1ba0bbe483819ec33c5a6e (patch)
treeb1a23398bb0d5aec4d6c71a61757db1f10fb37ed /app/models
parent01acaa792ad23d244a2ea8acfeaa4c0ffba4ffb1 (diff)
add bangtags to reply-all thead, insert zws; handle fencing in braces
Diffstat (limited to 'app/models')
-rw-r--r--app/models/status.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/app/models/status.rb b/app/models/status.rb
index 37ceb1a9c..dcf53a5ea 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -570,8 +570,9 @@ class Status < ApplicationRecord
     return if text&.nil?
     return unless '#!'.in?(text)
     chunks = []
-    text.split(/(#![\w:]+)/).each do |chunk|
+    text.split(/(#!(?:[\w:-]+|{[\w:-]+}))/).each do |chunk|
       if chunk.start_with?("#!")
+        chunk.sub!(/{(.*)}$/, '\1')
         case chunk[2..-1].downcase
         when 'permalink'
           chunks << TagManager.instance.url_for(self)
@@ -593,6 +594,15 @@ class Status < ApplicationRecord
           mentions.uniq!
           mentions.sort!
           chunks << mentions.join(' ')
+        when 'thread:reall'
+          if conversation_id.present?
+            mention_ids = Status.where(conversation_id: conversation_id).flat_map { |s| s.mentions.pluck(:account_id) }
+            mention_ids.uniq!
+            mentions = Account.where(id: mention_ids).map { |a| "@#{a.username}" }
+            chunks << mentions.join(' ')
+          end
+        when 'char:zws'
+          chunks << "\u200c"
         else
           chunks << chunk
         end