titlegen.py
changeset 12 d64ffbd7d8c6
child 13 98a495a50e49
equal deleted inserted replaced
-1:000000000000 0:ca9b4b0067ad
       
     1 #! /usr/bin/env python
       
     2 
       
     3 import sys
       
     4 import os
       
     5 import copy
       
     6 import re
       
     7 
       
     8 def 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 
       
    15 def format_sec(sec):
       
    16     s=""
       
    17     for i in sec:
       
    18         s+=str(i)+'.'
       
    19     return s
       
    20 
       
    21 section = [];
       
    22 toc={}
       
    23 ind={}
       
    24 
       
    25 prev_page=''
       
    26 for 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 
       
    42 for 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                 prev_str= ( '\\ref '+prev_page ) if prev_page else ''
       
    60                 next_page=ind[page][2]
       
    61                 next_str= ( '\\ref '+next_page ) if next_page else ''
       
    62                 fo.write('<< %s | \\ref toc "Home" | %s >>\n'%\
       
    63                              (prev_str,next_str))
       
    64             elif gr[3]:
       
    65                 secs = [ x for x in toc]
       
    66                 secs.sort()
       
    67                 for num in secs:
       
    68                     fo.write("%s - \\ref %s\n"%(' '*(len(num)-2),toc[num]))
       
    69             else:
       
    70                 fo.write(gr[4]+'\n')
       
    71         fo.close()