#!/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 = '<a href="%s">%s</a>' % (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, '<h2>Comments</h2>'
      print >> f, ''
   else: f = open(fn, 'a')

   print >> f, '<div class="comment">'
   for paragraph in paragraphs: 
      print >> f, '<p>%s</p>' % '\n'.join(paragraph)
      print >> f, ''
   print >> f, '<p>&#x2014;<cite>%s</cite>, ' % by
   print >> f, '%s</p>' % date
   print >> f, '</div>'
   print >> f, ''

if __name__=="__main__": 
   main()
