#!/usr/bin/env python """ feedback - File a Comment on What Planet is This? Author: Sean B. Palmer, inamidst.com """ import sys, os.path, re, cgi r_from = re.compile(r'"?([^"]+?)"? <([^>]+)>') people = {'cowan' + '@' + 'ccil\x2eorg': ('John Cowan', 'http://www.ccil.org/~cowan'), 'sbp' + '@' + 'miscoranda\x2ecom': ("L'auteur", 'http://inamidst.com/sbp/') } def main(): # Parse the header for header in sys.stdin: if ': ' in header: header = header.rstrip('\r\n') name, value = header.split(': ', 1) if name.lower() == 'from': homepage = False if '<' in value: fullname, email = r_from.search(value).groups() else: email = value if people.has_key(email): fullname, homepage = people[email] if homepage: by = '%s' % (homepage, fullname) else: by = fullname elif name.lower() == 'date': date = value elif name.lower() == 'referrer': filename = value.split('/')[-1] if not header.strip(): break # Parse the body paragraphs = [[]] for line in sys.stdin: line = line.rstrip('\r\n') if line.strip(): paragraphs[-1].append(cgi.escape(line)) else: paragraphs.append([]) fn = filename + '-annotations.html' if not os.path.exists(fn): f = open(fn, 'w') print >> f, '

Comments

' print >> f, '' else: f = open(fn, 'a') print >> f, '
' for paragraph in paragraphs: print >> f, '

%s

' % '\n'.join(paragraph) print >> f, '' print >> f, '

—%s, ' % by print >> f, '%s

' % date print >> f, '
' print >> f, '' if __name__=="__main__": main()