summaryrefslogtreecommitdiff
path: root/cliapp/genman.py
diff options
context:
space:
mode:
Diffstat (limited to 'cliapp/genman.py')
-rw-r--r--cliapp/genman.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/cliapp/genman.py b/cliapp/genman.py
index efad53b..e81fcfe 100644
--- a/cliapp/genman.py
+++ b/cliapp/genman.py
@@ -1,15 +1,15 @@
# Copyright (C) 2011 Lars Wirzenius
-#
+#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
@@ -22,13 +22,13 @@ import re
class ManpageGenerator(object):
'''Fill in a manual page template from an OptionParser instance.'''
-
+
def __init__(self, template, parser, arg_synopsis, cmd_synopsis):
self.template = template
self.parser = parser
self.arg_synopsis = arg_synopsis
self.cmd_synopsis = cmd_synopsis
-
+
def sort_options(self, options):
return sorted(options,
key=lambda o: (o._long_opts + o._short_opts)[0])
@@ -39,7 +39,7 @@ class ManpageGenerator(object):
@property
def options(self):
return self.option_list(self.parser)
-
+
def format_template(self):
sections = (('SYNOPSIS', self.format_synopsis()),
('OPTIONS', self.format_options()))
@@ -48,12 +48,12 @@ class ManpageGenerator(object):
pattern = '\n.SH %s\n' % section
text = text.replace(pattern, pattern + contents)
return text
-
+
def format_synopsis(self):
lines = []
lines += ['.nh']
lines += ['.B %s' % self.esc_dashes(self.parser.prog)]
-
+
all_options = self.option_list(self.parser)
for group in self.parser.option_groups:
all_options += self.option_list(group)
@@ -74,7 +74,7 @@ class ManpageGenerator(object):
lines += ['.hy']
return ''.join('%s\n' % line for line in lines)
-
+
def format_option_for_synopsis(self, option):
if option.metavar:
suffix = '\\fR=\\fI%s' % self.esc_dashes(option.metavar)
@@ -85,7 +85,7 @@ class ManpageGenerator(object):
def format_options(self):
lines = []
-
+
for option in self.sort_options(self.parser.option_list):
lines += self.format_option_for_options(option)
@@ -109,7 +109,7 @@ class ManpageGenerator(object):
lines += ['.BR ' + ' ", " '.join(shorts + longs)]
lines += [self.esc_dots(self.expand_default(option).strip())]
return lines
-
+
def expand_default(self, option):
default = self.parser.defaults.get(option.dest)
if default is optparse.NO_DEFAULT or default is None:
@@ -117,16 +117,16 @@ class ManpageGenerator(object):
else:
default = str(default)
return option.help.replace('%default', default)
-
+
def esc_dashes(self, optname):
return '\\-'.join(optname.split('-'))
-
+
def esc_dots(self, line):
if line.startswith('.'):
return '\\' + line
else:
return line
-
+
def format_argspec(self, argspec):
roman = re.compile(r'[^A-Z]+')
italic = re.compile(r'[A-Z]+')