hgbook

annotate it/web/genindex.py @ 999:a6b81cd31cfd

adding complete.xml - which generated but Bryan did add it also - as I have absolutly no personnality I do as he does
author Romain PELISSE <belaran@gmail.com>
date Sat Sep 12 20:53:36 2009 +0200 (2009-09-12)
parents 713f0f69029a 84eb02cbf057
children
rev   line source
Giulio@747 1 # This script works with Python 3.0 or above
Giulio@722 2
Giulio@722 3 import glob, os, re
Giulio@722 4
gpiancastelli@860 5 chapter_re = re.compile(r'<(chapter|appendix|preface|bibliography)\s+id="([^"]+)">')
Giulio@722 6 filename_re = re.compile(r'<\?dbhtml filename="([^"]+)"\?>')
Giulio@722 7 title_re = re.compile(r'<title>(.*)</title>')
Giulio@722 8
Giulio@722 9 chapters = (sorted(glob.glob('../ch*.xml')) +
gpiancastelli@860 10 sorted(glob.glob('../app*.xml')) +
gpiancastelli@860 11 sorted(glob.glob('../biblio*.xml')))
Giulio@722 12
Giulio@776 13 fp = open('index-read.html.in', 'w', encoding='utf-8')
Giulio@722 14
Giulio@722 15 print('''
gpiancastelli@857 16 <div class="navheader"><h1 class="booktitle">Mercurial: la guida definitiva<div class="authors">di Bryan O\&#8217;Sullivan</div></h1></div>
Giulio@722 17 <div class="book"><ul class="booktoc">''', file=fp)
Giulio@722 18
Giulio@722 19 ch = 0
Giulio@722 20 app = 0
Giulio@722 21 ab = 0
Giulio@722 22 for c in chapters:
Giulio@722 23 filename = None
Giulio@722 24 title = None
Giulio@722 25 chapid = None
Giulio@722 26 chaptype = None
Giulio@776 27 for line in open(c, encoding='utf-8'):
Giulio@722 28 m = chapter_re.search(line)
Giulio@722 29 if m:
Giulio@722 30 chaptype, chapid = m.groups()
Giulio@722 31 m = filename_re.search(line)
Giulio@722 32 if m:
Giulio@722 33 filename = m.group(1)
Giulio@722 34 m = title_re.search(line)
Giulio@722 35 if m:
Giulio@722 36 title = m.group(1)
Giulio@722 37 if filename and title and chapid:
gpiancastelli@860 38 if chaptype == 'bibliography':
gpiancastelli@860 39 num = ''
gpiancastelli@860 40 elif chaptype == 'appendix':
gpiancastelli@860 41 num = str(chr(ord('A') + app)) + '. '
Giulio@722 42 app += 1
Giulio@722 43 else:
gpiancastelli@860 44 num = str(ch) + '. '
Giulio@722 45 ch += 1
gpiancastelli@863 46 if '&' in title:
gpiancastelli@857 47 title = title.replace('&', '\&')
Giulio@722 48 ab += 1
Giulio@722 49 date = os.popen('hg log -l1 --template "{date|isodate}" ' + c).read().split(None, 1)[0]
Giulio@722 50 args = {
Giulio@722 51 'ab': "ab"[ab % 2],
Giulio@722 52 'date': date,
gpiancastelli@863 53 # 'chapid': chapid,
Giulio@722 54 'num': num,
Giulio@722 55 'filename': filename,
Giulio@722 56 'title': title,
Giulio@722 57 }
gpiancastelli@860 58 print('<li class="zebra_%(ab)s"><span class="chapinfo">%(date)s</span>%(num)s<a href="%(filename)s">%(title)s</a></li>' % args, file=fp)
Giulio@722 59 break
Giulio@722 60
Giulio@722 61 print('</ul></div>', file=fp)
Giulio@722 62
Giulio@722 63 fp.close()