buildframework/helium/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx/textwriter.py
author wbernard
Wed, 23 Dec 2009 19:29:07 +0200
changeset 179 d8ac696cc51f
permissions -rw-r--r--
helium_7.0-r14027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     2
"""
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     3
    sphinx.textwriter
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     4
    ~~~~~~~~~~~~~~~~~
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     5
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     6
    Custom docutils writer for plain text.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     7
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     8
    :copyright: 2008 by Georg Brandl.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
     9
    :license: BSD.
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    10
"""
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    11
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    12
import re
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    13
import textwrap
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    14
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    15
from docutils import nodes, writers
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    16
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    17
from sphinx import addnodes
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    18
from sphinx.locale import admonitionlabels, versionlabels
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    19
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    20
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    21
class TextWriter(writers.Writer):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    22
    supported = ('text',)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    23
    settings_spec = ('No options here.', '', ())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    24
    settings_defaults = {}
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    25
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    26
    output = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    27
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    28
    def __init__(self, builder):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    29
        writers.Writer.__init__(self)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    30
        self.builder = builder
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    31
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    32
    def translate(self):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    33
        visitor = TextTranslator(self.document, self.builder)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    34
        self.document.walkabout(visitor)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    35
        self.output = visitor.body
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    36
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    37
# monkey-patch...
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    38
new_wordsep_re = re.compile(
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    39
        r'(\s+|'                                  # any whitespace
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    40
        r'(?<=\s)(?::[a-z-]+:)?`\S+|'             # interpreted text start
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    41
        r'[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|'   # hyphenated words
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    42
        r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))')   # em-dash
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    43
textwrap.TextWrapper.wordsep_re = new_wordsep_re
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    44
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    45
MAXWIDTH = 70
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    46
STDINDENT = 3
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    47
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    48
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    49
class TextTranslator(nodes.NodeVisitor):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    50
    sectionchars = '*=-~"+'
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    51
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    52
    def __init__(self, document, builder):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    53
        nodes.NodeVisitor.__init__(self, document)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    54
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    55
        self.states = [[]]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    56
        self.stateindent = [0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    57
        self.sectionlevel = 0
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    58
        self.table = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    59
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    60
    def add_text(self, text):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    61
        self.states[-1].append((-1, text))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    62
    def new_state(self, indent=STDINDENT):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    63
        self.states.append([])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    64
        self.stateindent.append(indent)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    65
    def end_state(self, wrap=True, end=[''], first=None):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    66
        content = self.states.pop()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    67
        maxindent = sum(self.stateindent)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    68
        indent = self.stateindent.pop()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    69
        result = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    70
        toformat = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    71
        def do_format():
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    72
            if not toformat:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    73
                return
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    74
            if wrap:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    75
                res = textwrap.wrap(''.join(toformat), width=MAXWIDTH-maxindent)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    76
            else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    77
                res = ''.join(toformat).splitlines()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    78
            if end:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    79
                res += end
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    80
            result.append((indent, res))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    81
        for itemindent, item in content:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    82
            if itemindent == -1:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    83
                toformat.append(item)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    84
            else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    85
                do_format()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    86
                result.append((indent + itemindent, item))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    87
                toformat = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    88
        do_format()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    89
        if first is not None and result:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    90
            itemindent, item = result[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    91
            if item:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    92
                result.insert(0, (itemindent - indent, [first + item[0]]))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    93
                result[1] = (itemindent, item[1:])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    94
        self.states[-1].extend(result)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    95
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    96
    def visit_document(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    97
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    98
    def depart_document(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
    99
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   100
        self.body = '\n'.join(line and (' '*indent + line)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   101
                              for indent, lines in self.states[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   102
                              for line in lines)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   103
        # XXX header/footer?
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   104
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   105
    def visit_highlightlang(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   106
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   107
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   108
    def visit_section(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   109
        self._title_char = self.sectionchars[self.sectionlevel]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   110
        self.sectionlevel += 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   111
    def depart_section(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   112
        self.sectionlevel -= 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   113
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   114
    def visit_topic(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   115
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   116
    def depart_topic(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   117
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   118
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   119
    visit_sidebar = visit_topic
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   120
    depart_sidebar = depart_topic
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   121
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   122
    def visit_rubric(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   123
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   124
        self.add_text('-[ ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   125
    def depart_rubric(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   126
        self.add_text(' ]-')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   127
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   128
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   129
    def visit_compound(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   130
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   131
    def depart_compound(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   132
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   133
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   134
    def visit_glossary(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   135
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   136
    def depart_glossary(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   137
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   138
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   139
    def visit_title(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   140
        if isinstance(node.parent, nodes.Admonition):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   141
            self.add_text(node.astext()+': ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   142
            raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   143
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   144
    def depart_title(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   145
        if isinstance(node.parent, nodes.section):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   146
            char = self._title_char
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   147
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   148
            char = '^'
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   149
        text = ''.join(x[1] for x in self.states.pop() if x[0] == -1)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   150
        self.stateindent.pop()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   151
        self.states[-1].append((0, ['', text, '%s' % (char * len(text)), '']))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   152
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   153
    def visit_subtitle(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   154
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   155
    def depart_subtitle(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   156
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   157
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   158
    def visit_attribution(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   159
        self.add_text('-- ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   160
    def depart_attribution(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   161
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   162
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   163
    def visit_module(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   164
        if node.has_key('platform'):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   165
            self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   166
            self.add_text(_('Platform: %s') % node['platform'])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   167
            self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   168
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   169
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   170
    def visit_desc(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   171
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   172
    def depart_desc(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   173
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   174
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   175
    def visit_desc_signature(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   176
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   177
        if node.parent['desctype'] in ('class', 'exception'):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   178
            self.add_text('%s ' % node.parent['desctype'])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   179
    def depart_desc_signature(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   180
        # XXX: wrap signatures in a way that makes sense
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   181
        self.end_state(wrap=False, end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   182
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   183
    def visit_desc_name(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   184
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   185
    def depart_desc_name(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   186
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   187
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   188
    def visit_desc_addname(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   189
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   190
    def depart_desc_addname(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   191
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   192
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   193
    def visit_desc_type(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   194
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   195
    def depart_desc_type(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   196
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   197
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   198
    def visit_desc_parameterlist(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   199
        self.add_text('(')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   200
        self.first_param = 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   201
    def depart_desc_parameterlist(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   202
        self.add_text(')')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   203
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   204
    def visit_desc_parameter(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   205
        if not self.first_param:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   206
            self.add_text(', ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   207
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   208
            self.first_param = 0
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   209
        self.add_text(node.astext())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   210
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   211
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   212
    def visit_desc_optional(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   213
        self.add_text('[')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   214
    def depart_desc_optional(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   215
        self.add_text(']')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   216
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   217
    def visit_desc_annotation(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   218
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   219
    def depart_desc_annotation(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   220
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   221
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   222
    def visit_refcount(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   223
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   224
    def depart_refcount(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   225
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   226
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   227
    def visit_desc_content(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   228
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   229
        self.add_text('\n')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   230
    def depart_desc_content(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   231
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   232
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   233
    def visit_figure(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   234
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   235
    def depart_figure(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   236
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   237
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   238
    def visit_caption(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   239
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   240
    def depart_caption(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   241
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   242
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   243
    def visit_productionlist(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   244
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   245
        names = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   246
        for production in node:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   247
            names.append(production['tokenname'])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   248
        maxlen = max(len(name) for name in names)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   249
        for production in node:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   250
            if production['tokenname']:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   251
                self.add_text(production['tokenname'].ljust(maxlen) + ' ::=')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   252
                lastname = production['tokenname']
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   253
            else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   254
                self.add_text('%s    ' % (' '*len(lastname)))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   255
            self.add_text(production.astext() + '\n')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   256
        self.end_state(wrap=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   257
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   258
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   259
    def visit_seealso(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   260
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   261
    def depart_seealso(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   262
        self.end_state(first='')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   263
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   264
    def visit_footnote(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   265
        self._footnote = node.children[0].astext().strip()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   266
        self.new_state(len(self._footnote) + 3)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   267
    def depart_footnote(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   268
        self.end_state(first='[%s] ' % self._footnote)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   269
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   270
    def visit_citation(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   271
        if len(node) and isinstance(node[0], nodes.label):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   272
            self._citlabel = node[0].astext()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   273
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   274
            self._citlabel = ''
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   275
        self.new_state(len(self._citlabel) + 3)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   276
    def depart_citation(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   277
        self.end_state(first='[%s] ' % self._citlabel)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   278
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   279
    def visit_label(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   280
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   281
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   282
    # XXX: option list could use some better styling
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   283
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   284
    def visit_option_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   285
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   286
    def depart_option_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   287
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   288
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   289
    def visit_option_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   290
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   291
    def depart_option_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   292
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   293
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   294
    def visit_option_group(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   295
        self._firstoption = True
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   296
    def depart_option_group(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   297
        self.add_text('     ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   298
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   299
    def visit_option(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   300
        if self._firstoption:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   301
            self._firstoption = False
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   302
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   303
            self.add_text(', ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   304
    def depart_option(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   305
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   306
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   307
    def visit_option_string(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   308
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   309
    def depart_option_string(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   310
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   311
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   312
    def visit_option_argument(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   313
        self.add_text(node['delimiter'])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   314
    def depart_option_argument(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   315
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   316
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   317
    def visit_description(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   318
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   319
    def depart_description(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   320
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   321
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   322
    def visit_tabular_col_spec(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   323
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   324
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   325
    def visit_colspec(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   326
        self.table[0].append(node['colwidth'])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   327
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   328
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   329
    def visit_tgroup(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   330
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   331
    def depart_tgroup(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   332
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   333
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   334
    def visit_thead(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   335
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   336
    def depart_thead(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   337
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   338
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   339
    def visit_tbody(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   340
        self.table.append('sep')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   341
    def depart_tbody(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   342
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   343
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   344
    def visit_row(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   345
        self.table.append([])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   346
    def depart_row(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   347
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   348
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   349
    def visit_entry(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   350
        if node.has_key('morerows') or node.has_key('morecols'):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   351
            raise NotImplementedError('Column or row spanning cells are '
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   352
                                      'not implemented.')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   353
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   354
    def depart_entry(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   355
        text = '\n'.join('\n'.join(x[1]) for x in self.states.pop())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   356
        self.stateindent.pop()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   357
        self.table[-1].append(text)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   358
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   359
    def visit_table(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   360
        if self.table:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   361
            raise NotImplementedError('Nested tables are not supported.')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   362
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   363
        self.table = [[]]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   364
    def depart_table(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   365
        lines = self.table[1:]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   366
        fmted_rows = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   367
        colwidths = self.table[0]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   368
        realwidths = colwidths[:]
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   369
        separator = 0
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   370
        # don't allow paragraphs in table cells for now
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   371
        for line in lines:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   372
            if line == 'sep':
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   373
                separator = len(fmted_rows)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   374
            else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   375
                cells = []
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   376
                for i, cell in enumerate(line):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   377
                    par = textwrap.wrap(cell, width=colwidths[i])
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   378
                    if par:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   379
                        maxwidth = max(map(len, par))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   380
                    else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   381
                        maxwidth = 0
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   382
                    realwidths[i] = max(realwidths[i], maxwidth)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   383
                    cells.append(par)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   384
                fmted_rows.append(cells)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   385
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   386
        def writesep(char='-'):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   387
            out = ['+']
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   388
            for width in realwidths:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   389
                out.append(char * (width+2))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   390
                out.append('+')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   391
            self.add_text(''.join(out) + '\n')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   392
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   393
        def writerow(row):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   394
            lines = map(None, *row)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   395
            for line in lines:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   396
                out = ['|']
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   397
                for i, cell in enumerate(line):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   398
                    if cell:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   399
                        out.append(' ' + cell.ljust(realwidths[i]+1))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   400
                    else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   401
                        out.append(' ' * (realwidths[i] + 2))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   402
                    out.append('|')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   403
                self.add_text(''.join(out) + '\n')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   404
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   405
        for i, row in enumerate(fmted_rows):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   406
            if separator and i == separator:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   407
                writesep('=')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   408
            else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   409
                writesep('-')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   410
            writerow(row)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   411
        writesep('-')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   412
        self.table = None
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   413
        self.end_state(wrap=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   414
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   415
    def visit_acks(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   416
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   417
        self.add_text(', '.join(n.astext() for n in node.children[0].children) + '.')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   418
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   419
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   420
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   421
    def visit_image(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   422
        self.add_text(_('[image]'))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   423
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   424
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   425
    def visit_transition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   426
        indent = sum(self.stateindent)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   427
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   428
        self.add_text('=' * (MAXWIDTH - indent))
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   429
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   430
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   431
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   432
    def visit_bullet_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   433
        self._list_counter = -1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   434
    def depart_bullet_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   435
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   436
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   437
    def visit_enumerated_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   438
        self._list_counter = 0
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   439
    def depart_enumerated_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   440
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   441
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   442
    def visit_definition_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   443
        self._list_counter = -2
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   444
    def depart_definition_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   445
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   446
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   447
    def visit_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   448
        if self._list_counter == -1:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   449
            # bullet list
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   450
            self.new_state(2)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   451
        elif self._list_counter == -2:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   452
            # definition list
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   453
            pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   454
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   455
            # enumerated list
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   456
            self._list_counter += 1
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   457
            self.new_state(len(str(self._list_counter)) + 2)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   458
    def depart_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   459
        if self._list_counter == -1:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   460
            self.end_state(first='* ', end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   461
        elif self._list_counter == -2:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   462
            pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   463
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   464
            self.end_state(first='%s. ' % self._list_counter, end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   465
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   466
    def visit_definition_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   467
        self._li_has_classifier = len(node) >= 2 and \
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   468
                                  isinstance(node[1], nodes.classifier)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   469
    def depart_definition_list_item(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   470
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   471
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   472
    def visit_term(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   473
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   474
    def depart_term(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   475
        if not self._li_has_classifier:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   476
            self.end_state(end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   477
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   478
    def visit_classifier(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   479
        self.add_text(' : ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   480
    def depart_classifier(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   481
        self.end_state(end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   482
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   483
    def visit_definition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   484
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   485
    def depart_definition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   486
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   487
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   488
    def visit_field_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   489
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   490
    def depart_field_list(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   491
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   492
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   493
    def visit_field(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   494
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   495
    def depart_field(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   496
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   497
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   498
    def visit_field_name(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   499
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   500
    def depart_field_name(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   501
        self.add_text(':')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   502
        self.end_state(end=None)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   503
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   504
    def visit_field_body(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   505
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   506
    def depart_field_body(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   507
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   508
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   509
    def visit_centered(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   510
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   511
    def depart_centered(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   512
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   513
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   514
    def visit_admonition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   515
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   516
    def depart_admonition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   517
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   518
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   519
    def _visit_admonition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   520
        self.new_state(2)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   521
    def _make_depart_admonition(name):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   522
        def depart_admonition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   523
            self.end_state(first=admonitionlabels[name] + ': ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   524
        return depart_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   525
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   526
    visit_attention = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   527
    depart_attention = _make_depart_admonition('attention')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   528
    visit_caution = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   529
    depart_caution = _make_depart_admonition('caution')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   530
    visit_danger = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   531
    depart_danger = _make_depart_admonition('danger')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   532
    visit_error = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   533
    depart_error = _make_depart_admonition('error')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   534
    visit_hint = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   535
    depart_hint = _make_depart_admonition('hint')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   536
    visit_important = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   537
    depart_important = _make_depart_admonition('important')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   538
    visit_note = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   539
    depart_note = _make_depart_admonition('note')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   540
    visit_tip = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   541
    depart_tip = _make_depart_admonition('tip')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   542
    visit_warning = _visit_admonition
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   543
    depart_warning = _make_depart_admonition('warning')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   544
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   545
    def visit_versionmodified(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   546
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   547
        if node.children:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   548
            self.add_text(versionlabels[node['type']] % node['version'] + ': ')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   549
        else:
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   550
            self.add_text(versionlabels[node['type']] % node['version'] + '.')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   551
    def depart_versionmodified(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   552
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   553
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   554
    def visit_literal_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   555
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   556
    def depart_literal_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   557
        self.end_state(wrap=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   558
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   559
    def visit_doctest_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   560
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   561
    def depart_doctest_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   562
        self.end_state(wrap=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   563
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   564
    def visit_line_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   565
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   566
    def depart_line_block(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   567
        self.end_state(wrap=False)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   568
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   569
    def visit_line(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   570
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   571
    def depart_line(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   572
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   573
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   574
    def visit_block_quote(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   575
        self.new_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   576
    def depart_block_quote(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   577
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   578
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   579
    def visit_compact_paragraph(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   580
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   581
    def depart_compact_paragraph(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   582
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   583
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   584
    def visit_paragraph(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   585
        if not isinstance(node.parent, nodes.Admonition) or \
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   586
               isinstance(node.parent, addnodes.seealso):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   587
            self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   588
    def depart_paragraph(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   589
        if not isinstance(node.parent, nodes.Admonition) or \
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   590
               isinstance(node.parent, addnodes.seealso):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   591
            self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   592
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   593
    def visit_target(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   594
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   595
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   596
    def visit_index(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   597
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   598
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   599
    def visit_substitution_definition(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   600
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   601
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   602
    def visit_pending_xref(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   603
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   604
    def depart_pending_xref(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   605
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   606
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   607
    def visit_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   608
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   609
    def depart_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   610
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   611
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   612
    def visit_emphasis(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   613
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   614
    def depart_emphasis(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   615
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   616
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   617
    def visit_literal_emphasis(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   618
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   619
    def depart_literal_emphasis(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   620
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   621
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   622
    def visit_strong(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   623
        self.add_text('**')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   624
    def depart_strong(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   625
        self.add_text('**')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   626
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   627
    def visit_title_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   628
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   629
    def depart_title_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   630
        self.add_text('*')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   631
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   632
    def visit_literal(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   633
        self.add_text('``')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   634
    def depart_literal(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   635
        self.add_text('``')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   636
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   637
    def visit_subscript(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   638
        self.add_text('_')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   639
    def depart_subscript(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   640
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   641
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   642
    def visit_superscript(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   643
        self.add_text('^')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   644
    def depart_superscript(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   645
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   646
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   647
    def visit_footnote_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   648
        self.add_text('[%s]' % node.astext())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   649
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   650
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   651
    def visit_citation_reference(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   652
        self.add_text('[%s]' % node.astext())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   653
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   654
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   655
    def visit_Text(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   656
        self.add_text(node.astext())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   657
    def depart_Text(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   658
        pass
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   659
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   660
    def visit_problematic(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   661
        self.add_text('>>')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   662
    def depart_problematic(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   663
        self.add_text('<<')
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   664
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   665
    def visit_system_message(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   666
        self.new_state(0)
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   667
        self.add_text('<SYSTEM MESSAGE: %s>' % node.astext())
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   668
        self.end_state()
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   669
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   670
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   671
    def visit_comment(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   672
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   673
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   674
    def visit_meta(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   675
        # only valid for HTML
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   676
        raise nodes.SkipNode
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   677
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   678
    def unknown_visit(self, node):
d8ac696cc51f helium_7.0-r14027
wbernard
parents:
diff changeset
   679
        raise NotImplementedError('Unknown node: ' + node.__class__.__name__)