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)