diff options
author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 |
---|---|---|
committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 |
commit | 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch) | |
tree | b1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/faker/utils/text.py | |
parent | 4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff) |
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/utils/text.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/faker/utils/text.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/faker/utils/text.py b/venv/lib/python3.11/site-packages/faker/utils/text.py new file mode 100644 index 0000000..5083918 --- /dev/null +++ b/venv/lib/python3.11/site-packages/faker/utils/text.py @@ -0,0 +1,28 @@ +import re +import unicodedata + +from typing import Pattern + +_re_pattern: Pattern = re.compile(r"[^\w\s-]", flags=re.U) +_re_pattern_allow_dots: Pattern = re.compile(r"[^\.\w\s-]", flags=re.U) +_re_spaces: Pattern = re.compile(r"[-\s]+", flags=re.U) + + +def slugify(value: str, allow_dots: bool = False, allow_unicode: bool = False) -> str: + """ + Converts to lowercase, removes non-word characters (alphanumerics and + underscores) and converts spaces to hyphens. Also strips leading and + trailing whitespace. Modified to optionally allow dots. + + Adapted from Django 1.9 + """ + pattern: Pattern = _re_pattern_allow_dots if allow_dots else _re_pattern + + value = str(value) + if allow_unicode: + value = unicodedata.normalize("NFKC", value) + value = pattern.sub("", value).strip().lower() + return _re_spaces.sub("-", value) + value = unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii") + value = pattern.sub("", value).strip().lower() + return _re_spaces.sub("-", value) |