#! /usr/bin/env python """Convert the plain text FAQ file to its .ht template. """ import sys import os import re def main(): faqfile = sys.argv[1] fp = open(faqfile) lines = fp.readlines() fp.close() outfile = sys.argv[2] if outfile == '-': closep = 0 out = sys.stdout else: closep = 1 out = open(outfile, 'w') # skip over cruft in FAQ file lineno = 0 while not lines[lineno].startswith('FREQUENTLY'): lineno += 1 lineno += 1 # skip blanks while not lines[lineno].strip(): lineno += 1 # first print out standard .ht boilerplate print >> out, '''\ Title: Mailman Frequently Asked Questions See also the Mailman FAQ Wizard for more information.

Mailman Frequently Asked Questions

''' first = 1 question = [] answer = [] faq = [] while 1: line = lines[lineno][:-1] if line.startswith('Q.'): inquestion = 1 if not first: faq.append((question, answer)) question = [] answer = [] else: first = 0 elif line.startswith('A.'): inquestion = 0 elif line.startswith('\f'): break if inquestion: question.append(line) else: # watch for lists if line.lstrip().startswith('*'): answer.append('
  • ') line = line.replace('*', '', 1) # substitute <...> line = re.sub(r'<(?P[^>]+)>', '\g', line) # make links active line = re.sub(r'(?Phttp://\S+)', '\g', line) answer.append(line) lineno += 1 faq.append((question, answer)) for question, answer in faq: print >> out, '', for line in question: print >> out, line print >> out, '
    ', for line in answer: if not line: print >> out, '

    ', else: print >> out, line if closep: out.close() if __name__ == '__main__': main()