/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tools/rst2html.py

Add simple tests and docstrings for GraphWalker.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/env python
2
 
 
3
 
# Originally by Dave Goodger, from the docutils, distribution.
4
 
#
5
 
# Modified for Bazaar to accommodate options containing dots
6
 
#
7
 
# This file is in the public domain.
8
 
 
9
 
"""
10
 
A minimal front end to the Docutils Publisher, producing HTML.
11
 
"""
12
 
 
13
 
# modified version for 
14
 
 
15
 
try:
16
 
    import locale
17
 
    locale.setlocale(locale.LC_ALL, '')
18
 
except:
19
 
    pass
20
 
 
21
 
import docutils
22
 
from docutils.core import publish_cmdline, default_description
23
 
 
24
 
 
25
 
if docutils.__version__ <= '0.4.1':
26
 
    from docutils.parsers.rst.states import Body
27
 
    # we have some option names that contain dot; which is not allowed by
28
 
    # python-docutils 0.4-4 -- so monkeypatch in a better pattern
29
 
    #
30
 
    # This is a bit gross to patch because all this is built up at load time.
31
 
    Body.pats['optname'] = r'[a-zA-Z0-9][a-zA-Z0-9._-]*'    
32
 
    Body.pats['longopt'] = r'(--|/)%(optname)s([ =]%(optarg)s)?' % Body.pats
33
 
    Body.pats['option'] = r'(%(shortopt)s|%(longopt)s)' % Body.pats
34
 
    Body.patterns['option_marker'] = r'%(option)s(, %(option)s)*(  +| ?$)' % Body.pats
35
 
 
36
 
 
37
 
description = ('Generates (X)HTML documents from standalone reStructuredText '
38
 
               'sources.  ' + default_description)
39
 
 
40
 
 
41
 
# workaround for bug with <xxx id="tags" name="tags"> in IE
42
 
from docutils.writers import html4css1
43
 
 
44
 
class IESafeHtmlTranslator(html4css1.HTMLTranslator):
45
 
 
46
 
    def starttag(self, node, tagname, suffix='\n', empty=0, **attributes):
47
 
        x = html4css1.HTMLTranslator.starttag(self, node, tagname, suffix,
48
 
                                              empty, **attributes)
49
 
        y = x.replace('id="tags"', 'id="tags_"')
50
 
        y = y.replace('name="tags"', 'name="tags_"')
51
 
        y = y.replace('href="#tags"', 'href="#tags_"')
52
 
        return y
53
 
 
54
 
mywriter = html4css1.Writer()
55
 
mywriter.translator_class = IESafeHtmlTranslator
56
 
 
57
 
 
58
 
publish_cmdline(writer=mywriter, description=description)