hgbook
annotate en/fblinks @ 18:e6f4088ebe52
Generate a PDF file with a feedback link on each paragraph.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue Jul 04 16:41:31 2006 -0700 (2006-07-04) |
parents | |
children | ce3339dbeb6f |
rev | line source |
---|---|
bos@18 | 1 #!/usr/bin/python |
bos@18 | 2 |
bos@18 | 3 import errno |
bos@18 | 4 import os |
bos@18 | 5 import re |
bos@18 | 6 import sys |
bos@18 | 7 |
bos@18 | 8 hg_id = sys.argv[1][:12] |
bos@18 | 9 |
bos@18 | 10 dest_dir = sys.argv[2] |
bos@18 | 11 |
bos@18 | 12 empty_re = re.compile('^\s*$') |
bos@18 | 13 line_re = re.compile('^(\w+)(.*)') |
bos@18 | 14 |
bos@18 | 15 try: |
bos@18 | 16 os.makedirs(dest_dir) |
bos@18 | 17 except OSError, err: |
bos@18 | 18 if err.errno != errno.EEXIST: |
bos@18 | 19 raise |
bos@18 | 20 |
bos@18 | 21 def feedback(name, text, line): |
bos@18 | 22 return r'\marginpar{\scriptsize \href{http://www.sourcecontrol.org/book/feedback.cgi?id=%s&file=%s&line=%d}{Feedback?}}' % (hg_id, name, line) |
bos@18 | 23 |
bos@18 | 24 for name in sys.argv[3:]: |
bos@18 | 25 if not name.endswith('.tex'): |
bos@18 | 26 continue |
bos@18 | 27 dest_name = os.path.join(dest_dir, name) |
bos@18 | 28 ifp = open(name) |
bos@18 | 29 ofp = open(dest_name, 'w') |
bos@18 | 30 new_par = True |
bos@18 | 31 line_num = 0 |
bos@18 | 32 for line in ifp: |
bos@18 | 33 line_num += 1 |
bos@18 | 34 if new_par: |
bos@18 | 35 m = line_re.match(line) |
bos@18 | 36 if m: |
bos@18 | 37 line = m.group(1) + feedback(name, line, line_num) + m.group(2) |
bos@18 | 38 new_par = False |
bos@18 | 39 elif not line.strip(): |
bos@18 | 40 new_par = True |
bos@18 | 41 ofp.write(line) |