Skip to content

Commit af74b8a

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 af74b8a

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

pyrogram/parser/markdown.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,39 @@ 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.collapsed
222+
for blk_entity in entities
223+
if blk_entity.type == MessageEntityType.BLOCKQUOTE
224+
)
225+
if inside_blockquote:
226+
if is_expandable:
227+
if entity.language:
228+
open_delimiter = f"{delimiter}{entity.language}\n**>"
229+
else:
230+
open_delimiter = f"{delimiter}\n**>"
231+
close_delimiter = f"\n**>{delimiter}"
232+
else:
233+
if entity.language:
234+
open_delimiter = f"{delimiter}{entity.language}\n>"
235+
else:
236+
open_delimiter = f"{delimiter}\n>"
237+
close_delimiter = f"\n>{delimiter}"
238+
else:
239+
open_delimiter = delimiter
240+
close_delimiter = delimiter
241+
insert_at.append((s, i, open_delimiter))
242+
insert_at.append((e, -i, close_delimiter))
243+
elif entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
214244
open_delimiter = delimiter
215245
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'
222246
insert_at.append((s, i, open_delimiter))
223247
insert_at.append((e, -i, close_delimiter))
224248
else:

0 commit comments

Comments
 (0)