summaryrefslogtreecommitdiff
path: root/tools/rst2html.py
diff options
context:
space:
mode:
authorLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 15:47:16 +0100
committerLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 15:47:16 +0100
commit25335618bf8755ce6b116ee14f47f5a1f2c821e9 (patch)
treed889d7ab3f9f985d0c54c534cb8052bd2e6d7163 /tools/rst2html.py
downloadbzr-tarball-25335618bf8755ce6b116ee14f47f5a1f2c821e9.tar.gz
Tarball conversion
Diffstat (limited to 'tools/rst2html.py')
-rwxr-xr-xtools/rst2html.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tools/rst2html.py b/tools/rst2html.py
new file mode 100755
index 0000000..788a0be
--- /dev/null
+++ b/tools/rst2html.py
@@ -0,0 +1,55 @@
+#! /usr/bin/env python
+
+# Originally by Dave Goodger, from the docutils, distribution.
+#
+# Modified for Bazaar to accommodate options containing dots
+#
+# This file is in the public domain.
+
+"""
+A minimal front end to the Docutils Publisher, producing HTML.
+"""
+
+try:
+ import locale
+ locale.setlocale(locale.LC_ALL, '')
+except:
+ pass
+
+import docutils
+from docutils.core import publish_cmdline, default_description
+
+if True: # this is still required in the distutils trunk as-at June 2008.
+ from docutils.parsers.rst.states import Body
+ # we have some option names that contain dot; which is not allowed by
+ # python-docutils 0.4-4 -- so monkeypatch in a better pattern
+ #
+ # This is a bit gross to patch because all this is built up at load time.
+ Body.pats['optname'] = r'[a-zA-Z0-9][a-zA-Z0-9._-]*'
+ Body.pats['longopt'] = r'(--|/)%(optname)s([ =]%(optarg)s)?' % Body.pats
+ Body.pats['option'] = r'(%(shortopt)s|%(longopt)s)' % Body.pats
+ Body.patterns['option_marker'] = r'%(option)s(, %(option)s)*( +| ?$)' % Body.pats
+
+
+description = ('Generates (X)HTML documents from standalone reStructuredText '
+ 'sources. ' + default_description)
+
+
+# workaround for bug with <xxx id="tags" name="tags"> in IE
+from docutils.writers import html4css1
+
+class IESafeHtmlTranslator(html4css1.HTMLTranslator):
+
+ def starttag(self, node, tagname, suffix='\n', empty=0, **attributes):
+ x = html4css1.HTMLTranslator.starttag(self, node, tagname, suffix,
+ empty, **attributes)
+ y = x.replace('id="tags"', 'id="tags_"')
+ y = y.replace('name="tags"', 'name="tags_"')
+ y = y.replace('href="#tags"', 'href="#tags_"')
+ return y
+
+mywriter = html4css1.Writer()
+mywriter.translator_class = IESafeHtmlTranslator
+
+
+publish_cmdline(writer=mywriter, description=description)