108 lines
2.7 KiB
Python
108 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# DocMaker (c) 2002, 2004 David Turner <david@freetype.org>
|
|
#
|
|
# This program is a re-write of the original DocMaker took used
|
|
# to generate the API Reference of the FreeType font engine
|
|
# by converting in-source comments into structured HTML.
|
|
#
|
|
# This new version is capable of outputting XML data, as well
|
|
# as accepts more liberal formatting options.
|
|
#
|
|
# It also uses regular expression matching and substitution
|
|
# to speed things significantly.
|
|
#
|
|
|
|
from sources import *
|
|
from content import *
|
|
from utils import *
|
|
from formatter import *
|
|
from tohtml import *
|
|
|
|
import utils
|
|
|
|
import sys, os, time, string, glob, getopt
|
|
|
|
|
|
def usage():
|
|
print "\nDocMaker Usage information\n"
|
|
print " docmaker [options] file1 [ file2 ... ]\n"
|
|
print "using the following options:\n"
|
|
print " -h : print this page"
|
|
print " -t : set project title, as in '-t \"My Project\"'"
|
|
print " -o : set output directory, as in '-o mydir'"
|
|
print " -p : set documentation prefix, as in '-p ft2'"
|
|
print ""
|
|
print " --title : same as -t, as in '--title=\"My Project\"'"
|
|
print " --output : same as -o, as in '--output=mydir'"
|
|
print " --prefix : same as -p, as in '--prefix=ft2'"
|
|
|
|
|
|
def main( argv ):
|
|
"""main program loop"""
|
|
|
|
global output_dir
|
|
|
|
try:
|
|
opts, args = getopt.getopt( sys.argv[1:],
|
|
"ht:o:p:",
|
|
[ "help", "title=", "output=", "prefix=" ] )
|
|
|
|
except getopt.GetoptError:
|
|
usage()
|
|
sys.exit( 2 )
|
|
|
|
if args == []:
|
|
usage()
|
|
sys.exit( 1 )
|
|
|
|
# process options
|
|
#
|
|
project_title = "Project"
|
|
project_prefix = None
|
|
output_dir = None
|
|
|
|
for opt in opts:
|
|
if opt[0] in ( "-h", "--help" ):
|
|
usage()
|
|
sys.exit( 0 )
|
|
|
|
if opt[0] in ( "-t", "--title" ):
|
|
project_title = opt[1]
|
|
|
|
if opt[0] in ( "-o", "--output" ):
|
|
utils.output_dir = opt[1]
|
|
|
|
if opt[0] in ( "-p", "--prefix" ):
|
|
project_prefix = opt[1]
|
|
|
|
check_output( )
|
|
|
|
# create context and processor
|
|
source_processor = SourceProcessor()
|
|
content_processor = ContentProcessor()
|
|
|
|
# retrieve the list of files to process
|
|
file_list = make_file_list( args )
|
|
for filename in file_list:
|
|
source_processor.parse_file( filename )
|
|
content_processor.parse_sources( source_processor )
|
|
|
|
# process sections
|
|
content_processor.finish()
|
|
|
|
formatter = HtmlFormatter( content_processor, project_title, project_prefix )
|
|
|
|
formatter.toc_dump()
|
|
formatter.index_dump()
|
|
formatter.section_dump_all()
|
|
|
|
|
|
# if called from the command line
|
|
#
|
|
if __name__ == '__main__':
|
|
main( sys.argv )
|
|
|
|
|
|
# eof
|