aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cvs2svn_lib/man_writer.py')
-rw-r--r--cvs2svn_lib/man_writer.py197
1 files changed, 0 insertions, 197 deletions
diff --git a/cvs2svn_lib/man_writer.py b/cvs2svn_lib/man_writer.py
deleted file mode 100644
index 3cca8c9..0000000
--- a/cvs2svn_lib/man_writer.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# (Be in -*- python -*- mode.)
-#
-# ====================================================================
-# Copyright (c) 2009 CollabNet. All rights reserved.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at http://subversion.tigris.org/license-1.html.
-# If newer versions of this license are posted there, you may use a
-# newer version instead, at your option.
-#
-# This software consists of voluntary contributions made by many
-# individuals. For exact contribution history, see the revision
-# history and logs, available at http://cvs2svn.tigris.org/.
-# ====================================================================
-
-"""This module contains the ManWriter class for outputting manpages."""
-
-
-import datetime
-import optparse
-import re
-
-
-whitespace_re = re.compile(r'\s+')
-
-def wrap(s, width=70):
- # Convert all whitespace substrings to single spaces:
- s = whitespace_re.sub(' ', s)
- s = s.strip()
- retval = []
- while s:
- if len(s) <= width:
- retval.append(s)
- break
- i = s.rfind(' ', 0, width + 1)
- if i == -1:
- # There were no spaces within the first width+1 characters; break
- # at the next space after width:
- i = s.find(' ', width + 1)
- if i == -1:
- # There were no spaces in s at all.
- retval.append(s)
- break
-
- retval.append(s[:i].rstrip())
- s = s[i+1:].lstrip()
-
- for (i,line) in enumerate(retval):
- if line.startswith('\'') or line.startswith('.'):
- # These are roff control characters and have to be escaped:
- retval[i] = '\\' + line
-
- return '\n'.join(retval)
-
-
-class ManOption(optparse.Option):
- """An optparse.Option that holds an explicit string for the man page."""
-
- def __init__(self, *args, **kw):
- self.man_help = kw.pop('man_help')
- optparse.Option.__init__(self, *args, **kw)
-
-
-class ManWriter(object):
- def __init__(
- self,
- parser,
- section, date, source, manual,
- short_desc, synopsis, long_desc, files, authors, see_also,
- ):
- self.parser = parser
- self.section = section
- self.date = date
- self.source = source
- self.manual = manual
- self.short_desc = short_desc
- self.synopsis = synopsis
- self.long_desc = long_desc
- self.files = files
- self.authors = authors
- self.see_also = see_also
-
- def write_title(self, f):
- f.write('.\\" Process this file with\n')
- f.write(
- '.\\" groff -man -Tascii %s.%s\n' % (
- self.parser.get_prog_name(),
- self.section,
- )
- )
- f.write(
- '.TH %s "%s" "%s" "%s" "%s"\n' % (
- self.parser.get_prog_name().upper(),
- self.section,
- self.date.strftime('%b %d, %Y'),
- self.source,
- self.manual,
- )
- )
-
- def write_name(self, f):
- f.write('.SH "NAME"\n')
- f.write(
- '%s \- %s\n' % (
- self.parser.get_prog_name(),
- self.short_desc,
- )
- )
-
- def write_synopsis(self, f):
- f.write('.SH "SYNOPSIS"\n')
- f.write(self.synopsis)
-
- def write_description(self, f):
- f.write('.SH "DESCRIPTION"\n')
- f.write(self.long_desc)
-
- def _get_option_strings(self, option):
- """Return a list of option strings formatted with their metavariables.
-
- This method is very similar to
- optparse.HelpFormatter.format_option_strings().
-
- """
-
- if option.takes_value():
- metavar = (option.metavar or option.dest).lower()
- short_opts = [
- '\\fB%s\\fR \\fI%s\\fR' % (opt, metavar)
- for opt in option._short_opts
- ]
- long_opts = [
- '\\fB%s\\fR=\\fI%s\\fR' % (opt, metavar)
- for opt in option._long_opts
- ]
- else:
- short_opts = [
- '\\fB%s\\fR' % (opt,)
- for opt in option._short_opts
- ]
- long_opts = [
- '\\fB%s\\fR' % (opt,)
- for opt in option._long_opts
- ]
-
- return short_opts + long_opts
-
- def _write_option(self, f, option):
- man_help = getattr(option, 'man_help', option.help)
-
- if man_help is not optparse.SUPPRESS_HELP:
- man_help = wrap(man_help)
- f.write('.IP "%s"\n' % (', '.join(self._get_option_strings(option)),))
- f.write('%s\n' % (man_help,))
-
- def _write_container_help(self, f, container):
- for option in container.option_list:
- if option.help is not optparse.SUPPRESS_HELP:
- self._write_option(f, option)
-
- def write_options(self, f):
- f.write('.SH "OPTIONS"\n')
- if self.parser.option_list:
- (self._write_container_help(f, self.parser))
- for group in self.parser.option_groups:
- f.write('.SH "%s"\n' % (group.title.upper(),))
- if group.description:
- f.write(self.format_description(group.description) + '\n')
- self._write_container_help(f, group)
-
- def write_files(self, f):
- f.write('.SH "FILES"\n')
- f.write(self.files)
-
- def write_authors(self, f):
- f.write('.SH "AUTHORS"\n')
- f.write(self.authors)
-
- def write_see_also(self, f):
- f.write('.SH "SEE ALSO"\n')
- f.write(', '.join([
- '%s(%s)' % (name, section,)
- for (name, section,) in self.see_also
- ]) + '\n')
-
- def write_manpage(self, f):
- self.write_title(f)
- self.write_name(f)
- self.write_synopsis(f)
- self.write_description(f)
- self.write_options(f)
- self.write_files(f)
- self.write_authors(f)
- self.write_see_also(f)
-
-