29 lines
858 B
Python
29 lines
858 B
Python
import re
|
|
import unicodedata
|
|
|
|
|
|
def indent(string, places=4, linebreak="\n", singles=False):
|
|
lines = string.split(linebreak)
|
|
if not singles and len(lines) == 1:
|
|
return string
|
|
for i, line in enumerate(lines):
|
|
lines[i] = " " * places + line
|
|
result = linebreak.join(lines)
|
|
if not singles:
|
|
result = linebreak + result
|
|
return result
|
|
|
|
|
|
def slugify(value):
|
|
"""
|
|
Converts to lowercase, removes non-word characters (alphanumerics and
|
|
underscores) and converts spaces to hyphens. Also strips leading and
|
|
trailing whitespace.
|
|
|
|
This function is based on Django's slugify implementation.
|
|
"""
|
|
value = unicodedata.normalize("NFKD", value)
|
|
value = value.encode("ascii", "ignore").decode("ascii")
|
|
value = re.sub(r"[^\w\s-]", "", value).strip().lower()
|
|
return re.sub(r"[-\s]+", "-", value)
|