about summary refs log tree commit diff
path: root/db/migrate/20190518150215_reformat_local_statuses.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20190518150215_reformat_local_statuses.rb')
-rw-r--r--db/migrate/20190518150215_reformat_local_statuses.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/db/migrate/20190518150215_reformat_local_statuses.rb b/db/migrate/20190518150215_reformat_local_statuses.rb
new file mode 100644
index 000000000..c9433a044
--- /dev/null
+++ b/db/migrate/20190518150215_reformat_local_statuses.rb
@@ -0,0 +1,19 @@
+class ReformatLocalStatuses < ActiveRecord::Migration[5.2]
+  disable_ddl_transaction!
+  def up
+    Status.local.without_reblogs.find_each do |status|
+      status.content_type = 'text/x-bbcode+markdown'
+      text = status.text
+      matches = text.match(/\[(right|rfloat)\][\u200c\u200b—–-]+ *(.*?)\[\/\1\]\u200c?\Z/)
+      if matches
+        status.footer = matches[2].strip
+        text = text.sub(/\[(right|rfloat)\][\u200c\u200b—–-]+.*?\[\/\1\]\u200c?\Z/, '').rstrip
+      end
+      text = text.gsub(/\[(color|colorhex|hexcolor)=\w+\](.*?)\[\/\1\]/, '[b]\2[/b]')
+      text = text.gsub(/\[(spin|pulse)\](.*?)\[\/\1\]/, '[b]\2[/b]')
+      status.text = text unless text.blank?
+      Rails.logger.info("Rewrote status ID #{status.id}")
+      status.save
+    end
+  end
+end