doc/hgmanpage.py
author Martin Geisler <mg@aragost.com>
Fri, 06 May 2011 11:31:40 +0200
changeset 14218 202ff575d49b
parent 12865 4c50552fc9bc
child 14633 cdda48c93676
permissions -rw-r--r--
patch: fix clash between local variable and exception instance The local err variable would be bound to PatchError thrown and it keeps this value even after the except block is executed. The whole thing worked anyway since the rejected variable is set in the except block and this makes the function return -1 when a PatchError is thrown.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     2
# $Id: manpage.py 6110 2009-08-31 14:40:33Z grubert $
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     3
# Author: Engelbert Gruber <grubert@users.sourceforge.net>
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     4
# Copyright: This module is put into the public domain.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     5
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     6
"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     7
Simple man page writer for reStructuredText.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     8
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     9
Man pages (short for "manual pages") contain system documentation on unix-like
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
    10
systems. The pages are grouped in numbered sections:
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    11
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    12
 1 executable programs and shell commands
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    13
 2 system calls
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    14
 3 library functions
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    15
 4 special files
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    16
 5 file formats
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    17
 6 games
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    18
 7 miscellaneous
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    19
 8 system administration
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    20
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    21
Man pages are written *troff*, a text file formatting system.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    22
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    23
See http://www.tldp.org/HOWTO/Man-Page for a start.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    24
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    25
Man pages have no subsection only parts.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    26
Standard parts
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    27
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    28
  NAME ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    29
  SYNOPSIS ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    30
  DESCRIPTION ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    31
  OPTIONS ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    32
  FILES ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    33
  SEE ALSO ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    34
  BUGS ,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    35
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    36
and
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    37
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    38
  AUTHOR .
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    39
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    40
A unix-like system keeps an index of the DESCRIPTIONs, which is accesable
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    41
by the command whatis or apropos.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    42
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    43
"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    44
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    45
__docformat__ = 'reStructuredText'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    46
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    47
import re
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    48
10905
13a1b2fb7ef2 pylint, pyflakes: remove unused or duplicate imports
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10413
diff changeset
    49
