From b34412dd9cc9ec36a46c0ef6fd2ef143fbba116f Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Thu, 14 Dec 2023 22:40:13 +0000 Subject: [PATCH] Support
in HTML. --- text.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/text.py b/text.py index b75cac0..2b8b627 100644 --- a/text.py +++ b/text.py @@ -461,6 +461,11 @@ class HTMLParser(html.parser.HTMLParser): self.paras = [Paragraph()] self.colourstack = [' '] self.bad_tags = set() + self.indent = 0 + + def new_para(self): + return (Paragraph() if self.indent == 0 + else IndentedParagraph(self.indent, self.indent)) def handle_starttag(self, tag, attrs): attrdict = dict(attrs) @@ -479,11 +484,16 @@ class HTMLParser(html.parser.HTMLParser): if tag == "p": if not self.paras[-1].empty(): self.paras.append(Paragraph()) - self.paras.append(Paragraph()) + self.paras.append(self.new_para()) return if tag == "br": - self.paras.append(Paragraph()) + self.paras.append(self.new_para()) + return + + if tag == "blockquote": + self.indent += 2 + self.paras.append(self.new_para()) return if tag == "code": @@ -510,8 +520,15 @@ class HTMLParser(html.parser.HTMLParser): return if tag == "p": + if not self.paras[-1].empty(): + self.paras.append(self.new_para()) + return + + if tag == "blockquote": if not self.paras[-1].empty(): self.paras.append(Paragraph()) + self.indent -= 2 + self.paras.append(self.new_para()) return if tag in {"a", "code", "strong", "em", "i"}: -- 2.30.2