From c0f61fd40cc91c021e21a09039363fe6bafabde1 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Fri, 11 May 2018 13:37:49 +0200 Subject: [PATCH] Add html unparse --- pyrogram/client/style/html.py | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pyrogram/client/style/html.py b/pyrogram/client/style/html.py index 3b333c3b..63a80733 100644 --- a/pyrogram/client/style/html.py +++ b/pyrogram/client/style/html.py @@ -79,3 +79,41 @@ class HTML: message=utils.remove_surrogates(text), entities=entities ) + + def unparse(self, message: str, entities: list): + message = utils.add_surrogates(message).strip() + offset = 0 + + for entity in entities: + start = entity.offset + offset + type = entity.type + url = entity.url + user = entity.user + sub = message[start: start + entity.length] + + if type == "bold": + style = "b" + elif type == "italic": + style = "i" + elif type == "code": + style = "code" + elif type == "pre": + style = "pre" + elif type == "text_link": + offset += 15 + len(url) + message = message[:start] + message[start:].replace( + sub, "{}".format(url, sub), 1) + continue + elif type == "text_mention": + offset += 28 + len(str(user.id)) + message = message[:start] + message[start:].replace( + sub, "{}".format(user.id, sub), 1) + continue + else: + continue + + offset += len(style) * 2 + 5 + message = message[:start] + message[start:].replace( + sub, "<{0}>{1}".format(style, sub), 1) + + return utils.remove_surrogates(message)