From a0dccf7bc059fb5d963d5e8c0bbfd3a3c6efb3db Mon Sep 17 00:00:00 2001 From: riking Date: Fri, 5 Sep 2014 18:26:45 -0700 Subject: [PATCH] FIX: Add "On day, name wrote:" quote trigger for emails --- lib/email/html_cleaner.rb | 13 ++++++++++++- lib/email/receiver.rb | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/email/html_cleaner.rb b/lib/email/html_cleaner.rb index 19e4b41732..b4333ae91d 100644 --- a/lib/email/html_cleaner.rb +++ b/lib/email/html_cleaner.rb @@ -74,9 +74,20 @@ module Email private def add_newlines(doc) + # Replace
tags with a markdown \n doc.xpath('//br').each do |br| - br.replace(Nokogiri::XML::Text.new("\n", doc)) + br.replace(new_linebreak_node doc) end + # Surround

tags with newlines, to help with line-wise postprocessing + # and ensure markdown paragraphs + doc.xpath('//p').each do |p| + p.before(new_linebreak_node doc) + p.after(new_linebreak_node doc, 2) + end + end + + def new_linebreak_node(doc, count=1) + Nokogiri::XML::Text.new("\n" * count, doc) end def trim_process_node(node) diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index e9d09024cd..03094c3a3a 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -159,7 +159,8 @@ module Email (l =~ /via #{SiteSetting.title}(.*)\:$/) || # This one might be controversial but so many reply lines have years, times and end with a colon. # Let's try it and see how well it works. - (l =~ /\d{4}/ && l =~ /\d:\d\d/ && l =~ /\:$/) + (l =~ /\d{4}/ && l =~ /\d:\d\d/ && l =~ /\:$/) || + (l =~ /On \w+ \d+,? \d+,?.*wrote:/) # Headers on subsequent lines break if (0..2).all? { |off| lines[idx+off] =~ REPLYING_HEADER_REGEX }