wxWidgets/misc/scripts/update_doc_libs.py
Vadim Zeitlin 3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00

100 lines
3.6 KiB
Python
Executable File

##############################################################################
# Name: misc/scripts/update_doc_libs.py
# Purpose: Automatically insert \Library{} headers in the doc files
# Created: 2007-07-28
# Copyright: (c) 2007 Francesco Montorsi
# Licence: wxWindows licence
##############################################################################
from update_doc_utils import scanTexFiles
INCLUDE_PATH="../../include"
def myCallback(classname, texFileName, content, i):
tofix.add(texFileName) # consider this .tex broken
# now search the include file for this class
include = ""
for j in range(i,len(content)):
line = content[j]
if "wx/" in line and ".h" in line:
include = line[line.find("wx/"):line.find(".h")+2]
break
if include == "":
print " no include file declared for class %s" % classname
return True # go on with next \class
include = include.replace("\\_", "_")
print " the include file for %s is %s" % (classname, include)
# does this .tex already contains the \wxheading{Library} section nearby the include file?
for k in range(j,min(len(content), j+3)):
line = content[k]
if "\wxheading{Library}" in line:
print " this \class section already has its \wxheading{Library} section... skipping"
tofix.remove(texFileName) # was a valid .tex (at least for current class)
return True # go on with next \class
# now try to understand which lib contains this class
include = INCLUDE_PATH + "/" + include
header = open(include, "r")
if not header:
print " could not open %s" % include
return True # go on with next \class
decl = ""
content2 = header.readlines()
# if they exist append port-specific headers contents
for c in ["wx/gtk/", "wx/msw/", "wx/mac/", "wx/generic/"]:
try:
temp = include.replace("wx/", c)
print " trying to open %s..." % temp
header = open(temp, "r")
headercontents = header.readlines()
content2 = content2 + headercontents
print " added %d lines from %s" % (len(headercontents), temp)
except:
pass
# now search for the export-declaration associated with this class
for line in content2:
if "class " in line and classname in line:
if line.find("class") < line.find(classname): # could be a comment
if "_" in line:
decl = line[line.find("_")+1:]
decl = decl[:decl.find(" ")]
decl = decl.replace("FWD_", "")
decl = decl[0:1].upper() + decl[1:].lower()
break
elif " WXDLLEXPORT " in line:
decl = "Core"
break
if decl == "":
print " no declaration associated with %s" % classname
return True # go on with next \class
print " the declaration associated with %s is %s" % (classname, decl)
tofix.remove(texFileName) # was a valid .tex (at least for current class)
# now modify the .tex file
content.insert(j+2, "\wxheading{Library}\n\n\helpref{wx%s}{librarieslist}\n\n" % decl)
# write it
file = open(texFileName, "w")
file.write(''.join(content))
file.flush()
print " updated %s" % texFileName
fixed = fixed+1
return True
fixed = 0
tofix = set()
count = scanTexFiles(myCallback)
print "\nProcessed %d files, automatically fixed %d files." % (count, fixed)
print "There are %d files to fix manually:\n%s" % (len(tofix), '\n'.join(tofix))