Giulio@747: # This script works with Python 3.0 or above
Giulio@722: 
Giulio@722: import glob, os, re
Giulio@722: 
Giulio@722: chapter_re = re.compile(r'<(chapter|appendix|preface)\s+id="([^"]+)">')
Giulio@722: filename_re = re.compile(r'<\?dbhtml filename="([^"]+)"\?>')
Giulio@722: title_re = re.compile(r'<title>(.*)</title>')
Giulio@722: 
Giulio@722: chapters = (sorted(glob.glob('../ch*.xml')) +
Giulio@722:             sorted(glob.glob('../app*.xml')))
Giulio@722: 
Giulio@722: fp = open('index-read.html.in', 'w')
Giulio@722: 
Giulio@722: print('''
Giulio@722: <div class="navheader"><h1 class="booktitle">Mercurial: la guida definitiva<div class="authors">di Bryan O'Sullivan</div></h1></div>
Giulio@722: <div class="book"><ul class="booktoc">''', file=fp)
Giulio@722: 
Giulio@722: ch = 0
Giulio@722: app = 0
Giulio@722: ab = 0
Giulio@722: for c in chapters:
Giulio@722:     filename = None
Giulio@722:     title = None
Giulio@722:     chapid = None
Giulio@722:     chaptype = None
Giulio@722:     for line in open(c):
Giulio@722:         m = chapter_re.search(line)
Giulio@722:         if m:
Giulio@722:             chaptype, chapid = m.groups()
Giulio@722:         m = filename_re.search(line)
Giulio@722:         if m:
Giulio@722:             filename = m.group(1)
Giulio@722:         m = title_re.search(line)
Giulio@722:         if m:
Giulio@722:             title = m.group(1)
Giulio@722:         if filename and title and chapid:
Giulio@722:             if chaptype == 'appendix':
Giulio@722:                 num = chr(ord('A') + app)
Giulio@722:                 app += 1
Giulio@722:             else:
Giulio@722:                 num = ch
Giulio@722:                 ch += 1
Giulio@722:             ab += 1
Giulio@722:             date = os.popen('hg log -l1 --template "{date|isodate}" ' + c).read().split(None, 1)[0]
Giulio@722:             args = {
Giulio@722:                 'ab': "ab"[ab % 2],
Giulio@722:                 'date': date,
Giulio@722:                 'chapid': chapid,
Giulio@722:                 'num': num,
Giulio@722:                 'filename': filename,
Giulio@722:                 'title': title,
Giulio@722:                 }
Giulio@722:             print('<li class="zebra_%(ab)s"><span class="chapinfo">%(date)s<a href="/feeds/comments/%(chapid)s/"><img src="figs/rss.png"/></a></span>%(num)s. <a href="%(filename)s">%(title)s</a></li>' % args, file=fp)
Giulio@722:             break
Giulio@722: 
Giulio@722: print('</ul></div>', file=fp)
Giulio@722: 
Giulio@722: fp.close()