Files
notifications-api/notifications_utils/safe_string.py

26 lines
674 B
Python
Raw Normal View History

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="-")