74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
|
# Generate custlib.tex, which is a site-specific library document.
|
||
|
|
||
|
# Phase I: list all the things that can be imported
|
||
|
|
||
|
import glob, os, sys, string
|
||
|
modules={}
|
||
|
|
||
|
for modname in sys.builtin_module_names:
|
||
|
modules[modname]=modname
|
||
|
|
||
|
for dir in sys.path:
|
||
|
# Look for *.py files
|
||
|
filelist=glob.glob(os.path.join(dir, '*.py'))
|
||
|
for file in filelist:
|
||
|
path, file = os.path.split(file)
|
||
|
base, ext=os.path.splitext(file)
|
||
|
modules[string.lower(base)]=base
|
||
|
|
||
|
# Look for shared library files
|
||
|
filelist=(glob.glob(os.path.join(dir, '*.so')) +
|
||
|
glob.glob(os.path.join(dir, '*.sl')) +
|
||
|
glob.glob(os.path.join(dir, '*.o')) )
|
||
|
for file in filelist:
|
||
|
path, file = os.path.split(file)
|
||
|
base, ext=os.path.splitext(file)
|
||
|
if base[-6:]=='module': base=base[:-6]
|
||
|
modules[string.lower(base)]=base
|
||
|
|
||
|
# Minor oddity: the types module is documented in libtypes2.tex
|
||
|
if modules.has_key('types'):
|
||
|
del modules['types'] ; modules['types2']=None
|
||
|
|
||
|
# Phase II: find all documentation files (lib*.tex)
|
||
|
# and eliminate modules that don't have one.
|
||
|
|
||
|
docs={}
|
||
|
filelist=glob.glob('lib*.tex')
|
||
|
for file in filelist:
|
||
|
modname=file[3:-4]
|
||
|
docs[modname]=modname
|
||
|
|
||
|
mlist=modules.keys()
|
||
|
mlist=filter(lambda x, docs=docs: docs.has_key(x), mlist)
|
||
|
mlist.sort()
|
||
|
mlist=map(lambda x, docs=docs: docs[x], mlist)
|
||
|
|
||
|
modules=mlist
|
||
|
|
||
|
# Phase III: write custlib.tex
|
||
|
|
||
|
# Write the boilerplate
|
||
|
# XXX should be fancied up.
|
||
|
print """\documentstyle[twoside,11pt,myformat]{report}
|
||
|
\\title{Python Library Reference}
|
||
|
\\input{boilerplate}
|
||
|
\\makeindex % tell \\index to actually write the .idx file
|
||
|
\\begin{document}
|
||
|
\\pagenumbering{roman}
|
||
|
\\maketitle
|
||
|
\\input{copyright}
|
||
|
\\begin{abstract}
|
||
|
\\noindent This is a customized version of the Python Library Reference.
|
||
|
\\end{abstract}
|
||
|
\\pagebreak
|
||
|
{\\parskip = 0mm \\tableofcontents}
|
||
|
\\pagebreak\\pagenumbering{arabic}"""
|
||
|
|
||
|
for modname in mlist:
|
||
|
print "\\input{lib%s}" % (modname,)
|
||
|
|
||
|
# Write the end
|
||
|
print """\\input{custlib.ind} % Index
|
||
|
\\end{document}"""
|