pyrofork: Add support for multi-line blockquote in markdown unparser

Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
wulan17 2025-03-02 23:40:45 +07:00
parent bec31032cc
commit 71c39b8e6f
No known key found for this signature in database
GPG key ID: 318CD6CD3A6AC0A5

View file

@ -210,16 +210,28 @@ class Markdown:
e = entity.offset + entity.length
delimiter = delimiters.get(entity.type, None)
if delimiter:
open_delimiter = delimiter
close_delimiter = delimiter
if entity.type == MessageEntityType.PRE:
close_delimiter = '\n' + delimiter
if entity.language:
open_delimiter += entity.language + '\n'
else:
open_delimiter += '\n'
insert_at.append((s, i, open_delimiter))
insert_at.append((e, -i, close_delimiter))
if entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
open_delimiter = delimiter
close_delimiter = delimiter
if entity.type == MessageEntityType.PRE:
close_delimiter = '\n' + delimiter
if entity.language:
open_delimiter += entity.language + '\n'
else:
open_delimiter += '\n'
insert_at.append((s, i, open_delimiter))
insert_at.append((e, -i, close_delimiter))
else:
# Handle multiline blockquotes
text_subset = text[s:e]
lines = text_subset.splitlines()
for line_num, line in enumerate(lines):
line_start = s + sum(len(l) + 1 for l in lines[:line_num])
if entity.collapsed:
insert_at.append((line_start, i, BLOCKQUOTE_EXPANDABLE_DELIM))
else:
insert_at.append((line_start, i, BLOCKQUOTE_DELIM))
# No closing delimiter for blockquotes
else:
url = None
if entity.type == MessageEntityType.TEXT_LINK: