Changeset 7770 for django/branches/newforms-admin/django/utils/html.py
- Timestamp:
- 06/26/08 10:42:33 (7 months ago)
- Files:
-
- django/branches/newforms-admin (modified) (1 prop)
- django/branches/newforms-admin/django/utils/html.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin
- Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7729 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7768
django/branches/newforms-admin/django/utils/html.py
r7707 r7770 77 77 Converts any URLs in text into clickable links. 78 78 79 Works on http://, https://, and www. links. Links can have trailing 80 punctuation (periods, commas, close-parens) and leading punctuation 81 (opening parens) and it'll still do the right thing. 79 Works on http://, https://, www. links and links ending in .org, .net or 80 .com. Links can have trailing punctuation (periods, commas, close-parens) 81 and leading punctuation (opening parens) and it'll still do the right 82 thing. 82 83 83 84 If trim_url_limit is not None, the URLs in link text longer than this limit … … 86 87 If nofollow is True, the URLs in link text will get a rel="nofollow" 87 88 attribute. 89 90 If autoescape is True, the link text and URLs will get autoescaped. 88 91 """ 89 if autoescape: 90 trim_url = lambda x, limit=trim_url_limit: conditional_escape(limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x) 91 else: 92 trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x 92 trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x 93 93 safe_input = isinstance(text, SafeData) 94 94 words = word_split_re.split(force_unicode(text)) … … 98 98 if match: 99 99 lead, middle, trail = match.groups() 100 if safe_input: 101 middle = mark_safe(middle) 102 if middle.startswith('www.') or ('@' not in middle and not (middle.startswith('http://') or middle.startswith('https://')) and \ 100 # Make URL we want to point to. 101 url = None 102 if middle.startswith('http://') or middle.startswith('https://'): 103 url = urlquote(middle, safe='/&=:;#?+*') 104 elif middle.startswith('www.') or ('@' not in middle and \ 103 105 len(middle) > 0 and middle[0] in string.ascii_letters + string.digits and \ 104 106 (middle.endswith('.org') or middle.endswith('.net') or middle.endswith('.com'))): 105 middle = 'http://%s' % middle 106 if middle.startswith('http://') or middle.startswith('https://'): 107 url = urlquote(middle, safe='/&=:;#?+*') 108 if autoescape and not safe_input: 109 url = escape(url) 110 trimmed_url = trim_url(middle) 111 middle = '<a href="%s"%s>%s</a>' % (url, nofollow_attr, 112 trimmed_url) 113 elif '@' in middle and not middle.startswith('www.') and \ 114 not ':' in middle and simple_email_re.match(middle): 115 if autoescape: 116 middle = conditional_escape(middle) 117 middle = '<a href="mailto:%s">%s</a>' % (middle, middle) 118 if lead + middle + trail != word: 107 url = urlquote('http://%s' % middle, safe='/&=:;#?+*') 108 elif '@' in middle and not ':' in middle and simple_email_re.match(middle): 109 url = 'mailto:%s' % middle 110 nofollow_attr = '' 111 # Make link. 112 if url: 113 trimmed = trim_url(middle) 119 114 if autoescape and not safe_input: 120 115 lead, trail = escape(lead), escape(trail) 116 url, trimmed = escape(url), escape(trimmed) 117 middle = '<a href="%s"%s>%s</a>' % (url, nofollow_attr, trimmed) 121 118 words[i] = mark_safe('%s%s%s' % (lead, middle, trail)) 122 elif autoescape and not safe_input: 123 words[i] = escape(word) 119 else: 120 if safe_input: 121 words[i] = mark_safe(word) 122 elif autoescape: 123 words[i] = escape(word) 124 124 elif safe_input: 125 125 words[i] = mark_safe(word)
