hgbook

annotate it/web/genindex.py @ 976:713f0f69029a

merge with Italian, and very (few) work on ch03
author Romain PELISSE <belaran@gmail.com>
date Fri Sep 04 16:33:35 2009 +0200 (2009-09-04)
parents
children 719b03ea27c8
rev   line source
belaran@976 1 # This script works with Python 3.0 or above
belaran@976 2
belaran@976 3 import glob, os, re
belaran@976 4
belaran@976 5 chapter_re = re.compile(r'<(chapter|appendix|preface|bibliography)\s+id="([^"]+)">')
belaran@976 6 filename_re = re.compile(r'<\?dbhtml filename="([^"]+)"\?>')
belaran@976 7 title_re = re.compile(r'<title>(.*)</title>')
belaran@976 8
belaran@976 9 chapters = (sorted(glob.glob('../ch*.xml')) +
belaran@976 10 sorted(glob.glob('../app*.xml')) +
belaran@976 11 sorted(glob.glob('../biblio*.xml')))
belaran@976 12
belaran@976 13 fp = open('index-read.html.in', 'w', encoding='utf-8')
belaran@976 14
belaran@976 15 print('''
belaran@976 16 <div class="navheader"><h1 class="booktitle">Mercurial: la guida definitiva<div class="authors">di Bryan O\&#8217;Sullivan</div></h1></div>
belaran@976 17 <div class="book"><ul class="booktoc">''', file=fp)
belaran@976 18
belaran@976 19 ch = 0
belaran@976 20 app = 0
belaran@976 21 ab = 0
belaran@976 22 for c in chapters:
belaran@976 23 filename = None
belaran@976 24 title = None
belaran@976 25 chapid = None
belaran@976 26 chaptype = None
belaran@976 27 for line in open(c, encoding='utf-8'):
belaran@976 28 m = chapter_re.search(line)
belaran@976 29 if m:
belaran@976 30 chaptype, chapid = m.groups()
belaran@976 31 m = filename_re.search(line)
belaran@976 32 if m:
belaran@976 33 filename = m.group(1)
belaran@976 34 m = title_re.search(line)
belaran@976 35 if m:
belaran@976 36 title = m.group(1)
belaran@976 37 if filename and title and chapid:
belaran@976 38 if chaptype == 'bibliography':
belaran@976 39 num = ''
belaran@976 40 elif chaptype == 'appendix':
belaran@976 41 num = str(chr(ord('A') + app)) + '. '
belaran@976 42 app += 1
belaran@976 43 else:
belaran@976 44 num = str(ch) + '. '
belaran@976 45 ch += 1
belaran@976 46 if '&' in title:
belaran@976 47 title = title.replace('&', '\&')
belaran@976 48 ab += 1
belaran@976 49 date = os.popen('hg log -l1 --template "{date|isodate}" ' + c).read().split(None, 1)[0]
belaran@976 50 args = {
belaran@976 51 'ab': "ab"[ab % 2],
belaran@976 52 'date': date,
belaran@976 53 # 'chapid': chapid,
belaran@976 54 'num': num,
belaran@976 55 'filename': filename,
belaran@976 56 'title': title,
belaran@976 57 }
belaran@976 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)
belaran@976 59 break
belaran@976 60
belaran@976 61 print('</ul></div>', file=fp)
belaran@976 62
belaran@976 63 fp.close()