mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2026-01-07 15:34:52 +00:00
pyrofork: parser: markdown: Check if PRE is inside blockquote before unparsing it
Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
parent
1108c52f53
commit
c4b587b493
1 changed files with 33 additions and 7 deletions
|
|
@ -210,15 +210,41 @@ class Markdown:
|
||||||
e = entity.offset + entity.length
|
e = entity.offset + entity.length
|
||||||
delimiter = delimiters.get(entity.type, None)
|
delimiter = delimiters.get(entity.type, None)
|
||||||
if delimiter:
|
if delimiter:
|
||||||
if entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
|
if entity.type == MessageEntityType.PRE:
|
||||||
|
inside_blockquote = any(
|
||||||
|
blk_entity.offset <= s < blk_entity.offset + blk_entity.length and
|
||||||
|
blk_entity.offset < e <= blk_entity.offset + blk_entity.length
|
||||||
|
for blk_entity in entities
|
||||||
|
if blk_entity.type == MessageEntityType.BLOCKQUOTE
|
||||||
|
)
|
||||||
|
is_expandable = any(
|
||||||
|
blk_entity.offset <= s < blk_entity.offset + blk_entity.length and
|
||||||
|
blk_entity.offset < e <= blk_entity.offset + blk_entity.length and
|
||||||
|
blk_entity.collapsed
|
||||||
|
for blk_entity in entities
|
||||||
|
if blk_entity.type == MessageEntityType.BLOCKQUOTE
|
||||||
|
)
|
||||||
|
if inside_blockquote:
|
||||||
|
if is_expandable:
|
||||||
|
if entity.language:
|
||||||
|
open_delimiter = f"{delimiter}{entity.language}\n**>"
|
||||||
|
else:
|
||||||
|
open_delimiter = f"{delimiter}\n**>"
|
||||||
|
close_delimiter = f"\n**>{delimiter}"
|
||||||
|
else:
|
||||||
|
if entity.language:
|
||||||
|
open_delimiter = f"{delimiter}{entity.language}\n>"
|
||||||
|
else:
|
||||||
|
open_delimiter = f"{delimiter}\n>"
|
||||||
|
close_delimiter = f"\n>{delimiter}"
|
||||||
|
else:
|
||||||
|
open_delimiter = delimiter
|
||||||
|
close_delimiter = delimiter
|
||||||
|
insert_at.append((s, i, open_delimiter))
|
||||||
|
insert_at.append((e, -i, close_delimiter))
|
||||||
|
elif entity.type != MessageEntityType.BLOCKQUOTE and entity.type != MessageEntityType.EXPANDABLE_BLOCKQUOTE:
|
||||||
open_delimiter = delimiter
|
open_delimiter = delimiter
|
||||||
close_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((s, i, open_delimiter))
|
||||||
insert_at.append((e, -i, close_delimiter))
|
insert_at.append((e, -i, close_delimiter))
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue