Merge mentions quote-stripping code into DText quote-stripping code.

This commit is contained in:
evazion
2017-04-24 19:34:51 -05:00
parent 76eefd0ffe
commit 18424531fa
2 changed files with 11 additions and 26 deletions

View File

@@ -13,10 +13,16 @@ class DText
end end
def self.strip_blocks(string, tag) def self.strip_blocks(string, tag)
blocks = string.scan(/\[\/?#{tag}\]|.+?(?=\[\/?#{tag}\]|$)/m)
n = 0 n = 0
stripped = "" 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 case block
when "[#{tag}]" when "[#{tag}]"
n += 1 n += 1
@@ -26,7 +32,7 @@ class DText
else else
if n == 0 if n == 0
stripped += block stripped << "#{block}\n\n"
end end
end end
end end

View File

@@ -16,31 +16,10 @@ module Mentionable
end end
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 def queue_mention_messages
from_id = read_attribute(self.class.mentionable_option(:user_field)) 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| names = text.scan(DText::MENTION_REGEXP).map do |mention|
mention.gsub!(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "") mention.gsub!(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "")