Fixed sorting of markup entities with the same offsets (#4201)

This commit is contained in:
Alexander Goryushkin
2023-09-14 18:52:04 +02:00
committed by GitHub
parent 7325718f0e
commit ad19987cd6
2 changed files with 12 additions and 12 deletions
+5 -5
View File
@@ -167,21 +167,21 @@ def unparse(text: str, entities: Iterable[TypeMessageEntity]) -> str:
text = add_surrogate(text)
insert_at = []
for entity in entities:
for i, entity in enumerate(entities):
s = entity.offset
e = entity.offset + entity.length
delimiter = ENTITY_TO_FORMATTER.get(type(entity), None)
if delimiter:
if callable(delimiter):
delimiter = delimiter(entity, text[s:e])
insert_at.append((s, delimiter[0]))
insert_at.append((e, delimiter[1]))
insert_at.append((s, i, delimiter[0]))
insert_at.append((e, len(entities) - i, delimiter[1]))
insert_at.sort(key=lambda t: t[0])
insert_at.sort(key=lambda t: (t[0], t[1]))
next_escape_bound = len(text)
while insert_at:
# Same logic as markdown.py
at, what = insert_at.pop()
at, _, what = insert_at.pop()
while within_surrogate(text, at):
at += 1