summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Doc/tools/support.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/tools/support.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/tools/support.py')
-rw-r--r--sys/src/cmd/python/Doc/tools/support.py202
1 files changed, 202 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/tools/support.py b/sys/src/cmd/python/Doc/tools/support.py
new file mode 100644
index 000000000..5b8471aac
--- /dev/null
+++ b/sys/src/cmd/python/Doc/tools/support.py
@@ -0,0 +1,202 @@
+"""Miscellaneous support code shared by some of the tool scripts.
+
+This includes option parsing code, HTML formatting code, and a couple of
+useful helpers.
+
+"""
+__version__ = '$Revision: 37764 $'
+
+
+import getopt
+import os.path
+import sys
+
+
+class Options:
+ __short_args = "a:c:ho:"
+ __long_args = [
+ # script controls
+ "columns=", "help", "output=",
+
+ # content components
+ "address=", "iconserver=", "favicon=",
+ "title=", "uplink=", "uptitle=",
+ "image-type=",
+ ]
+
+ outputfile = "-"
+ columns = 1
+ letters = 0
+ uplink = "index.html"
+ uptitle = "Python Documentation Index"
+ favicon = None
+
+ # The "Aesop Meta Tag" is poorly described, and may only be used
+ # by the Aesop search engine (www.aesop.com), but doesn't hurt.
+ #
+ # There are a number of values this may take to roughly categorize
+ # a page. A page should be marked according to its primary
+ # category. Known values are:
+ # 'personal' -- personal-info
+ # 'information' -- information
+ # 'interactive' -- interactive media
+ # 'multimedia' -- multimedia presenetation (non-sales)
+ # 'sales' -- sales material
+ # 'links' -- links to other information pages
+ #
+ # Setting the aesop_type value to one of these strings will cause
+ # get_header() to add the appropriate <meta> tag to the <head>.
+ #
+ aesop_type = None
+
+ def __init__(self):
+ self.args = []
+ self.variables = {"address": "",
+ "iconserver": "icons",
+ "imgtype": "png",
+ "title": "Global Module Index",
+ }
+
+ def add_args(self, short=None, long=None):
+ if short:
+ self.__short_args = self.__short_args + short
+ if long:
+ self.__long_args = self.__long_args + long
+
+ def parse(self, args):
+ try:
+ opts, args = getopt.getopt(args, self.__short_args,
+ self.__long_args)
+ except getopt.error:
+ sys.stdout = sys.stderr
+ self.usage()
+ sys.exit(2)
+ self.args = self.args + args
+ for opt, val in opts:
+ if opt in ("-a", "--address"):
+ val = val.strip()
+ if val:
+ val = "<address>\n%s\n</address>\n" % val
+ self.variables["address"] = val
+ elif opt in ("-h", "--help"):
+ self.usage()
+ sys.exit()
+ elif opt in ("-o", "--output"):
+ self.outputfile = val
+ elif opt in ("-c", "--columns"):
+ self.columns = int(val)
+ elif opt == "--title":
+ self.variables["title"] = val.strip()
+ elif opt == "--uplink":
+ self.uplink = val.strip()
+ elif opt == "--uptitle":
+ self.uptitle = val.strip()
+ elif opt == "--iconserver":
+ self.variables["iconserver"] = val.strip() or "."
+ elif opt == "--favicon":
+ self.favicon = val.strip()
+ elif opt == "--image-type":
+ self.variables["imgtype"] = val.strip()
+ else:
+ self.handle_option(opt, val)
+ if self.uplink and self.uptitle:
+ self.variables["uplinkalt"] = "up"
+ self.variables["uplinkicon"] = "up"
+ else:
+ self.variables["uplinkalt"] = ""
+ self.variables["uplinkicon"] = "blank"
+ self.variables["uplink"] = self.uplink
+ self.variables["uptitle"] = self.uptitle
+
+ def handle_option(self, opt, val):
+ raise getopt.error("option %s not recognized" % opt)
+
+ def get_header(self):
+ s = HEAD % self.variables
+ if self.uplink:
+ if self.uptitle:
+ link = ('<link rel="up" href="%s" title="%s">\n '
+ '<link rel="start" href="%s" title="%s">'
+ % (self.uplink, self.uptitle,
+ self.uplink, self.uptitle))
+ else:
+ link = ('<link rel="up" href="%s">\n '
+ '<link rel="start" href="%s">'
+ % (self.uplink, self.uplink))
+ repl = " %s\n</head>" % link
+ s = s.replace("</head>", repl, 1)
+ if self.aesop_type:
+ meta = '<meta name="aesop" content="%s">\n ' % self.aesop_type
+ # Insert this in the middle of the head that's been
+ # generated so far, keeping <meta> and <link> elements in
+ # neat groups:
+ s = s.replace("<link ", meta + "<link ", 1)
+ if self.favicon:
+ ext = os.path.splitext(self.favicon)[1]
+ if ext in (".gif", ".png"):
+ type = ' type="image/%s"' % ext[1:]
+ else:
+ type = ''
+ link = ('<link rel="SHORTCUT ICON" href="%s"%s>\n '
+ % (self.favicon, type))
+ s = s.replace("<link ", link + "<link ", 1)
+ return s
+
+ def get_footer(self):
+ return TAIL % self.variables
+
+ def get_output_file(self, filename=None):
+ if filename is None:
+ filename = self.outputfile
+ if filename == "-":
+ return sys.stdout
+ else:
+ return open(filename, "w")
+
+
+NAVIGATION = '''\
+<div class="navigation">
+<table width="100%%" cellpadding="0" cellspacing="2">
+<tr>
+<td><img width="32" height="32" align="bottom" border="0" alt=""
+ src="%(iconserver)s/blank.%(imgtype)s"></td>
+<td><a href="%(uplink)s"
+ title="%(uptitle)s"><img width="32" height="32" align="bottom" border="0"
+ alt="%(uplinkalt)s"
+ src="%(iconserver)s/%(uplinkicon)s.%(imgtype)s"></a></td>
+<td><img width="32" height="32" align="bottom" border="0" alt=""
+ src="%(iconserver)s/blank.%(imgtype)s"></td>
+<td align="center" width="100%%">%(title)s</td>
+<td><img width="32" height="32" align="bottom" border="0" alt=""
+ src="%(iconserver)s/blank.%(imgtype)s"></td>
+<td><img width="32" height="32" align="bottom" border="0" alt=""
+ src="%(iconserver)s/blank.%(imgtype)s"></td>
+<td><img width="32" height="32" align="bottom" border="0" alt=""
+ src="%(iconserver)s/blank.%(imgtype)s"></td>
+</tr></table>
+<b class="navlabel">Up:</b> <span class="sectref"><a href="%(uplink)s"
+ title="%(uptitle)s">%(uptitle)s</A></span>
+<br></div>
+'''
+
+HEAD = '''\
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>%(title)s</title>
+ <meta name="description" content="%(title)s">
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="STYLESHEET" href="lib/lib.css">
+</head>
+<body>
+''' + NAVIGATION + '''\
+<hr>
+
+<h2>%(title)s</h2>
+
+'''
+
+TAIL = "<hr>\n" + NAVIGATION + '''\
+%(address)s</body>
+</html>
+'''