From c09351aec63f004f89befa4752b386f2a2a3a63c Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 19 Jul 2008 18:05:22 +0000 Subject: [PATCH] Fixed #6965 -- Sped up the urlize and urlizetrunc filters. A nice patch from Andrew Badr. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7985 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/utils/html.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django/utils/html.py b/django/utils/html.py index 747af52879..9b3fad8b03 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -94,7 +94,9 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): words = word_split_re.split(force_unicode(text)) nofollow_attr = nofollow and ' rel="nofollow"' or '' for i, word in enumerate(words): - match = punctuation_re.match(word) + match = None + if '.' in word or '@' in word or ':' in word: + match = punctuation_re.match(word) if match: lead, middle, trail = match.groups() # Make URL we want to point to. @@ -102,7 +104,7 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): if middle.startswith('http://') or middle.startswith('https://'): url = urlquote(middle, safe='/&=:;#?+*') elif middle.startswith('www.') or ('@' not in middle and \ - len(middle) > 0 and middle[0] in string.ascii_letters + string.digits and \ + middle and middle[0] in string.ascii_letters + string.digits and \ (middle.endswith('.org') or middle.endswith('.net') or middle.endswith('.com'))): url = urlquote('http://%s' % middle, safe='/&=:;#?+*') elif '@' in middle and not ':' in middle and simple_email_re.match(middle):