summaryrefslogtreecommitdiffstats
path: root/Tools/faqwiz/faqmain.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-05-23 04:44:30 (GMT)
committerGuido van Rossum <guido@python.org>1997-05-23 04:44:30 (GMT)
commit5527db5b761cb14c0b0a46565b0cf2b52742285a (patch)
treeb24e26ff23e089b11d4954a24e73cbc6f016084d /Tools/faqwiz/faqmain.py
parent821a558f3946c64349b53da859953cfe3a6af0ce (diff)
downloadcpython-5527db5b761cb14c0b0a46565b0cf2b52742285a.zip
cpython-5527db5b761cb14c0b0a46565b0cf2b52742285a.tar.gz
cpython-5527db5b761cb14c0b0a46565b0cf2b52742285a.tar.bz2
Added code to recognize http/ftp URLs and email addresses, and add <A>
tags for them.
Diffstat (limited to 'Tools/faqwiz/faqmain.py')
-rw-r--r--Tools/faqwiz/faqmain.py38
1 files 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 <A> 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 '<P>'
else:
- if line == string.lstrip(line): # I.e., no leading whitespace
+ if line[0] not in string.whitespace:
if pre:
print '</PRE>'
pre = 0
@@ -590,7 +588,7 @@ class FAQServer:
if not pre:
print '<PRE>'
pre = 1
- print cgi.escape(line)
+ print self.translate(line)
if pre:
print '</PRE>'
pre = 0
@@ -658,6 +656,38 @@ class FAQServer:
</HTML>
'''
+ 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 = '<A HREF="%s">%s</A>' % (url, url)
+ else:
+ repl = '<A HREF="mailto:%s">&lt;%s&gt;</A>' % (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: