FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
hydrogram/hydrogram/parser/utils.py at dev · anandpsdev/hydrogram · GitHub
anandpsdev
/
hydrogram
Public
forked from
hydrogram/hydrogram
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
hydrogram
/
hydrogram
/
parser
/
utils.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
42 lines (34 loc) · 1.57 KB
Breadcrumbs
hydrogram
/
hydrogram
/
parser
/
utils.py
Copy path
File metadata and controls
42 lines (34 loc) · 1.57 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Hydrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2023 Dan <https://github.com/delivrance>
# Copyright (C) 2023-present Hydrogram <https://hydrogram.org>
#
# This file is part of Hydrogram.
#
# Hydrogram 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.
#
# Hydrogram 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 Hydrogram. If not, see <http://www.gnu.org/licenses/>.
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
(
"<HH"
,
match
.
group
().
encode
(
"utf-16le"
))),
text
,
)
def
remove_surrogates
(
text
):
# Replace each surrogate pair with a SMP code point
return
text
.
encode
(
"utf-16"
,
"surrogatepass"
).
decode
(
"utf-16"
)
def
replace_once
(
source
:
str
,
old
:
str
,
new
:
str
,
start
:
int
):
return
source
[:
start
]
+
source
[
start
:].
replace
(
old
,
new
,
1
)
Back
|
FazBrowse Home
|
New Git URL