hgbook
diff 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 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/en/fblinks Tue Jul 04 16:41:31 2006 -0700 1.3 @@ -0,0 +1,41 @@ 1.4 +#!/usr/bin/python 1.5 + 1.6 +import errno 1.7 +import os 1.8 +import re 1.9 +import sys 1.10 + 1.11 +hg_id = sys.argv[1][:12] 1.12 + 1.13 +dest_dir = sys.argv[2] 1.14 + 1.15 +empty_re = re.compile('^\s*$') 1.16 +line_re = re.compile('^(\w+)(.*)') 1.17 + 1.18 +try: 1.19 + os.makedirs(dest_dir) 1.20 +except OSError, err: 1.21 + if err.errno != errno.EEXIST: 1.22 + raise 1.23 + 1.24 +def feedback(name, text, line): 1.25 + return r'\marginpar{\scriptsize \href{http://www.sourcecontrol.org/book/feedback.cgi?id=%s&file=%s&line=%d}{Feedback?}}' % (hg_id, name, line) 1.26 + 1.27 +for name in sys.argv[3:]: 1.28 + if not name.endswith('.tex'): 1.29 + continue 1.30 + dest_name = os.path.join(dest_dir, name) 1.31 + ifp = open(name) 1.32 + ofp = open(dest_name, 'w') 1.33 + new_par = True 1.34 + line_num = 0 1.35 + for line in ifp: 1.36 + line_num += 1 1.37 + if new_par: 1.38 + m = line_re.match(line) 1.39 + if m: 1.40 + line = m.group(1) + feedback(name, line, line_num) + m.group(2) 1.41 + new_par = False 1.42 + elif not line.strip(): 1.43 + new_par = True 1.44 + ofp.write(line)