#! /usr/bin/env python assert __name__ == "__main__" import os.path as path from macro import Macro, writeFile from optparse import OptionParser opts = OptionParser() opts.add_option('-v', "--verbose", dest = "verbose", default = False, action = "store_true") opts.add_option('', "--input-encoding", dest = "inEncode", default = "latin-1") opts.add_option('', "--output-encoding", dest = "outEncode", default = "latin1") opts.add_option('', "--output-dir", dest = "outDir", default = "stage") opts.add_option('', "--output-suffix", dest = "suffix", default = ".html") (options, args) = opts.parse_args() tmpl = """\ Autoconf Macro: %(name)s
Autoconf Archive Macros by Category
Search:

%(name)s

SYNOPSIS

%(synopsis)s

DESCRIPTION

%(description)s

SOURCE CODE

Download %(name)s.m4 or browse the revision history.

LICENSE

%(authors)s

%(license)s """ def quoteHtml(buf): return buf.replace('&', "&").replace('<', "<").replace('>', ">") def formatParagraph(para): assert para assert para[0] assert para[0][0] if para[0][0].isspace(): return "
%s
" % quoteHtml('\n'.join(para)) else: return "

%s

" % quoteHtml('\n'.join(para)) def formatAuthor(a): assert a a["year"] = quoteHtml(a["year"]) a["name"] = quoteHtml(a["name"]) if "email" in a: a["email"] = quoteHtml(a["email"]) return "Copyright © %(year)s %(name)s <%(email)s>" % a else: return "Copyright © %(year)s %(name)s" % a for m4File in args: (stem,suff) = path.splitext(path.basename(m4File)) assert suff == ".m4" outFile = path.join(options.outDir, stem + options.suffix) assert outFile != m4File if options.verbose: print m4File, "->", outFile m = Macro(m4File, options.inEncode) m.synopsis = "
\n".join([ "%s" % quoteHtml(l) for l in m.synopsis ]) m.description = '\n\n'.join(map(formatParagraph, m.description)) m.description = m.description.replace("\n\n
", "\n\n")
  m.authors = "
\n".join(map(formatAuthor, m.authors)) m.license = '\n'.join(map(formatParagraph, m.license)) writeFile(outFile, options.outEncode, tmpl % m.__dict__)