FEATURE: automatically elides gmail quotes

This commit is contained in:
Régis Hanol
2018-02-26 23:54:02 +01:00
parent 26d5ae61dd
commit fd33090646
3 changed files with 39 additions and 3 deletions

View File

@ -261,9 +261,16 @@ module Email
end
markdown, elided_markdown = if html.present?
markdown = HtmlToMarkdown.new(html, keep_img_tags: true, keep_cid_imgs: true).to_markdown
markdown = trim_discourse_markers(markdown)
trim_reply_and_extract_elided(markdown)
if html[%{<div class="gmail_quote">}]
html, elided_html = extract_gmail_quote(html)
markdown = HtmlToMarkdown.new(html, keep_img_tags: true, keep_cid_imgs: true).to_markdown
elided_markdown = HtmlToMarkdown.new(elided_html).to_markdown
[markdown, elided_markdown]
else
markdown = HtmlToMarkdown.new(html, keep_img_tags: true, keep_cid_imgs: true).to_markdown
markdown = trim_discourse_markers(markdown)
trim_reply_and_extract_elided(markdown)
end
end
if text.blank? || (SiteSetting.incoming_email_prefer_html && markdown.present?)
@ -273,6 +280,12 @@ module Email
end
end
def extract_gmail_quote(html)
doc = Nokogiri::HTML.fragment(html)
elided = doc.css("div.gmail_quote")[0].remove
[doc.to_html, elided.to_html]
end
def trim_reply_and_extract_elided(text)
return [text, ""] if @opts[:skip_trimming]
EmailReplyTrimmer.trim(text, true)