human hand off
This commit is contained in:
parent
d0fee5c8f7
commit
7af776196a
34 changed files with 2941 additions and 195 deletions
|
|
@ -16,6 +16,7 @@ TEXT_QUOTE_MARKERS = [
|
|||
|
||||
PRIVATE_LEAK_MARKERS = [
|
||||
"human handoff",
|
||||
" · handoff · ",
|
||||
"a conversation needs your attention",
|
||||
"why this was handed off",
|
||||
"why you're receiving this",
|
||||
|
|
@ -37,11 +38,19 @@ def _normalize_newlines(text: str) -> str:
|
|||
class _ReplyHTMLTextParser(HTMLParser):
|
||||
BLOCK_TAGS = {"div", "p", "pre", "li", "ul", "ol", "table", "tr"}
|
||||
IGNORED_TAGS = {"script", "style", "iframe", "object"}
|
||||
QUOTE_CLASSES = {
|
||||
"gmail_attr",
|
||||
"gmail_quote",
|
||||
"protonmail_quote",
|
||||
"yahoo_quoted",
|
||||
"moz-cite-prefix",
|
||||
}
|
||||
|
||||
def __init__(self) -> None:
|
||||
super().__init__(convert_charrefs=True)
|
||||
self.parts: list[str] = []
|
||||
self.quote_depth = 0
|
||||
self.quote_tags: list[str] = []
|
||||
self.ignored_depth = 0
|
||||
self.at_line_start = True
|
||||
|
||||
|
|
@ -70,11 +79,19 @@ class _ReplyHTMLTextParser(HTMLParser):
|
|||
return
|
||||
if self.ignored_depth:
|
||||
return
|
||||
classes = {
|
||||
value
|
||||
for key, value in attrs
|
||||
if key.lower() == "class"
|
||||
for value in (value or "").split()
|
||||
}
|
||||
is_quote = tag == "blockquote" or bool(classes.intersection(self.QUOTE_CLASSES))
|
||||
if tag == "br":
|
||||
self._newline()
|
||||
elif tag == "blockquote":
|
||||
elif is_quote:
|
||||
self._newline()
|
||||
self.quote_depth += 1
|
||||
self.quote_tags.append(tag)
|
||||
elif tag in self.BLOCK_TAGS:
|
||||
self._newline()
|
||||
|
||||
|
|
@ -85,9 +102,10 @@ class _ReplyHTMLTextParser(HTMLParser):
|
|||
return
|
||||
if self.ignored_depth:
|
||||
return
|
||||
if tag == "blockquote":
|
||||
self._newline()
|
||||
if self.quote_tags and self.quote_tags[-1] == tag:
|
||||
self.quote_tags.pop()
|
||||
self.quote_depth = max(0, self.quote_depth - 1)
|
||||
self._newline()
|
||||
elif tag in self.BLOCK_TAGS:
|
||||
self._newline()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue