diff --git a/pyrogram/client/style/html.py b/pyrogram/client/style/html.py index 1748fa58..9376f793 100644 --- a/pyrogram/client/style/html.py +++ b/pyrogram/client/style/html.py @@ -20,11 +20,11 @@ import html import re from collections import OrderedDict from html.parser import HTMLParser +from struct import unpack import pyrogram from pyrogram.api import types from pyrogram.errors import PeerIdInvalid -from . import utils class Parser(HTMLParser): @@ -111,11 +111,28 @@ class Parser(HTMLParser): class HTML: + # SMP = Supplementary Multilingual Plane: https://en.wikipedia.org/wiki/Plane_(Unicode)#Overview + SMP_RE = re.compile(r"[\U00010000-\U0010FFFF]") + def __init__(self, client: "pyrogram.BaseClient" = None): self.client = client + @staticmethod + def add_surrogates(text): + # Replace each SMP code point with a surrogate pair + return HTML.SMP_RE.sub( + lambda match: # Split SMP in two surrogates + "".join(chr(i) for i in unpack(" -# -# This file is part of Pyrogram. -# -# Pyrogram is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Pyrogram is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with Pyrogram. If not, see . - -import re -from struct import unpack - -# SMP = Supplementary Multilingual Plane: https://en.wikipedia.org/wiki/Plane_(Unicode)#Overview -SMP_RE = re.compile(r"[\U00010000-\U0010FFFF]") - - -def add_surrogates(text): - # Replace each SMP code point with a surrogate pair - return SMP_RE.sub( - lambda match: # Split SMP in two surrogates - "".join(chr(i) for i in unpack("