mirror of
https://github.com/django/django.git
synced 2025-06-05 11:39:13 +00:00
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
This commit is contained in:
parent
67eeb72e26
commit
c09351aec6
@ -94,7 +94,9 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
|
|||||||
words = word_split_re.split(force_unicode(text))
|
words = word_split_re.split(force_unicode(text))
|
||||||
nofollow_attr = nofollow and ' rel="nofollow"' or ''
|
nofollow_attr = nofollow and ' rel="nofollow"' or ''
|
||||||
for i, word in enumerate(words):
|
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:
|
if match:
|
||||||
lead, middle, trail = match.groups()
|
lead, middle, trail = match.groups()
|
||||||
# Make URL we want to point to.
|
# 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://'):
|
if middle.startswith('http://') or middle.startswith('https://'):
|
||||||
url = urlquote(middle, safe='/&=:;#?+*')
|
url = urlquote(middle, safe='/&=:;#?+*')
|
||||||
elif middle.startswith('www.') or ('@' not in middle and \
|
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'))):
|
(middle.endswith('.org') or middle.endswith('.net') or middle.endswith('.com'))):
|
||||||
url = urlquote('http://%s' % middle, safe='/&=:;#?+*')
|
url = urlquote('http://%s' % middle, safe='/&=:;#?+*')
|
||||||
elif '@' in middle and not ':' in middle and simple_email_re.match(middle):
|
elif '@' in middle and not ':' in middle and simple_email_re.match(middle):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user