From 18424531faccd8375779d4b42abe63ce6377400b Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 24 Apr 2017 19:34:51 -0500 Subject: [PATCH] Merge mentions quote-stripping code into DText quote-stripping code. --- app/logical/d_text.rb | 12 +++++++++--- app/logical/mentionable.rb | 25 ++----------------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/app/logical/d_text.rb b/app/logical/d_text.rb index 1359a5a93..2a22293d6 100644 --- a/app/logical/d_text.rb +++ b/app/logical/d_text.rb @@ -13,10 +13,16 @@ class DText end def self.strip_blocks(string, tag) - blocks = string.scan(/\[\/?#{tag}\]|.+?(?=\[\/?#{tag}\]|$)/m) n = 0 stripped = "" - blocks.each do |block| + string = string.dup + + string.gsub!(/\s*\[#{tag}\](?!\])\s*/m, "\n\n[#{tag}]\n\n") + string.gsub!(/\s*\[\/#{tag}\]\s*/m, "\n\n[/#{tag}]\n\n") + string.gsub!(/(?:\r?\n){3,}/, "\n\n") + string.strip! + + string.split(/\n{2}/).each do |block| case block when "[#{tag}]" n += 1 @@ -26,7 +32,7 @@ class DText else if n == 0 - stripped += block + stripped << "#{block}\n\n" end end end diff --git a/app/logical/mentionable.rb b/app/logical/mentionable.rb index daf8f2374..c4e1306eb 100644 --- a/app/logical/mentionable.rb +++ b/app/logical/mentionable.rb @@ -16,31 +16,10 @@ module Mentionable end end - def strip_quote_blocks(str) - stripped = "" - str.gsub!(/\s*\[quote\](?!\])\s*/m, "\n\n[quote]\n\n") - str.gsub!(/\s*\[\/quote\]\s*/m, "\n\n[/quote]\n\n") - str.gsub!(/(?:\r?\n){3,}/, "\n\n") - str.strip! - nest = 0 - str.split(/\n{2}/).each do |block| - if block == "[quote]" - nest += 1 - - elsif block == "[/quote]" - nest -= 1 - - elsif nest == 0 - stripped << "#{block}\n" - end - end - - stripped - end - def queue_mention_messages from_id = read_attribute(self.class.mentionable_option(:user_field)) - text = strip_quote_blocks(read_attribute(self.class.mentionable_option(:message_field))) + text = read_attribute(self.class.mentionable_option(:message_field)) + text = DText.strip_blocks(text, "quote") names = text.scan(DText::MENTION_REGEXP).map do |mention| mention.gsub!(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "")