Skip to content

Commit 57479d3

Browse files
committed
pyrofork: parser: markdown: Check if PRE is inside blockquote before unparsing it
Signed-off-by: wulan17 <wulan17@nusantararom.org>
1 parent 2de6d80 commit 57479d3

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

pyrogram/parser/markdown.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,41 @@ def unparse(text: str, entities: list):
210210
e = entity.offset + entity.length
211211
delimiter = delimiters.get(entity.type, None)
212212
if delimiter:
213-
if entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
213+
if entity.type == MessageEntityType.PRE:
214+
inside_blockquote = any(
215+
blk_entity.offset <= s < blk_entity.offset + blk_entity.length and
216+
blk_entity.offset < e <= blk_entity.offset + blk_entity.length
217+
for blk_entity in entities
218+
if blk_entity.type == MessageEntityType.BLOCKQUOTE
219+
)
220+
is_expandable = any(
221+
blk_entity.offset <= s < blk_entity.offset + blk_entity.length and
222+
blk_entity.offset < e <= blk_entity.offset + blk_entity.length and
223+
blk_entity.collapsed
224+
for blk_entity in entities
225+
if blk_entity.type == MessageEntityType.BLOCKQUOTE
226+
)
227+
if inside_blockquote:
228+
if is_expandable:
229+
if entity.language:
230+
open_delimiter = f"{delimiter}{entity.language}\n**>"
231+
else:
232+
open_delimiter = f"{delimiter}\n**>"
233+
close_delimiter = f"\n**>{delimiter}"
234+
else:
235+
if entity.language:
236+
open_delimiter = f"{delimiter}{entity.language}\n>"
237+
else:
238+
open_delimiter = f"{delimiter}\n>"
239+
close_delimiter = f"\n>{delimiter}"
240+
else:
241+
open_delimiter = delimiter
242+
close_delimiter = delimiter
243+
insert_at.append((s, i, open_delimiter))
244+
insert_at.append((e, -i, close_delimiter))
245+
elif entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
214246
open_delimiter = delimiter
215247
close_delimiter = delimiter
216-
if entity.type == MessageEntityType.PRE:
217-
close_delimiter = '\n' + delimiter
218-
if entity.language:
219-
open_delimiter += entity.language + '\n'
220-
else:
221-
open_delimiter += '\n'
222248
insert_at.append((s, i, open_delimiter))
223249
insert_at.append((e, -i, close_delimiter))
224250
else:

0 commit comments

Comments
 (0)