From 5527db5b761cb14c0b0a46565b0cf2b52742285a Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 23 May 1997 04:44:30 +0000 Subject: Added code to recognize http/ftp URLs and email addresses, and add tags for them. --- Tools/faqwiz/faqmain.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/Tools/faqwiz/faqmain.py b/Tools/faqwiz/faqmain.py index 6e00acf..d105d2c 100644 --- a/Tools/faqwiz/faqmain.py +++ b/Tools/faqwiz/faqmain.py @@ -9,8 +9,6 @@ XXX TO DO - next/prev/index links in do_show? - should have files containing section headers - customize rcs command pathnames -- recognize urls and email addresses and turn them into tags -- use cookies to keep Name/email the same - explanation of editing somewhere - various embellishments, GIFs, crosslinks, hints, etc. - create new sections @@ -582,7 +580,7 @@ class FAQServer: else: print '

' else: - if line == string.lstrip(line): # I.e., no leading whitespace + if line[0] not in string.whitespace: if pre: print '' pre = 0 @@ -590,7 +588,7 @@ class FAQServer: if not pre: print '

'
 			pre = 1
-		print cgi.escape(line)
+		print self.translate(line)
 	if pre:
 	    print '
' pre = 0 @@ -658,6 +656,38 @@ class FAQServer: ''' + translate_prog = None + + def translate(self, text): + if not self.translate_prog: + import regex + url = '\(http\|ftp\)://[^ \t\r\n]*' + email = '\<[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+' + self.translate_prog = prog = regex.compile(url + "\|" + email) + else: + prog = self.translate_prog + i = 0 + list = [] + while 1: + j = prog.search(text, i) + if j < 0: + break + list.append(cgi.escape(text[i:j])) + i = j + url = prog.group(0) + while url[-1] in ");:,.?": + url = url[:-1] + url = cgi.escape(url) + if ':' in url: + repl = '
%s' % (url, url) + else: + repl = '<%s>' % (url, url) + list.append(repl) + i = i + len(url) + j = len(text) + list.append(cgi.escape(text[i:j])) + return string.join(list, '') + print "Content-type: text/html" dt = 0 try: -- cgit v0.12