blob: 04d49c36898b85d0a467846a12a50be20e82f23d [file] [log] [blame]
Tim Peters4f109c12002-04-19 18:41:46 +00001"""
Tim Peters52cfa332002-04-19 16:09:26 +00002 Makes the necesary files to convert from plain html of
3 Python 1.5 and 1.5.x Documentation to
4 Microsoft HTML Help format version 1.1
5 Doesn't change the html's docs.
6
7 by hernan.foffani@iname.com
8 no copyright and no responsabilities.
9
10 modified by Dale Nagata for Python 1.5.2
11
12 Renamed from make_chm.py to prechm.py, and checked into the Python
13 project, 19-Apr-2002 by Tim Peters. Assorted modifications by Tim
14 and Fred Drake. Obtained from Robin Dunn's .chm packaging of the
15 Python 2.2 docs, at <http://alldunn.com/python/>.
Tim Peters4f109c12002-04-19 18:41:46 +000016"""
Tim Peters52cfa332002-04-19 16:09:26 +000017
18import sys
19import os
Tim Peterse21095e2002-04-20 08:36:42 +000020from formatter import NullWriter, AbstractFormatter
21from htmllib import HTMLParser
Tim Peters52cfa332002-04-19 16:09:26 +000022import getopt
Tim Peters45454072002-04-20 20:26:26 +000023import cgi
Tim Peters52cfa332002-04-19 16:09:26 +000024
Tim Peters52cfa332002-04-19 16:09:26 +000025usage_mode = '''
26Usage: make_chm.py [-c] [-k] [-p] [-v 1.5[.x]] filename
27 -c: does not build filename.hhc (Table of Contents)
28 -k: does not build filename.hhk (Index)
29 -p: does not build filename.hhp (Project File)
30 -v 1.5[.x]: makes help for the python 1.5[.x] docs
31 (default is python 1.5.2 docs)
32'''
33
Tim Peterse6b63e62002-04-19 18:07:52 +000034# Project file (*.hhp) template. 'arch' is the file basename (like
35# the pythlp in pythlp.hhp); 'version' is the doc version number (like
36# the 2.2 in Python 2.2).
37# The magical numbers in the long line under [WINDOWS] set most of the
38# user-visible features (visible buttons, tabs, etc).
Tim Petersdc374e02002-04-21 02:01:01 +000039# About 0x10384e: This defines the buttons in the help viewer. The
40# following defns are taken from htmlhelp.h. Not all possibilities
41# actually work, and not all those that work are available from the Help
42# Workshop GUI. In particular, the Zoom/Font button works and is not
43# available from the GUI. The ones we're using are marked with 'x':
44#
45# 0x000002 Hide/Show x
46# 0x000004 Back x
47# 0x000008 Forward x
48# 0x000010 Stop
49# 0x000020 Refresh
50# 0x000040 Home x
51# 0x000080 Forward
52# 0x000100 Back
53# 0x000200 Notes
54# 0x000400 Contents
55# 0x000800 Locate x
56# 0x001000 Options x
57# 0x002000 Print x
58# 0x004000 Index
59# 0x008000 Search
60# 0x010000 History
61# 0x020000 Favorites
62# 0x040000 Jump 1
63# 0x080000 Jump 2
64# 0x100000 Zoom/Font x
65# 0x200000 TOC Next
66# 0x400000 TOC Prev
67
Tim Peters52cfa332002-04-19 16:09:26 +000068project_template = '''
69[OPTIONS]
Tim Peterse6b63e62002-04-19 18:07:52 +000070Compiled file=%(arch)s.chm
71Contents file=%(arch)s.hhc
72Default Window=%(arch)s
Tim Peters52cfa332002-04-19 16:09:26 +000073Default topic=index.html
74Display compile progress=No
Tim Peters4f109c12002-04-19 18:41:46 +000075Full text search stop list file=%(arch)s.stp
Tim Peters52cfa332002-04-19 16:09:26 +000076Full-text search=Yes
Tim Peterse6b63e62002-04-19 18:07:52 +000077Index file=%(arch)s.hhk
Tim Peters52cfa332002-04-19 16:09:26 +000078Language=0x409
Tim Peterse6b63e62002-04-19 18:07:52 +000079Title=Python %(version)s Documentation
Tim Peters52cfa332002-04-19 16:09:26 +000080
81[WINDOWS]
Tim Peterse6b63e62002-04-19 18:07:52 +000082%(arch)s="Python %(version)s Documentation","%(arch)s.hhc","%(arch)s.hhk",\
Tim Petersdc374e02002-04-21 02:01:01 +000083"index.html","index.html",,,,,0x63520,220,0x10384e,[271,372,740,718],,,,,,,0
Tim Peters52cfa332002-04-19 16:09:26 +000084
85[FILES]
86'''
87
Tim Peters45454072002-04-20 20:26:26 +000088contents_header = '''\
89<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
90<HTML>
91<HEAD>
92<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
93<!-- Sitemap 1.0 -->
94</HEAD><BODY>
Tim Peters52cfa332002-04-19 16:09:26 +000095<OBJECT type="text/site properties">
96 <param name="Window Styles" value="0x801227">
Tim Petersa9053632002-04-19 16:46:43 +000097 <param name="ImageType" value="Folder">
Tim Peters52cfa332002-04-19 16:09:26 +000098</OBJECT>
99<UL>
Tim Peters52cfa332002-04-19 16:09:26 +0000100'''
101
Tim Peters45454072002-04-20 20:26:26 +0000102contents_footer = '''\
Tim Petersc8490c72002-04-20 21:34:34 +0000103</UL></BODY></HTML>
Tim Peters52cfa332002-04-19 16:09:26 +0000104'''
105
Tim Peters45454072002-04-20 20:26:26 +0000106object_sitemap = '''\
107<OBJECT type="text/sitemap">
108 <param name="Name" value="%s">
109 <param name="Local" value="%s">
110</OBJECT>
Tim Peters52cfa332002-04-19 16:09:26 +0000111'''
112
Tim Peters4f109c12002-04-19 18:41:46 +0000113# List of words the full text search facility shouldn't index. This
114# becomes file ARCH.stp. Note that this list must be pretty small!
115# Different versions of the MS docs claim the file has a maximum size of
116# 256 or 512 bytes (including \r\n at the end of each line).
117# Note that "and", "or", "not" and "near" are operators in the search
Tim Peters8d62ad72002-04-20 02:56:20 +0000118# language, so no point indexing them even if we wanted to.
Tim Peters4f109c12002-04-19 18:41:46 +0000119stop_list = '''
Tim Petersa3b0b292002-05-02 21:59:08 +0000120a and are as at
121be but by
122for
123if in into is it
124near no not
125of on or
126such
127that the their then there these they this to
128was will with
Tim Peters4f109c12002-04-19 18:41:46 +0000129'''
130
Tim Petersd9a10502002-04-20 03:25:02 +0000131# s is a string or None. If None or empty, return None. Else tack '.html'
132# on to the end, unless it's already there.
133def addhtml(s):
134 if s:
135 if not s.endswith('.html'):
136 s += '.html'
137 return s
138
139# Convenience class to hold info about "a book" in HTMLHelp terms == a doc
140# directory in Python terms.
141class Book:
142 def __init__(self, directory, title, firstpage,
143 contentpage=None, indexpage=None):
144 self.directory = directory
145 self.title = title
146 self.firstpage = addhtml(firstpage)
147 self.contentpage = addhtml(contentpage)
148 self.indexpage = addhtml(indexpage)
149
150# Library Doc list of books:
Tim Peters661e4922002-04-20 02:39:44 +0000151# each 'book' : (Dir, Title, First page, Content page, Index page)
Tim Peters52cfa332002-04-19 16:09:26 +0000152supported_libraries = {
Tim Petersc8490c72002-04-20 21:34:34 +0000153 '2.2':
Tim Peters52cfa332002-04-19 16:09:26 +0000154 [
Tim Petersc8490c72002-04-20 21:34:34 +0000155 Book('.', 'Main page', 'index'),
Tim Petersd9a10502002-04-20 03:25:02 +0000156 Book('.', 'Global Module Index', 'modindex'),
157 Book('whatsnew', "What's New", 'index', 'contents'),
158 Book('tut','Tutorial','tut','node2'),
159 Book('lib','Library Reference','lib','contents','genindex'),
160 Book('ref','Language Reference','ref','contents','genindex'),
161 Book('mac','Macintosh Reference','mac','contents','genindex'),
162 Book('ext','Extending and Embedding','ext','contents'),
163 Book('api','Python/C API','api','contents','genindex'),
164 Book('doc','Documenting Python','doc','contents'),
165 Book('inst','Installing Python Modules', 'inst', 'index'),
166 Book('dist','Distributing Python Modules', 'dist', 'index'),
Tim Peters52cfa332002-04-19 16:09:26 +0000167 ],
168
169 '2.1.1':
170 [
Tim Petersc8490c72002-04-20 21:34:34 +0000171 Book('.', 'Main page', 'index'),
Tim Petersd9a10502002-04-20 03:25:02 +0000172 Book('.', 'Global Module Index', 'modindex'),
173 Book('tut','Tutorial','tut','node2'),
174 Book('lib','Library Reference','lib','contents','genindex'),
175 Book('ref','Language Reference','ref','contents','genindex'),
176 Book('mac','Macintosh Reference','mac','contents','genindex'),
177 Book('ext','Extending and Embedding','ext','contents'),
178 Book('api','Python/C API','api','contents','genindex'),
179 Book('doc','Documenting Python','doc','contents'),
180 Book('inst','Installing Python Modules', 'inst', 'index'),
181 Book('dist','Distributing Python Modules', 'dist', 'index'),
Tim Peters52cfa332002-04-19 16:09:26 +0000182 ],
183
184 '2.0.0':
185 [
Tim Petersd9a10502002-04-20 03:25:02 +0000186 Book('.', 'Global Module Index', 'modindex'),
187 Book('tut','Tutorial','tut','node2'),
188 Book('lib','Library Reference','lib','contents','genindex'),
189 Book('ref','Language Reference','ref','contents','genindex'),
190 Book('mac','Macintosh Reference','mac','contents','genindex'),
191 Book('ext','Extending and Embedding','ext','contents'),
192 Book('api','Python/C API','api','contents','genindex'),
193 Book('doc','Documenting Python','doc','contents'),
194 Book('inst','Installing Python Modules', 'inst', 'contents'),
195 Book('dist','Distributing Python Modules', 'dist', 'contents'),
Tim Peters52cfa332002-04-19 16:09:26 +0000196 ],
197
198 # <dnagata@creo.com> Apr 17/99: library for 1.5.2 version:
199 # <hernan.foffani@iname.com> May 01/99: library for 1.5.2 (04/30/99):
200 '1.5.2':
201 [
Tim Petersd9a10502002-04-20 03:25:02 +0000202 Book('tut','Tutorial','tut','node2'),
203 Book('lib','Library Reference','lib','contents','genindex'),
204 Book('ref','Language Reference','ref','contents','genindex'),
205 Book('mac','Macintosh Reference','mac','contents','genindex'),
206 Book('ext','Extending and Embedding','ext','contents'),
207 Book('api','Python/C API','api','contents','genindex'),
208 Book('doc','Documenting Python','doc','contents')
Tim Peters52cfa332002-04-19 16:09:26 +0000209 ],
210
211 # library for 1.5.1 version:
212 '1.5.1':
213 [
Tim Petersd9a10502002-04-20 03:25:02 +0000214 Book('tut','Tutorial','tut','contents'),
215 Book('lib','Library Reference','lib','contents','genindex'),
216 Book('ref','Language Reference','ref-1','ref-2','ref-11'),
217 Book('ext','Extending and Embedding','ext','contents'),
218 Book('api','Python/C API','api','contents','genindex')
Tim Peters52cfa332002-04-19 16:09:26 +0000219 ],
220
221 # library for 1.5 version:
222 '1.5':
223 [
Tim Petersd9a10502002-04-20 03:25:02 +0000224 Book('tut','Tutorial','tut','node1'),
225 Book('lib','Library Reference','lib','node1','node268'),
226 Book('ref','Language Reference','ref-1','ref-2','ref-11'),
227 Book('ext','Extending and Embedding','ext','node1'),
228 Book('api','Python/C API','api','node1','node48')
Tim Peters52cfa332002-04-19 16:09:26 +0000229 ]
230}
231
Tim Peterse21095e2002-04-20 08:36:42 +0000232# AlmostNullWriter doesn't print anything; it just arranges to save the
233# text sent to send_flowing_data(). This is used to capture the text
234# between an anchor begin/end pair, e.g. for TOC entries.
235
236class AlmostNullWriter(NullWriter):
237
238 def __init__(self):
239 NullWriter.__init__(self)
240 self.saved_clear()
Tim Peters52cfa332002-04-19 16:09:26 +0000241
Tim Peters661e4922002-04-20 02:39:44 +0000242 def send_flowing_data(self, data):
Tim Peterse21095e2002-04-20 08:36:42 +0000243 stripped = data.strip()
244 if stripped: # don't bother to save runs of whitespace
245 self.saved.append(stripped)
Tim Peters52cfa332002-04-19 16:09:26 +0000246
Tim Peterse21095e2002-04-20 08:36:42 +0000247 # Forget all saved text.
248 def saved_clear(self):
249 self.saved = []
Tim Peters52cfa332002-04-19 16:09:26 +0000250
Tim Peterse21095e2002-04-20 08:36:42 +0000251 # Return all saved text as a string.
252 def saved_get(self):
253 return ' '.join(self.saved)
254
255class HelpHtmlParser(HTMLParser):
256
257 def __init__(self, formatter, path, output):
258 HTMLParser.__init__(self, formatter)
259 self.path = path # relative path
260 self.ft = output # output file
261 self.indent = 0 # number of tabs for pretty printing of files
262 self.proc = False # True when actively processing, else False
263 # (headers, footers, etc)
Tim Peters45454072002-04-20 20:26:26 +0000264 # XXX This shouldn't need to be a stack -- anchors shouldn't nest.
265 # XXX See SF bug <http://www.python.org/sf/546579>.
266 self.hrefstack = [] # stack of hrefs from anchor begins
Tim Peters52cfa332002-04-19 16:09:26 +0000267
Tim Peters661e4922002-04-20 02:39:44 +0000268 def begin_group(self):
Tim Peterse21095e2002-04-20 08:36:42 +0000269 self.indent += 1
270 self.proc = True
Tim Peters52cfa332002-04-19 16:09:26 +0000271
Tim Peterse21095e2002-04-20 08:36:42 +0000272 def finish_group(self):
273 self.indent -= 1
274 # stop processing when back to top level
275 self.proc = self.indent > 0
Tim Peters52cfa332002-04-19 16:09:26 +0000276
Tim Peters661e4922002-04-20 02:39:44 +0000277 def anchor_bgn(self, href, name, type):
278 if self.proc:
Tim Peters45454072002-04-20 20:26:26 +0000279 # XXX See SF bug <http://www.python.org/sf/546579>.
Tim Peters4a0db062002-04-21 04:44:11 +0000280 # XXX index.html for the 2.2.1 language reference manual contains
Tim Peters45454072002-04-20 20:26:26 +0000281 # XXX nested <a></a> tags in the entry for the section on blank
282 # XXX lines. We want to ignore the nested part completely.
283 if len(self.hrefstack) == 0:
Tim Peters4a0db062002-04-21 04:44:11 +0000284 self.saved_clear()
285 self.hrefstack.append(href)
286
287 def anchor_end(self):
288 if self.proc:
289 # XXX See XXX above.
290 if self.hrefstack:
291 title = cgi.escape(self.saved_get(), True)
292 path = self.path + '/' + self.hrefstack.pop()
Tim Peters45454072002-04-20 20:26:26 +0000293 self.tab(object_sitemap % (title, path))
Tim Peters52cfa332002-04-19 16:09:26 +0000294
Tim Peters661e4922002-04-20 02:39:44 +0000295 def start_dl(self, atr_val):
Tim Peters52cfa332002-04-19 16:09:26 +0000296 self.begin_group()
297
Tim Peters661e4922002-04-20 02:39:44 +0000298 def end_dl(self):
Tim Peterse21095e2002-04-20 08:36:42 +0000299 self.finish_group()
Tim Peters52cfa332002-04-19 16:09:26 +0000300
Tim Peters661e4922002-04-20 02:39:44 +0000301 def do_dt(self, atr_val):
Tim Peterse21095e2002-04-20 08:36:42 +0000302 # no trailing newline on purpose!
303 self.tab("<LI>")
Tim Peters52cfa332002-04-19 16:09:26 +0000304
Tim Peterse21095e2002-04-20 08:36:42 +0000305 # Write text to output file.
306 def write(self, text):
307 self.ft.write(text)
308
309 # Write text to output file after indenting by self.indent tabs.
310 def tab(self, text=''):
311 self.write('\t' * self.indent)
312 if text:
313 self.write(text)
314
315 # Forget all saved text.
316 def saved_clear(self):
317 self.formatter.writer.saved_clear()
318
319 # Return all saved text as a string.
320 def saved_get(self):
321 return self.formatter.writer.saved_get()
Tim Peters52cfa332002-04-19 16:09:26 +0000322
Tim Peters661e4922002-04-20 02:39:44 +0000323class IdxHlpHtmlParser(HelpHtmlParser):
Tim Peters52cfa332002-04-19 16:09:26 +0000324 # nothing special here, seems enough with parent class
325 pass
326
Tim Peters661e4922002-04-20 02:39:44 +0000327class TocHlpHtmlParser(HelpHtmlParser):
Tim Peters52cfa332002-04-19 16:09:26 +0000328
Tim Peters661e4922002-04-20 02:39:44 +0000329 def start_dl(self, atr_val):
Tim Peters52cfa332002-04-19 16:09:26 +0000330 self.begin_group()
Tim Peterse21095e2002-04-20 08:36:42 +0000331 self.tab('<UL>\n')
Tim Peters52cfa332002-04-19 16:09:26 +0000332
Tim Peters661e4922002-04-20 02:39:44 +0000333 def end_dl(self):
Tim Peterse21095e2002-04-20 08:36:42 +0000334 self.finish_group()
335 self.tab('</UL>\n')
Tim Peters52cfa332002-04-19 16:09:26 +0000336
Tim Peters661e4922002-04-20 02:39:44 +0000337 def start_ul(self, atr_val):
Tim Peters52cfa332002-04-19 16:09:26 +0000338 self.begin_group()
Tim Peterse21095e2002-04-20 08:36:42 +0000339 self.tab('<UL>\n')
Tim Peters52cfa332002-04-19 16:09:26 +0000340
Tim Peters661e4922002-04-20 02:39:44 +0000341 def end_ul(self):
Tim Peterse21095e2002-04-20 08:36:42 +0000342 self.finish_group()
343 self.tab('</UL>\n')
Tim Peters52cfa332002-04-19 16:09:26 +0000344
Tim Peters661e4922002-04-20 02:39:44 +0000345 def do_li(self, atr_val):
Tim Peterse21095e2002-04-20 08:36:42 +0000346 # no trailing newline on purpose!
347 self.tab("<LI>")
Tim Peters52cfa332002-04-19 16:09:26 +0000348
Tim Petersd9a10502002-04-20 03:25:02 +0000349def index(path, indexpage, output):
Tim Peterse21095e2002-04-20 08:36:42 +0000350 parser = IdxHlpHtmlParser(AbstractFormatter(AlmostNullWriter()),
351 path, output)
Tim Petersd9a10502002-04-20 03:25:02 +0000352 f = open(path + '/' + indexpage)
353 parser.feed(f.read())
Tim Peters52cfa332002-04-19 16:09:26 +0000354 parser.close()
Tim Petersd9a10502002-04-20 03:25:02 +0000355 f.close()
Tim Peters52cfa332002-04-19 16:09:26 +0000356
Tim Petersd9a10502002-04-20 03:25:02 +0000357def content(path, contentpage, output):
Tim Peterse21095e2002-04-20 08:36:42 +0000358 parser = TocHlpHtmlParser(AbstractFormatter(AlmostNullWriter()),
359 path, output)
Tim Petersd9a10502002-04-20 03:25:02 +0000360 f = open(path + '/' + contentpage)
361 parser.feed(f.read())
Tim Peters52cfa332002-04-19 16:09:26 +0000362 parser.close()
Tim Petersd9a10502002-04-20 03:25:02 +0000363 f.close()
Tim Peters52cfa332002-04-19 16:09:26 +0000364
Tim Peters661e4922002-04-20 02:39:44 +0000365def do_index(library, output):
Tim Peters52cfa332002-04-19 16:09:26 +0000366 output.write('<UL>\n')
Tim Peters661e4922002-04-20 02:39:44 +0000367 for book in library:
Tim Petersd9a10502002-04-20 03:25:02 +0000368 print '\t', book.title, '-', book.indexpage
369 if book.indexpage:
370 index(book.directory, book.indexpage, output)
Tim Peters52cfa332002-04-19 16:09:26 +0000371 output.write('</UL>\n')
372
Tim Peters661e4922002-04-20 02:39:44 +0000373def do_content(library, version, output):
Tim Petersc8490c72002-04-20 21:34:34 +0000374 output.write(contents_header)
Tim Peters661e4922002-04-20 02:39:44 +0000375 for book in library:
Tim Petersd9a10502002-04-20 03:25:02 +0000376 print '\t', book.title, '-', book.firstpage
Tim Peters45454072002-04-20 20:26:26 +0000377 path = book.directory + "/" + book.firstpage
378 output.write('<LI>')
379 output.write(object_sitemap % (book.title, path))
Tim Petersd9a10502002-04-20 03:25:02 +0000380 if book.contentpage:
381 content(book.directory, book.contentpage, output)
Tim Peters52cfa332002-04-19 16:09:26 +0000382 output.write(contents_footer)
383
Tim Peters460643b2002-04-20 02:37:07 +0000384# Fill in the [FILES] section of the project (.hhp) file.
385# 'library' is the list of directory description tuples from
386# supported_libraries for the version of the docs getting generated.
387def do_project(library, output, arch, version):
Tim Peterse6b63e62002-04-19 18:07:52 +0000388 output.write(project_template % locals())
Tim Petersc8490c72002-04-20 21:34:34 +0000389 pathseen = {}
Tim Peters460643b2002-04-20 02:37:07 +0000390 for book in library:
Tim Petersd9a10502002-04-20 03:25:02 +0000391 directory = book.directory
Tim Peters460643b2002-04-20 02:37:07 +0000392 path = directory + '\\%s\n'
393 for page in os.listdir(directory):
394 if page.endswith('.html') or page.endswith('.css'):
Tim Petersc8490c72002-04-20 21:34:34 +0000395 fullpath = path % page
396 if fullpath not in pathseen:
397 output.write(fullpath)
398 pathseen[fullpath] = True
Tim Peters52cfa332002-04-19 16:09:26 +0000399
Tim Peters661e4922002-04-20 02:39:44 +0000400def openfile(file):
401 try:
Tim Peters52cfa332002-04-19 16:09:26 +0000402 p = open(file, "w")
Tim Peters661e4922002-04-20 02:39:44 +0000403 except IOError, msg:
Tim Peters52cfa332002-04-19 16:09:26 +0000404 print file, ":", msg
405 sys.exit(1)
406 return p
407
Tim Peters661e4922002-04-20 02:39:44 +0000408def usage():
Tim Peters52cfa332002-04-19 16:09:26 +0000409 print usage_mode
410 sys.exit(0)
411
Tim Peters661e4922002-04-20 02:39:44 +0000412def do_it(args = None):
413 if not args:
Tim Peters52cfa332002-04-19 16:09:26 +0000414 args = sys.argv[1:]
415
Tim Peters661e4922002-04-20 02:39:44 +0000416 if not args:
Tim Peters52cfa332002-04-19 16:09:26 +0000417 usage()
418
Tim Peters661e4922002-04-20 02:39:44 +0000419 try:
Tim Peters52cfa332002-04-19 16:09:26 +0000420 optlist, args = getopt.getopt(args, 'ckpv:')
Tim Peters661e4922002-04-20 02:39:44 +0000421 except getopt.error, msg:
Tim Peters52cfa332002-04-19 16:09:26 +0000422 print msg
423 usage()
424
Tim Peters661e4922002-04-20 02:39:44 +0000425 if not args or len(args) > 1:
Tim Peters52cfa332002-04-19 16:09:26 +0000426 usage()
427 arch = args[0]
428
429 version = None
430 for opt in optlist:
431 if opt[0] == '-v':
432 version = opt[1]
433 break
434 if not version:
435 usage()
436
Tim Petersd9a10502002-04-20 03:25:02 +0000437 library = supported_libraries[version]
Tim Peters52cfa332002-04-19 16:09:26 +0000438
Tim Peters661e4922002-04-20 02:39:44 +0000439 if not (('-p','') in optlist):
Tim Peters4f109c12002-04-19 18:41:46 +0000440 fname = arch + '.stp'
441 f = openfile(fname)
442 print "Building stoplist", fname, "..."
443 words = stop_list.split()
444 words.sort()
445 for word in words:
446 print >> f, word
447 f.close()
448
Tim Peters52cfa332002-04-19 16:09:26 +0000449 f = openfile(arch + '.hhp')
450 print "Building Project..."
451 do_project(library, f, arch, version)
452 if version == '2.0.0':
453 for image in os.listdir('icons'):
454 f.write('icons'+ '\\' + image + '\n')
455
456 f.close()
457
Tim Peters661e4922002-04-20 02:39:44 +0000458 if not (('-c','') in optlist):
Tim Peters52cfa332002-04-19 16:09:26 +0000459 f = openfile(arch + '.hhc')
460 print "Building Table of Content..."
461 do_content(library, version, f)
462 f.close()
463
Tim Peters661e4922002-04-20 02:39:44 +0000464 if not (('-k','') in optlist):
Tim Peters52cfa332002-04-19 16:09:26 +0000465 f = openfile(arch + '.hhk')
466 print "Building Index..."
467 do_index(library, f)
468 f.close()
469
Tim Peters661e4922002-04-20 02:39:44 +0000470if __name__ == '__main__':
Tim Peters52cfa332002-04-19 16:09:26 +0000471 do_it()