mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-11 15:52:21 -05:00
26 lines
674 B
Python
26 lines
674 B
Python
|
|
import re
|
||
|
|
import unicodedata
|
||
|
|
|
||
|
|
|
||
|
|
def make_string_safe(string, whitespace):
|
||
|
|
# strips accents, diacritics etc
|
||
|
|
string = "".join(
|
||
|
|
c
|
||
|
|
for c in unicodedata.normalize("NFD", string)
|
||
|
|
if unicodedata.category(c) != "Mn"
|
||
|
|
)
|
||
|
|
string = "".join(
|
||
|
|
word.lower() if word.isalnum() or word == whitespace else ""
|
||
|
|
for word in re.sub(r"\s+", whitespace, string.strip())
|
||
|
|
)
|
||
|
|
string = re.sub(r"\.{2,}", ".", string)
|
||
|
|
return string.strip(".")
|
||
|
|
|
||
|
|
|
||
|
|
def make_string_safe_for_email_local_part(string):
|
||
|
|
return make_string_safe(string, whitespace=".")
|
||
|
|
|
||
|
|
|
||
|
|
def make_string_safe_for_id(string):
|
||
|
|
return make_string_safe(string, whitespace="-")
|