From cefa526c6d3a45df2d0fcb7643ced828e2e87dea Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 26 Mar 2022 02:53:34 +0100 Subject: Refactor formatter (#17828) * Refactor formatter * Move custom emoji pre-rendering logic to view helpers * Move more methods out of Formatter * Fix code style issues * Remove Formatter * Add inline poll options to RSS feeds * Remove unused helper method * Fix code style issues * Various fixes and improvements * Fix test --- app/serializers/activitypub/actor_serializer.rb | 7 +++++-- app/serializers/activitypub/note_serializer.rb | 6 ++++-- app/serializers/rest/account_serializer.rb | 7 +++++-- app/serializers/rest/announcement_serializer.rb | 4 +++- app/serializers/rest/status_edit_serializer.rb | 4 +++- app/serializers/rest/status_serializer.rb | 4 +++- 6 files changed, 23 insertions(+), 9 deletions(-) (limited to 'app/serializers') diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb index 48707aa16..bd1648348 100644 --- a/app/serializers/activitypub/actor_serializer.rb +++ b/app/serializers/activitypub/actor_serializer.rb @@ -2,6 +2,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer include RoutingHelper + include FormattingHelper context :security @@ -102,7 +103,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer end def summary - object.suspended? ? '' : Formatter.instance.simplified_format(object) + object.suspended? ? '' : html_aware_format(object.note, object.local?) end def icon @@ -185,6 +186,8 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer end class Account::FieldSerializer < ActivityPub::Serializer + include FormattingHelper + attributes :type, :name, :value def type @@ -192,7 +195,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer end def value - Formatter.instance.format_field(object.account, object.value) + html_aware_format(object.value, object.account.value?, with_rel_me: true, with_domains: true, multiline: false) end end diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb index 7be2e2647..27e058199 100644 --- a/app/serializers/activitypub/note_serializer.rb +++ b/app/serializers/activitypub/note_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::NoteSerializer < ActivityPub::Serializer + include FormattingHelper + context_extensions :atom_uri, :conversation, :sensitive, :voters_count attributes :id, :type, :summary, @@ -39,11 +41,11 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer end def content - Formatter.instance.format(object) + status_content_format(object) end def content_map - { object.language => Formatter.instance.format(object) } + { object.language => content } end def replies diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index a78ec4507..2f67e06b2 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -2,6 +2,7 @@ class REST::AccountSerializer < ActiveModel::Serializer include RoutingHelper + include FormattingHelper attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at, :note, :url, :avatar, :avatar_static, :header, :header_static, @@ -14,10 +15,12 @@ class REST::AccountSerializer < ActiveModel::Serializer attribute :suspended, if: :suspended? class FieldSerializer < ActiveModel::Serializer + include FormattingHelper + attributes :name, :value, :verified_at def value - Formatter.instance.format_field(object.account, object.value) + html_aware_format(object.value, object.account.local?, with_rel_me: true, with_domains: true, multiline: false) end end @@ -32,7 +35,7 @@ class REST::AccountSerializer < ActiveModel::Serializer end def note - object.suspended? ? '' : Formatter.instance.simplified_format(object) + object.suspended? ? '' : html_aware_format(object.note, object.local?) end def url diff --git a/app/serializers/rest/announcement_serializer.rb b/app/serializers/rest/announcement_serializer.rb index 9343b97d2..23b2fa514 100644 --- a/app/serializers/rest/announcement_serializer.rb +++ b/app/serializers/rest/announcement_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class REST::AnnouncementSerializer < ActiveModel::Serializer + include FormattingHelper + attributes :id, :content, :starts_at, :ends_at, :all_day, :published_at, :updated_at @@ -25,7 +27,7 @@ class REST::AnnouncementSerializer < ActiveModel::Serializer end def content - Formatter.instance.linkify(object.text) + linkify(object.text) end def reactions diff --git a/app/serializers/rest/status_edit_serializer.rb b/app/serializers/rest/status_edit_serializer.rb index 05ccd5e94..f7a48797d 100644 --- a/app/serializers/rest/status_edit_serializer.rb +++ b/app/serializers/rest/status_edit_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class REST::StatusEditSerializer < ActiveModel::Serializer + include FormattingHelper + has_one :account, serializer: REST::AccountSerializer attributes :content, :spoiler_text, :sensitive, :created_at @@ -11,7 +13,7 @@ class REST::StatusEditSerializer < ActiveModel::Serializer attribute :poll, if: -> { object.poll_options.present? } def content - Formatter.instance.format(object) + status_content_format(object) end def poll diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 7c3dd673e..32c4e405e 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class REST::StatusSerializer < ActiveModel::Serializer + include FormattingHelper + attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id, :sensitive, :spoiler_text, :visibility, :language, :uri, :url, :replies_count, :reblogs_count, @@ -71,7 +73,7 @@ class REST::StatusSerializer < ActiveModel::Serializer end def content - Formatter.instance.format(object) + status_content_format(object) end def url -- cgit