hgbook

diff en/fblinks @ 21:ce3339dbeb6f

Get beta feedback stuff into better shape.
author Bryan O'Sullivan <bos@serpentine.com>
date Wed Jul 05 00:14:15 2006 -0700 (2006-07-05)
parents e6f4088ebe52
children 9457add294b8
line diff
     1.1 --- a/en/fblinks	Tue Jul 04 16:41:31 2006 -0700
     1.2 +++ b/en/fblinks	Wed Jul 05 00:14:15 2006 -0700
     1.3 @@ -5,12 +5,12 @@
     1.4  import re
     1.5  import sys
     1.6  
     1.7 -hg_id = sys.argv[1][:12]
     1.8 +hg_id = sys.argv[1]
     1.9  
    1.10  dest_dir = sys.argv[2]
    1.11  
    1.12 -empty_re = re.compile('^\s*$')
    1.13 -line_re = re.compile('^(\w+)(.*)')
    1.14 +empty_re = re.compile(r'^\s*$')
    1.15 +line_re = re.compile(r'^(\w+)(.*)')
    1.16  
    1.17  try:
    1.18      os.makedirs(dest_dir)
    1.19 @@ -19,7 +19,19 @@
    1.20          raise
    1.21  
    1.22  def feedback(name, text, line):
    1.23 -    return r'\marginpar{\scriptsize \href{http://www.sourcecontrol.org/book/feedback.cgi?id=%s&file=%s&line=%d}{Feedback?}}' % (hg_id, name, line)
    1.24 +    return r'\marginpar{\scriptsize \href{http://demesne:8000/book/feedback/submit/%s/%s/%d/}{Feedback}}' % (hg_id, name, line)
    1.25 +
    1.26 +ctxs = {}
    1.27 +try:
    1.28 +    cfp = open(os.path.join(dest_dir, 'rev-' + hg_id + '.ctx'), 'r+')
    1.29 +    for line in cfp:
    1.30 +        f, l, c = line.split(':', 2)
    1.31 +        ctxs[(f, int(l))] = c.strip()
    1.32 +except IOError, err:
    1.33 +    if err.errno != errno.ENOENT: raise
    1.34 +    cfp = open(os.path.join(dest_dir, 'rev-' + hg_id + '.ctx'), 'w+')
    1.35 +
    1.36 +changes = 0
    1.37  
    1.38  for name in sys.argv[3:]:
    1.39      if not name.endswith('.tex'):
    1.40 @@ -34,8 +46,20 @@
    1.41          if new_par:
    1.42              m = line_re.match(line)
    1.43              if m:
    1.44 +                ls = line.strip()
    1.45 +                if ctxs.get((name, line_num)) != ls:
    1.46 +                    ctxs[(name, line_num)] = ls
    1.47 +                    changes += 1
    1.48                  line = m.group(1) + feedback(name, line, line_num) + m.group(2)
    1.49                  new_par = False
    1.50          elif not line.strip():
    1.51              new_par = True
    1.52          ofp.write(line)
    1.53 +
    1.54 +if changes:
    1.55 +    cfp.seek(0)
    1.56 +    print '%s: %d changes' % (cfp.name, changes)
    1.57 +    ctxs = ctxs.items()
    1.58 +    ctxs.sort()
    1.59 +    for ((file, line), content) in ctxs:
    1.60 +        cfp.write('%s:%d: %s\n' % (file, line, content))