From 91f11108af950d04293de61475d6ba1c1d2ad2a8 Mon Sep 17 00:00:00 2001 From: kibigo! Date: Fri, 11 Nov 2022 15:49:00 -0800 Subject: [PATCH] Give internal ``s contents MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These aren’t used by the entity formatter, but they provide a better fallback behaviour if the entity is ever stripped prior to formatting (for example, because it is used inside of an inline spoiler). --- app/lib/advanced_text_formatter.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb index c8c6e1d01..bcbe3f5d9 100644 --- a/app/lib/advanced_text_formatter.rb +++ b/app/lib/advanced_text_formatter.rb @@ -81,7 +81,9 @@ class AdvancedTextFormatter < TextFormatter extract_url_without_protocol: false ) do |entity| # Iterate over entities in this text node. - advance = entity[:indices].first - processed_index + entity_start = entity[:indices].first + entity_end = entity[:indices].last + advance = entity_start - processed_index if advance.positive? # Text node for content which precedes entity. replacement << Nokogiri::XML::Text.new( @@ -100,8 +102,12 @@ class AdvancedTextFormatter < TextFormatter elt['kind'] = 'mention' elt['value'] = entity[:screen_name] end + elt << Nokogiri::XML::Text.new( + content[entity_start, entity_end - entity_start], + document + ) replacement << elt - processed_index = entity[:indices].last + processed_index = entity_end end if processed_index < content.size # Text node for remaining content. -- 2.47.3