diff options
-rw-r--r-- | Tools/faqwiz/faqmain.py | 38 |
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"><%s></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: |