# HG changeset patch # User Thierry Florac # Date 1574273670 -3600 # Node ID 712193992d46fc5c2f8a6a2175c6c63e17e8a913 # Parent 063ccbe396de38504b98c4572514a1e2025256a9 Updated function doctests diff -r 063ccbe396de -r 712193992d46 src/pyams_utils/url.py --- a/src/pyams_utils/url.py Wed Nov 20 19:14:09 2019 +0100 +++ b/src/pyams_utils/url.py Wed Nov 20 19:14:30 2019 +0100 @@ -28,7 +28,30 @@ """Generate an SEO-friendly content URL from it's title The original title is translated to remove accents, converted to lowercase, and words - shorter than three characters are removed; terms are joined by hyphens. + shorter than three characters (by default) are removed; terms are joined by hyphens. + + :param title: the input text + :param min_word_length: minimum length of words to keep + + >>> from pyams_utils.url import generate_url + >>> generate_url('This is my test') + 'this-is-my-test' + + Single letters are removed from generated URLs: + >>> generate_url('This word has a single a') + 'this-word-has-single' + + But you can define the minimum length of word: + >>> generate_url('This word has a single a', min_word_length=4) + 'this-word-single' + + If input text contains slashes, they are replaced with hyphens: + >>> generate_url('This string contains/slash') + 'this-string-contains-slash' + + Punctation and special characters are completely removed: + >>> generate_url('This is a string with a point. And why not?') + 'this-is-string-with-point-and-why-not' """ return '-'.join(filter(lambda x: len(x) >= min_word_length, translate_string(title.replace('/', '-'), escape_slashes=False,