hgbook
annotate it/web/genindex.py @ 994:c05663baf56b
merge with Bryan
author | Romain PELISSE <belaran@gmail.com> |
---|---|
date | Sat Sep 12 16:01:16 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\’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() |