COIN-OR::LEMON - Graph Library

source: lemon-tutorial/titlegen.py @ 14:35279d53a015

Last change on this file since 14:35279d53a015 was 14:35279d53a015, checked in by Alpar Juttner <alpar@…>, 15 years ago

Better navigation trailer

  • Property exe set to *
File size: 2.2 KB
Line 
1#! /usr/bin/env python
2
3import sys
4import os
5import copy
6import re
7
8def sec_inc(section, lev):
9    while len(section)<lev:
10        section.append(0)
11    section[lev-1]+=1
12    section=section[:lev]
13    return section
14
15def format_sec(sec):
16    s=""
17    for i in sec:
18        s+=str(i)+'.'
19    return s
20
21section = [];
22toc={}
23ind={}
24
25prev_page=''
26for l in open("toc.txt").readlines():
27    sl = l.split()
28    if len(sl)==2 and len(sl[0])>0:
29        lev=len(sl[0])
30        section=sec_inc(section,lev)
31        t_sec=copy.copy(section)
32        t_link=sl[1];
33        print format_sec(t_sec),t_link
34        ind[t_link]=[t_sec,'','']
35        if lev==1:
36            ind[t_link][1]=prev_page
37            if prev_page:
38                ind[prev_page][2]=t_link
39            prev_page=t_link
40        toc[format_sec(t_sec)]=t_link
41
42for doxfile in os.listdir('.'):
43    if doxfile[-4:]=='.dox':
44        print 'Generate ',doxfile
45        page=''
46        fo=open(os.path.join("gen-dox",doxfile),"w")
47        for l in open(doxfile).readlines():
48            gr = re.match(r"(^[[]PAGE[]].*[[]PAGE[]])?(^[[]SEC[]].*[[]SEC[]])?(^[[]TRAILER[]])?(^[[]TOC[]])?(.*)$", l).groups()
49            if gr[0]:
50                page=gr[0][6:-6]
51                fo.write("\page %s %s%s\n"%(page,
52                                            format_sec(ind[page][0]),gr[4]))
53            elif gr[1]:
54                sec=gr[1][5:-5]
55                fo.write("\section %s %s%s\n"%(sec,
56                                               format_sec(ind[sec][0]),gr[4]))
57            elif gr[2]:
58                prev_page=ind[page][1]
59                if prev_page:
60                    prev_str= ( '<< \\ref '+prev_page+' ')
61                else:
62                    prev_str=''
63                next_page=ind[page][2]
64                if next_page:
65                    next_str= ( ' \\ref '+next_page+' >>')
66                else:
67                    next_str=''
68                fo.write('%s| \\ref toc "Home" |%s\n'%\
69                             (prev_str,next_str))
70            elif gr[3]:
71                secs = [ x for x in toc]
72                secs.sort()
73                for num in secs:
74                    fo.write("%s - \\ref %s\n"%(' '*(len(num)-2),toc[num]))
75            else:
76                fo.write(gr[4]+'\n')
77        fo.close()
Note: See TracBrowser for help on using the repository browser.