from docutils import nodes, writers, languages
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    50
import roman
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    51
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    52
FIELD_LIST_INDENT = 7
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    53
DEFINITION_LIST_INDENT = 7
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    54
OPTION_LIST_INDENT = 7
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    55
BLOCKQOUTE_INDENT = 3.5
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    56
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    57
# Define two macros so man/roff can calculate the
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    58
# indent/unindent margins by itself
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    59
MACRO_DEF = (r""".
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    60
.nr rst2man-indent-level 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    61
.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    62
.de1 rstReportMargin
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    63
\\$1 \\n[an-margin]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    64
level \\n[rst2man-indent-level]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    65
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    66
-
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    67
\\n[rst2man-indent0]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    68
\\n[rst2man-indent1]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    69
\\n[rst2man-indent2]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    70
..
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    71
.de1 INDENT
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    72
.\" .rstReportMargin pre:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    73
. RS \\$1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    74
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    75
. nr rst2man-indent-level +1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    76
.\" .rstReportMargin post:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    77
..
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    78
.de UNINDENT
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    79
. RE
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    80
.\" indent \\n[an-margin]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    81
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    82
.nr rst2man-indent-level -1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    83
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    84
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    85
..
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    86
""")
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    87
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    88
class Writer(writers.Writer):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    89
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    90
    supported = ('manpage')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    91
    """Formats this writer supports."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    92
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    93
    output = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    94
    """Final translated form of `document`."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    95
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    96
    def __init__(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    97
        writers.Writer.__init__(self)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    98
        self.translator_class = Translator
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    99
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   100
    def translate(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   101
        visitor = self.translator_class(self.document)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   102
        self.document.walkabout(visitor)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   103
        self.output = visitor.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   104
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   105
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   106
class Table:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   107
    def __init__(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   108
        self._rows = []
10413
e433002acb05 fix up a bunch of check-code warnings
Matt Mackall <mpm@selenic.com>
parents: 10282
diff changeset
   109
        self._options = ['center']
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   110
        self._tab_char = '\t'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   111
        self._coldefs = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   112
    def new_row(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   113
        self._rows.append([])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   114
    def append_separator(self, separator):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   115
        """Append the separator for table head."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   116
        self._rows.append([separator])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   117
    def append_cell(self, cell_lines):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   118
        """cell_lines is an array of lines"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   119
        start = 0
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   120
        if len(cell_lines) > 0 and cell_lines[0] == '.sp\n':
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   121
            start = 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   122
        self._rows[-1].append(cell_lines[start:])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   123
        if len(self._coldefs) < len(self._rows[-1]):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   124
            self._coldefs.append('l')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   125
    def _minimize_cell(self, cell_lines):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   126
        """Remove leading and trailing blank and ``.sp`` lines"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   127
        while (cell_lines and cell_lines[0] in ('\n', '.sp\n')):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   128
            del cell_lines[0]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   129
        while (cell_lines and cell_lines[-1] in ('\n', '.sp\n')):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   130
            del cell_lines[-1]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   131
    def as_list(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   132
        text = ['.TS\n']
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   133
        text.append(' '.join(self._options) + ';\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   134
        text.append('|%s|.\n' % ('|'.join(self._coldefs)))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   135
        for row in self._rows:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   136
            # row = array of cells. cell = array of lines.
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   137
            text.append('_\n')       # line above
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   138
            text.append('T{\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   139
            for i in range(len(row)):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   140
                cell = row[i]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   141
                self._minimize_cell(cell)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   142
                text.extend(cell)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   143
                if not text[-1].endswith('\n'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   144
                    text[-1] += '\n'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   145
                if i < len(row)-1:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   146
                    text.append('T}'+self._tab_char+'T{\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   147
                else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   148
                    text.append('T}\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   149
        text.append('_\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   150
        text.append('.TE\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   151
        return text
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   152
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   153
class Translator(nodes.NodeVisitor):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   154
    """"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   155
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   156
    words_and_spaces = re.compile(r'\S+| +|\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   157
    document_start = """Man page generated from reStructeredText."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   158
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   159
    def __init__(self, document):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   160
        nodes.NodeVisitor.__init__(self, document)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   161
        self.settings = settings = document.settings
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   162
        lcode = settings.language_code
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   163
        self.language = languages.get_language(lcode)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   164
        self.head = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   165
        self.body = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   166
        self.foot = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   167
        self.section_level = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   168
        self.context = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   169
        self.topic_class = ''
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   170
        self.colspecs = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   171
        self.compact_p = 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   172
        self.compact_simple = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   173
        # the list style "*" bullet or "#" numbered
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   174
        self._list_char = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   175
        # writing the header .TH and .SH NAME is postboned after
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   176
        # docinfo.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   177
        self._docinfo = {
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   178
                "title" : "", "title_upper": "",
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   179
                "subtitle" : "",
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   180
                "manual_section" : "", "manual_group" : "",
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   181
                "author" : [],
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   182
                "date" : "",
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   183
                "copyright" : "",
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   184
                "version" : "",
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   185
                    }
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   186
        self._docinfo_keys = []     # a list to keep the sequence as in source.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   187
        self._docinfo_names = {}    # to get name from text not normalized.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   188
        self._in_docinfo = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   189
        self._active_table = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   190
        self._in_literal = False
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   191
        self.header_written = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   192
        self._line_block = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   193
        self.authors = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   194
        self.section_level = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   195
        self._indent = [0]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   196
        # central definition of simple processing rules
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   197
        # what to output on : visit, depart
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   198
        # Do not use paragraph requests ``.PP`` because these set indentation.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   199
        # use ``.sp``. Remove superfluous ``.sp`` in ``astext``.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   200
        #
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   201
        # Fonts are put on a stack, the top one is used.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   202
        # ``.ft P`` or ``\\fP`` pop from stack.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   203
        # ``B`` bold, ``I`` italic, ``R`` roman should be available.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   204
        # Hopefully ``C`` courier too.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   205
        self.defs = {
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   206
                'indent' : ('.INDENT %.1f\n', '.UNINDENT\n'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   207
                'definition_list_item' : ('.TP', ''),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   208
                'field_name' : ('.TP\n.B ', '\n'),
9628
816564f5dea9 rst2man: highlight inline literals in bold
Martin Geisler <mg@lazybytes.net>
parents: 9627
diff changeset
   209
                'literal' : ('\\fB', '\\fP'),
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   210
                'literal_block' : ('.sp\n.nf\n.ft C\n', '\n.ft P\n.fi\n'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   211
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   212
                'option_list_item' : ('.TP\n', ''),
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   213
9627
4515761ea531 rst2man: avoid italic for references
Martin Geisler <mg@lazybytes.net>
parents: 9418
diff changeset
   214
                'reference' : (r'\%', r'\:'),
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   215
                'emphasis': ('\\fI', '\\fP'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   216
                'strong' : ('\\fB', '\\fP'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   217
                'term' : ('\n.B ', '\n'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   218
                'title_reference' : ('\\fI', '\\fP'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   219
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   220
                'topic-title' : ('.SS ',),
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   221
                'sidebar-title' : ('.SS ',),
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   222
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   223
                'problematic' : ('\n.nf\n', '\n.fi\n'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   224
                    }
10007
9945a39d171f rst2man: s/dont/don't/ in comment
Christian Ebert <blacktrash@gmx.net>
parents: 10006
diff changeset
   225
        # NOTE don't specify the newline before a dot-command, but ensure
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   226
        # it is there.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   227
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   228
    def comment_begin(self, text):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   229
        """Return commented version of the passed text WITHOUT end of
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   230
        line/comment."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   231
        prefix = '.\\" '
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   232
        out_text = ''.join(
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   233
            [(prefix + in_line + '\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   234
            for in_line in text.split('\n')])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   235
        return out_text
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   236
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   237
    def comment(self, text):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   238
        """Return commented version of the passed text."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   239
        return self.comment_begin(text)+'.\n'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   240
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   241
    def ensure_eol(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   242
        """Ensure the last line in body is terminated by new line."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   243
        if self.body[-1][-1] != '\n':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   244
            self.body.append('\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   245
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   246
    def astext(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   247
        """Return the final formatted document as a string."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   248
        if not self.header_written:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   249
            # ensure we get a ".TH" as viewers require it.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   250
            self.head.append(self.header())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   251
        # filter body
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   252
        for i in xrange(len(self.body)-1, 0, -1):
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   253
            # remove superfluous vertical gaps.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   254
            if self.body[i] == '.sp\n':
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   255
                if self.body[i - 1][:4] in ('.BI ','.IP '):
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   256
                    self.body[i] = '.\n'
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   257
                elif (self.body[i - 1][:3] == '.B ' and
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   258
                    self.body[i - 2][:4] == '.TP\n'):
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   259
                    self.body[i] = '.\n'
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   260
                elif (self.body[i - 1] == '\n' and
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   261
                    self.body[i - 2][0] != '.' and
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   262
                    (self.body[i - 3][:7] == '.TP\n.B '
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   263
                        or self.body[i - 3][:4] == '\n.B ')
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   264
                     ):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   265
                    self.body[i] = '.\n'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   266
        return ''.join(self.head + self.body + self.foot)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   267
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   268
    def deunicode(self, text):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   269
        text = text.replace(u'\xa0', '\\ ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   270
        text = text.replace(u'\u2020', '\\(dg')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   271
        return text
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   272
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   273
    def visit_Text(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   274
        text = node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   275
        text = text.replace('\\','\\e')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   276
        replace_pairs = [
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   277
            (u'-', ur'\-'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   278
            (u'\'', ur'\(aq'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   279
            (u'´', ur'\''),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   280
            (u'`', ur'\(ga'),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   281
            ]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   282
        for (in_char, out_markup) in replace_pairs:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   283
            text = text.replace(in_char, out_markup)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   284
        # unicode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   285
        text = self.deunicode(text)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   286
        if self._in_literal:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   287
            # prevent interpretation of "." at line start
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   288
            if text[0] == '.':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   289
                text = '\\&' + text
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   290
            text = text.replace('\n.', '\n\\&.')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   291
        self.body.append(text)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   292
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   293
    def depart_Text(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   294
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   295
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   296
    def list_start(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   297
        class enum_char:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   298
            enum_style = {
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   299
                    'bullet'     : '\\(bu',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   300
                    'emdash'     : '\\(em',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   301
                     }
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   302
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   303
            def __init__(self, style):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   304
                self._style = style
11643
50fede14fe4d doc: remove has_key usage in hgmanpage
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11639
diff changeset
   305
                if 'start' in node:
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   306
                    self._cnt = node['start'] - 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   307
                else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   308
                    self._cnt = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   309
                self._indent = 2
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   310
                if style == 'arabic':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   311
                    # indentation depends on number of childrens
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   312
                    # and start value.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   313
                    self._indent = len(str(len(node.children)))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   314
                    self._indent += len(str(self._cnt)) + 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   315
                elif style == 'loweralpha':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   316
                    self._cnt += ord('a') - 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   317
                    self._indent = 3
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   318
                elif style == 'upperalpha':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   319
                    self._cnt += ord('A') - 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   320
                    self._indent = 3
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   321
                elif style.endswith('roman'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   322
                    self._indent = 5
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   323
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   324
            def next(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   325
                if self._style == 'bullet':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   326
                    return self.enum_style[self._style]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   327
                elif self._style == 'emdash':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   328
                    return self.enum_style[self._style]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   329
                self._cnt += 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   330
                # TODO add prefix postfix
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   331
                if self._style == 'arabic':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   332
                    return "%d." % self._cnt
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   333
                elif self._style in ('loweralpha', 'upperalpha'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   334
                    return "%c." % self._cnt
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   335
                elif self._style.endswith('roman'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   336
                    res = roman.toRoman(self._cnt) + '.'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   337
                    if self._style.startswith('upper'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   338
                        return res.upper()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   339
                    return res.lower()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   340
                else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   341
                    return "%d." % self._cnt
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   342
            def get_width(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   343
                return self._indent
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   344
            def __repr__(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   345
                return 'enum_style-%s' % list(self._style)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   346
11643
50fede14fe4d doc: remove has_key usage in hgmanpage
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 11639
diff changeset
   347
        if 'enumtype' in node:
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   348
            self._list_char.append(enum_char(node['enumtype']))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   349
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   350
            self._list_char.append(enum_char('bullet'))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   351
        if len(self._list_char) > 1:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   352
            # indent nested lists
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   353
            self.indent(self._list_char[-2].get_width())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   354
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   355
            self.indent(self._list_char[-1].get_width())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   356
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   357
    def list_end(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   358
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   359
        self._list_char.pop()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   360
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   361
    def header(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   362
        tmpl = (".TH %(title_upper)s %(manual_section)s"
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   363
                " \"%(date)s\" \"%(version)s\" \"%(manual_group)s\"\n"
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   364
                ".SH NAME\n"
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   365
                "%(title)s \- %(subtitle)s\n")
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   366
        return tmpl % self._docinfo
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   367
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   368
    def append_header(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   369
        """append header with .TH and .SH NAME"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   370
        # NOTE before everything
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   371
        # .TH title_upper section date source manual
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   372
        if self.header_written:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   373
            return
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   374
        self.body.append(self.header())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   375
        self.body.append(MACRO_DEF)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   376
        self.header_written = 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   377
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   378
    def visit_address(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   379
        self.visit_docinfo_item(node, 'address')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   380
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   381
    def depart_address(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   382
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   383
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   384
    def visit_admonition(self, node, name=None):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   385
        if name:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   386
            self.body.append('.IP %s\n' %
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   387
                        self.language.labels.get(name, name))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   388
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   389
    def depart_admonition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   390
        self.body.append('.RE\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   391
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   392
    def visit_attention(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   393
        self.visit_admonition(node, 'attention')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   394
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   395
    depart_attention = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   396
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   397
    def visit_docinfo_item(self, node, name):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   398
        if name == 'author':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   399
            self._docinfo[name].append(node.astext())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   400
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   401
            self._docinfo[name] = node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   402
        self._docinfo_keys.append(name)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   403
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   404
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   405
    def depart_docinfo_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   406
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   407
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   408
    def visit_author(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   409
        self.visit_docinfo_item(node, 'author')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   410
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   411
    depart_author = depart_docinfo_item
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   412
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   413
    def visit_authors(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   414
        # _author is called anyway.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   415
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   416
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   417
    def depart_authors(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   418
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   419
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   420
    def visit_block_quote(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   421
        # BUG/HACK: indent alway uses the _last_ indention,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   422
        # thus we need two of them.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   423
        self.indent(BLOCKQOUTE_INDENT)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   424
        self.indent(0)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   425
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   426
    def depart_block_quote(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   427
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   428
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   429
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   430
    def visit_bullet_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   431
        self.list_start(node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   432
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   433
    def depart_bullet_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   434
        self.list_end()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   435
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   436
    def visit_caption(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   437
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   438
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   439
    def depart_caption(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   440
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   441
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   442
    def visit_caution(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   443
        self.visit_admonition(node, 'caution')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   444
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   445
    depart_caution = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   446
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   447
    def visit_citation(self, node):
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   448
        num, text = node.astext().split(None, 1)
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   449
        num = num.strip()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   450
        self.body.append('.IP [%s] 5\n' % num)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   451
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   452
    def depart_citation(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   453
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   454
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   455
    def visit_citation_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   456
        self.body.append('['+node.astext()+']')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   457
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   458
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   459
    def visit_classifier(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   460
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   461
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   462
    def depart_classifier(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   463
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   464
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   465
    def visit_colspec(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   466
        self.colspecs.append(node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   467
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   468
    def depart_colspec(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   469
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   470
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   471
    def write_colspecs(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   472
        self.body.append("%s.\n" % ('L '*len(self.colspecs)))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   473
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   474
    def visit_comment(self, node,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   475
                      sub=re.compile('-(?=-)').sub):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   476
        self.body.append(self.comment(node.astext()))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   477
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   478
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   479
    def visit_contact(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   480
        self.visit_docinfo_item(node, 'contact')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   481
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   482
    depart_contact = depart_docinfo_item
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   483
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   484
    def visit_container(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   485
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   486
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   487
    def depart_container(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   488
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   489
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   490
    def visit_compound(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   491
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   492
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   493
    def depart_compound(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   494
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   495
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   496
    def visit_copyright(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   497
        self.visit_docinfo_item(node, 'copyright')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   498
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   499
    def visit_danger(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   500
        self.visit_admonition(node, 'danger')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   501
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   502
    depart_danger = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   503
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   504
    def visit_date(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   505
        self.visit_docinfo_item(node, 'date')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   506
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   507
    def visit_decoration(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   508
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   509
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   510
    def depart_decoration(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   511
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   512
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   513
    def visit_definition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   514
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   515
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   516
    def depart_definition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   517
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   518
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   519
    def visit_definition_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   520
        self.indent(DEFINITION_LIST_INDENT)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   521
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   522
    def depart_definition_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   523
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   524
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   525
    def visit_definition_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   526
        self.body.append(self.defs['definition_list_item'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   527
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   528
    def depart_definition_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   529
        self.body.append(self.defs['definition_list_item'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   530
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   531
    def visit_description(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   532
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   533
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   534
    def depart_description(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   535
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   536
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   537
    def visit_docinfo(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   538
        self._in_docinfo = 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   539
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   540
    def depart_docinfo(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   541
        self._in_docinfo = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   542
        # NOTE nothing should be written before this
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   543
        self.append_header()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   544
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   545
    def visit_doctest_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   546
        self.body.append(self.defs['literal_block'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   547
        self._in_literal = True
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   548
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   549
    def depart_doctest_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   550
        self._in_literal = False
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   551
        self.body.append(self.defs['literal_block'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   552
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   553
    def visit_document(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   554
        # no blank line between comment and header.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   555
        self.body.append(self.comment(self.document_start).rstrip()+'\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   556
        # writing header is postboned
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   557
        self.header_written = 0
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   558
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   559
    def depart_document(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   560
        if self._docinfo['author']:
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   561
            self.body.append('.SH AUTHOR\n%s\n'
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   562
                    % ', '.join(self._docinfo['author']))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   563
        skip = ('author', 'copyright', 'date',
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   564
                'manual_group', 'manual_section',
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   565
                'subtitle',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   566
                'title', 'title_upper', 'version')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   567
        for name in self._docinfo_keys:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   568
            if name == 'address':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   569
                self.body.append("\n%s:\n%s%s.nf\n%s\n.fi\n%s%s" % (
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   570
                                    self.language.labels.get(name, name),
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   571
                                    self.defs['indent'][0] % 0,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   572
                                    self.defs['indent'][0] % BLOCKQOUTE_INDENT,
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   573
                                    self._docinfo[name],
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   574
                                    self.defs['indent'][1],
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   575
                                    self.defs['indent'][1]))
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   576
            elif not name in skip:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   577
                if name in self._docinfo_names:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   578
                    label = self._docinfo_names[name]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   579
                else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   580
                    label = self.language.labels.get(name, name)
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   581
                self.body.append("\n%s: %s\n" % (label, self._docinfo[name]))
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   582
        if self._docinfo['copyright']:
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   583
            self.body.append('.SH COPYRIGHT\n%s\n'
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   584
                    % self._docinfo['copyright'])
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   585
        self.body.append(self.comment(
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   586
                        'Generated by docutils manpage writer.\n'))
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   587
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   588
    def visit_emphasis(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   589
        self.body.append(self.defs['emphasis'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   590
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   591
    def depart_emphasis(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   592
        self.body.append(self.defs['emphasis'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   593
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   594
    def visit_entry(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   595
        # a cell in a table row
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   596
        if 'morerows' in node:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   597
            self.document.reporter.warning('"table row spanning" not supported',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   598
                    base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   599
        if 'morecols' in node:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   600
            self.document.reporter.warning(
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   601
                    '"table cell spanning" not supported', base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   602
        self.context.append(len(self.body))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   603
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   604
    def depart_entry(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   605
        start = self.context.pop()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   606
        self._active_table.append_cell(self.body[start:])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   607
        del self.body[start:]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   608
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   609
    def visit_enumerated_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   610
        self.list_start(node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   611
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   612
    def depart_enumerated_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   613
        self.list_end()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   614
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   615
    def visit_error(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   616
        self.visit_admonition(node, 'error')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   617
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   618
    depart_error = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   619
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   620
    def visit_field(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   621
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   622
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   623
    def depart_field(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   624
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   625
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   626
    def visit_field_body(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   627
        if self._in_docinfo:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   628
            name_normalized = self._field_name.lower().replace(" ","_")
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   629
            self._docinfo_names[name_normalized] = self._field_name
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   630
            self.visit_docinfo_item(node, name_normalized)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   631
            raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   632
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   633
    def depart_field_body(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   634
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   635
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   636
    def visit_field_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   637
        self.indent(FIELD_LIST_INDENT)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   638
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   639
    def depart_field_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   640
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   641
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   642
    def visit_field_name(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   643
        if self._in_docinfo:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   644
            self._field_name = node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   645
            raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   646
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   647
            self.body.append(self.defs['field_name'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   648
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   649
    def depart_field_name(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   650
        self.body.append(self.defs['field_name'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   651
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   652
    def visit_figure(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   653
        self.indent(2.5)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   654
        self.indent(0)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   655
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   656
    def depart_figure(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   657
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   658
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   659
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   660
    def visit_footer(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   661
        self.document.reporter.warning('"footer" not supported',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   662
                base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   663
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   664
    def depart_footer(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   665
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   666
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   667
    def visit_footnote(self, node):
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   668
        num, text = node.astext().split(None, 1)
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   669
        num = num.strip()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   670
        self.body.append('.IP [%s] 5\n' % self.deunicode(num))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   671
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   672
    def depart_footnote(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   673
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   674
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   675
    def footnote_backrefs(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   676
        self.document.reporter.warning('"footnote_backrefs" not supported',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   677
                base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   678
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   679
    def visit_footnote_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   680
        self.body.append('['+self.deunicode(node.astext())+']')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   681
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   682
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   683
    def depart_footnote_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   684
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   685
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   686
    def visit_generated(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   687
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   688
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   689
    def depart_generated(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   690
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   691
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   692
    def visit_header(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   693
        raise NotImplementedError, node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   694
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   695
    def depart_header(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   696
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   697
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   698
    def visit_hint(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   699
        self.visit_admonition(node, 'hint')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   700
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   701
    depart_hint = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   702
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   703
    def visit_subscript(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   704
        self.body.append('\\s-2\\d')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   705
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   706
    def depart_subscript(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   707
        self.body.append('\\u\\s0')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   708
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   709
    def visit_superscript(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   710
        self.body.append('\\s-2\\u')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   711
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   712
    def depart_superscript(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   713
        self.body.append('\\d\\s0')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   714
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   715
    def visit_attribution(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   716
        self.body.append('\\(em ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   717
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   718
    def depart_attribution(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   719
        self.body.append('\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   720
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   721
    def visit_image(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   722
        self.document.reporter.warning('"image" not supported',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   723
                base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   724
        text = []
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   725
        if 'alt' in node.attributes:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   726
            text.append(node.attributes['alt'])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   727
        if 'uri' in node.attributes:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   728
            text.append(node.attributes['uri'])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   729
        self.body.append('[image: %s]\n' % ('/'.join(text)))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   730
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   731
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   732
    def visit_important(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   733
        self.visit_admonition(node, 'important')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   734
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   735
    depart_important = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   736
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   737
    def visit_label(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   738
        # footnote and citation
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   739
        if (isinstance(node.parent, nodes.footnote)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   740
            or isinstance(node.parent, nodes.citation)):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   741
            raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   742
        self.document.reporter.warning('"unsupported "label"',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   743
                base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   744
        self.body.append('[')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   745
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   746
    def depart_label(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   747
        self.body.append(']\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   748
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   749
    def visit_legend(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   750
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   751
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   752
    def depart_legend(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   753
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   754
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   755
    # WHAT should we use .INDENT, .UNINDENT ?
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   756
    def visit_line_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   757
        self._line_block += 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   758
        if self._line_block == 1:
10006
9c142ed9c405 rst2man: separate inline blocks from previous paragraphs
Christian Ebert <blacktrash@gmx.net>
parents: 9793
diff changeset
   759
            self.body.append('.sp\n')
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   760
            self.body.append('.nf\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   761
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   762
            self.body.append('.in +2\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   763
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   764
    def depart_line_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   765
        self._line_block -= 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   766
        if self._line_block == 0:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   767
            self.body.append('.fi\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   768
            self.body.append('.sp\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   769
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   770
            self.body.append('.in -2\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   771
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   772
    def visit_line(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   773
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   774
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   775
    def depart_line(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   776
        self.body.append('\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   777
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   778
    def visit_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   779
        # man 7 man argues to use ".IP" instead of ".TP"
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   780
        self.body.append('.IP %s %d\n' % (
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   781
                self._list_char[-1].next(),
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   782
                self._list_char[-1].get_width(),))
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   783
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   784
    def depart_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   785
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   786
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   787
    def visit_literal(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   788
        self.body.append(self.defs['literal'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   789
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   790
    def depart_literal(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   791
        self.body.append(self.defs['literal'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   792
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   793
    def visit_literal_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   794
        self.body.append(self.defs['literal_block'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   795
        self._in_literal = True
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   796
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   797
    def depart_literal_block(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   798
        self._in_literal = False
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   799
        self.body.append(self.defs['literal_block'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   800
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   801
    def visit_meta(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   802
        raise NotImplementedError, node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   803
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   804
    def depart_meta(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   805
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   806
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   807
    def visit_note(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   808
        self.visit_admonition(node, 'note')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   809
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   810
    depart_note = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   811
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   812
    def indent(self, by=0.5):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   813
        # if we are in a section ".SH" there already is a .RS
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   814
        step = self._indent[-1]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   815
        self._indent.append(by)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   816
        self.body.append(self.defs['indent'][0] % step)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   817
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   818
    def dedent(self):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   819
        self._indent.pop()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   820
        self.body.append(self.defs['indent'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   821
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   822
    def visit_option_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   823
        self.indent(OPTION_LIST_INDENT)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   824
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   825
    def depart_option_list(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   826
        self.dedent()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   827
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   828
    def visit_option_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   829
        # one item of the list
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   830
        self.body.append(self.defs['option_list_item'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   831
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   832
    def depart_option_list_item(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   833
        self.body.append(self.defs['option_list_item'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   834
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   835
    def visit_option_group(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   836
        # as one option could have several forms it is a group
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   837
        # options without parameter bold only, .B, -v
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   838
        # options with parameter bold italic, .BI, -f file
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   839
        #
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   840
        # we do not know if .B or .BI
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   841
        self.context.append('.B')           # blind guess
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   842
        self.context.append(len(self.body)) # to be able to insert later
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   843
        self.context.append(0)              # option counter
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   844
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   845
    def depart_option_group(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   846
        self.context.pop()  # the counter
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   847
        start_position = self.context.pop()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   848
        text = self.body[start_position:]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   849
        del self.body[start_position:]
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   850
        self.body.append('%s%s\n' % (self.context.pop(), ''.join(text)))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   851
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   852
    def visit_option(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   853
        # each form of the option will be presented separately
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   854
        if self.context[-1] > 0:
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   855
            self.body.append(', ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   856
        if self.context[-3] == '.BI':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   857
            self.body.append('\\')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   858
        self.body.append(' ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   859
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   860
    def depart_option(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   861
        self.context[-1] += 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   862
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   863
    def visit_option_string(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   864
        # do not know if .B or .BI
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   865
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   866
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   867
    def depart_option_string(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   868
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   869
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   870
    def visit_option_argument(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   871
        self.context[-3] = '.BI' # bold/italic alternate
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   872
        if node['delimiter'] != ' ':
10282
08a0f04b56bd many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents: 10007
diff changeset
   873
            self.body.append('\\fB%s ' % node['delimiter'])
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   874
        elif self.body[len(self.body)-1].endswith('='):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   875
            # a blank only means no blank in output, just changing font
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   876
            self.body.append(' ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   877
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   878
            # blank backslash blank, switch font then a blank
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   879
            self.body.append(' \\ ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   880
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   881
    def depart_option_argument(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   882
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   883
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   884
    def visit_organization(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   885
        self.visit_docinfo_item(node, 'organization')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   886
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   887
    def depart_organization(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   888
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   889
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   890
    def visit_paragraph(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   891
        # ``.PP`` : Start standard indented paragraph.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   892
        # ``.LP`` : Start block paragraph, all except the first.
9712
18b134ef294c kill trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 9628
diff changeset
   893
        # ``.P [type]``  : Start paragraph type.
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   894
        # NOTE dont use paragraph starts because they reset indentation.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   895
        # ``.sp`` is only vertical space
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   896
        self.ensure_eol()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   897
        self.body.append('.sp\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   898
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   899
    def depart_paragraph(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   900
        self.body.append('\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   901
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   902
    def visit_problematic(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   903
        self.body.append(self.defs['problematic'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   904
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   905
    def depart_problematic(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   906
        self.body.append(self.defs['problematic'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   907
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   908
    def visit_raw(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   909
        if node.get('format') == 'manpage':
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   910
            self.body.append(node.astext() + "\n")
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   911
        # Keep non-manpage raw text out of output:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   912
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   913
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   914
    def visit_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   915
        """E.g. link or email address."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   916
        self.body.append(self.defs['reference'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   917
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   918
    def depart_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   919
        self.body.append(self.defs['reference'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   920
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   921
    def visit_revision(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   922
        self.visit_docinfo_item(node, 'revision')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   923
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   924
    depart_revision = depart_docinfo_item
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   925
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   926
    def visit_row(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   927
        self._active_table.new_row()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   928
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   929
    def depart_row(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   930
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   931
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   932
    def visit_section(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   933
        self.section_level += 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   934
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   935
    def depart_section(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   936
        self.section_level -= 1
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   937
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   938
    def visit_status(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   939
        self.visit_docinfo_item(node, 'status')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   940
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   941
    depart_status = depart_docinfo_item
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   942
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   943
    def visit_strong(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   944
        self.body.append(self.defs['strong'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   945
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   946
    def depart_strong(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   947
        self.body.append(self.defs['strong'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   948
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   949
    def visit_substitution_definition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   950
        """Internal only."""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   951
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   952
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   953
    def visit_substitution_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   954
        self.document.reporter.warning('"substitution_reference" not supported',
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   955
                base_node=node)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   956
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   957
    def visit_subtitle(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   958
        if isinstance(node.parent, nodes.sidebar):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   959
            self.body.append(self.defs['strong'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   960
        elif isinstance(node.parent, nodes.document):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   961
            self.visit_docinfo_item(node, 'subtitle')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   962
        elif isinstance(node.parent, nodes.section):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   963
            self.body.append(self.defs['strong'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   964
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   965
    def depart_subtitle(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   966
        # document subtitle calls SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   967
        self.body.append(self.defs['strong'][1]+'\n.PP\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   968
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   969
    def visit_system_message(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   970
        # TODO add report_level
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   971
        #if node['level'] < self.document.reporter['writer'].report_level:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   972
        #    Level is too low to display:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   973
        #    raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   974
        attr = {}
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   975
        backref_text = ''
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   976
        if node.hasattr('id'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   977
            attr['name'] = node['id']
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   978
        if node.hasattr('line'):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   979
            line = ', line %s' % node['line']
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   980
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   981
            line = ''
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   982
        self.body.append('.IP "System Message: %s/%s (%s:%s)"\n'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   983
                         % (node['type'], node['level'], node['source'], line))
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   984
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   985
    def depart_system_message(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   986
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   987
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   988
    def visit_table(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   989
        self._active_table = Table()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   990
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   991
    def depart_table(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   992
        self.ensure_eol()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   993
        self.body.extend(self._active_table.as_list())
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   994
        self._active_table = None
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   995
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   996
    def visit_target(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   997
        # targets are in-document hyper targets, without any use for man-pages.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   998
        raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   999
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1000
    def visit_tbody(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1001
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1002
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1003
    def depart_tbody(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1004
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1005
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1006
    def visit_term(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1007
        self.body.append(self.defs['term'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1008
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1009
    def depart_term(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1010
        self.body.append(self.defs['term'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1011
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1012
    def visit_tgroup(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1013
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1014
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1015
    def depart_tgroup(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1016
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1017
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1018
    def visit_thead(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1019
        # MAYBE double line '='
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1020
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1021
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1022
    def depart_thead(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1023
        # MAYBE double line '='
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1024
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1025
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1026
    def visit_tip(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1027
        self.visit_admonition(node, 'tip')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1028
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1029
    depart_tip = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1030
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1031
    def visit_title(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1032
        if isinstance(node.parent, nodes.topic):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1033
            self.body.append(self.defs['topic-title'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1034
        elif isinstance(node.parent, nodes.sidebar):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1035
            self.body.append(self.defs['sidebar-title'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1036
        elif isinstance(node.parent, nodes.admonition):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1037
            self.body.append('.IP "')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1038
        elif self.section_level == 0:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1039
            self._docinfo['title'] = node.astext()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1040
            # document title for .TH
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1041
            self._docinfo['title_upper'] = node.astext().upper()
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1042
            raise nodes.SkipNode
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1043
        elif self.section_level == 1:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1044
            self.body.append('.SH ')
9793
d2006e6d1d59 rst2man: more robust uppercasing of section titles
Martin Geisler <mg@lazybytes.net>
parents: 9791
diff changeset
  1045
            for n in node.traverse(nodes.Text):
d2006e6d1d59 rst2man: more robust uppercasing of section titles
Martin Geisler <mg@lazybytes.net>
parents: 9791
diff changeset
  1046
                n.parent.replace(n, nodes.Text(n.astext().upper()))
9418
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1047
        else:
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1048
            self.body.append('.SS ')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1049
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1050
    def depart_title(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1051
        if isinstance(node.parent, nodes.admonition):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1052
            self.body.append('"')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1053
        self.body.append('\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1054
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1055
    def visit_title_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1056
        """inline citation reference"""
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1057
        self.body.append(self.defs['title_reference'][0])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1058
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1059
    def depart_title_reference(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1060
        self.body.append(self.defs['title_reference'][1])
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1061
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1062
    def visit_topic(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1063
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1064
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1065
    def depart_topic(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1066
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1067
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1068
    def visit_sidebar(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1069
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1070
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1071
    def depart_sidebar(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1072
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1073
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1074
    def visit_rubric(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1075
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1076
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1077
    def depart_rubric(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1078
        pass
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1079
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1080
    def visit_transition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1081
        # .PP      Begin a new paragraph and reset prevailing indent.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1082
        # .sp N    leaves N lines of blank space.
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1083
        # .ce      centers the next line
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1084
        self.body.append('\n.sp\n.ce\n----\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1085
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1086
    def depart_transition(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1087
        self.body.append('\n.ce 0\n.sp\n')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1088
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1089
    def visit_version(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1090
        self.visit_docinfo_item(node, 'version')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1091
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1092
    def visit_warning(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1093
        self.visit_admonition(node, 'warning')
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1094
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1095
    depart_warning = depart_admonition
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1096
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1097
    def unimplemented_visit(self, node):
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1098
        raise NotImplementedError('visiting unimplemented node type: %s'
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1099
                                  % node.__class__.__name__)
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1100
a82db54bc3be doc: use our own rst2man.py script (issue1746)
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
  1101
# vim: set fileencoding=utf-8 et ts=4 ai :