alpar@10: #! /usr/bin/env python alpar@59: # alpar@59: # This file is a part of LEMON, a generic C++ optimization library. alpar@59: # alpar@59: # Copyright (C) 2003-2010 alpar@59: # Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport alpar@59: # (Egervary Research Group on Combinatorial Optimization, EGRES). alpar@59: # alpar@59: # Permission to use, modify and distribute this software is granted alpar@59: # provided that this copyright notice appears in all copies. For alpar@59: # precise terms see the accompanying LICENSE file. alpar@59: # alpar@59: # This software is provided "AS IS" with no warranty of any kind, alpar@59: # express or implied, and with no claim as to its suitability for any alpar@59: # purpose. alpar@59: # alpar@10: alpar@10: import sys alpar@10: import os alpar@10: import copy alpar@10: import re alpar@10: kpeter@42: max_sec_number=100 kpeter@42: max_sec_depth=4 kpeter@42: alpar@10: def sec_inc(section, lev): alpar@10: while len(section)0: alpar@10: lev=len(sl[0]) alpar@10: section=sec_inc(section,lev) alpar@10: t_sec=copy.copy(section) alpar@10: t_link=sl[1]; alpar@10: print format_sec(t_sec),t_link alpar@10: ind[t_link]=[t_sec,'',''] alpar@10: if lev==1: alpar@10: ind[t_link][1]=prev_page alpar@10: if prev_page: alpar@10: ind[prev_page][2]=t_link alpar@10: prev_page=t_link alpar@59: ordered_pages.append(t_link) alpar@10: toc[format_sec(t_sec)]=t_link alpar@10: alpar@10: for doxfile in os.listdir('.'): alpar@10: if doxfile[-4:]=='.dox': alpar@10: print 'Generate ',doxfile alpar@10: page='' alpar@10: fo=open(os.path.join("gen-dox",doxfile),"w") alpar@10: for l in open(doxfile).readlines(): alpar@10: gr = re.match(r"(^[[]PAGE[]].*[[]PAGE[]])?(^[[]SEC[]].*[[]SEC[]])?(^[[]TRAILER[]])?(^[[]TOC[]])?(.*)$", l).groups() alpar@10: if gr[0]: alpar@10: page=gr[0][6:-6] alpar@10: fo.write("\page %s %s%s\n"%(page, alpar@10: format_sec(ind[page][0]),gr[4])) alpar@10: elif gr[1]: alpar@10: sec=gr[1][5:-5] alpar@10: fo.write("\section %s %s%s\n"%(sec, alpar@10: format_sec(ind[sec][0]),gr[4])) alpar@10: elif gr[2]: alpar@10: prev_page=ind[page][1] alpar@13: if prev_page: alpar@14: prev_str= ( '<< \\ref '+prev_page+' ') alpar@13: else: alpar@13: prev_str='' alpar@10: next_page=ind[page][2] alpar@13: if next_page: alpar@14: next_str= ( ' \\ref '+next_page+' >>') alpar@13: else: alpar@13: next_str='' kpeter@26: fo.write('%s| \\ref sec_toc "Home" |%s\n'%\ alpar@10: (prev_str,next_str)) alpar@10: elif gr[3]: kpeter@42: secs = [ x for x in toc ] kpeter@42: secs.sort(compare_sec) alpar@10: for num in secs: alpar@15: fo.write("%s - \\ref %s\n"%(' '*((len(ind[toc[num]][0]))), alpar@15: toc[num])) alpar@10: else: alpar@10: fo.write(gr[4]+'\n') alpar@10: fo.close() alpar@59: alpar@59: fpdf=open(os.path.join("gen-pdf-dox","full.dox"),"w") alpar@59: for doxfile in [page_files[p] for p in ordered_pages]: alpar@59: page='' alpar@59: for l in open(doxfile).readlines(): alpar@59: gr = re.match(r"(^[[]PAGE[]].*[[]PAGE[]])?(^[[]SEC[]].*[[]SEC[]])?(^[[]TRAILER[]])?(^[[]TOC[]])?(.*)$", l).groups() alpar@59: if gr[0]: alpar@59: page=gr[0][6:-6] alpar@59: fpdf.write("\page %s %s\n"%(page,gr[4])) alpar@59: elif gr[1]: alpar@59: sec=gr[1][5:-5] alpar@59: fpdf.write("\section %s %s\n"%(sec,gr[4])) alpar@59: elif gr[2]: alpar@59: pass alpar@59: elif gr[3]: alpar@59: pass alpar@59: else: alpar@59: fpdf.write(gr[4]+'\n') alpar@59: fpdf.close()