82 lines
2.4 KiB
Python
Executable file
82 lines
2.4 KiB
Python
Executable file
#!/usr/bin/python
|
|
# unproudly borrowed from David Goodger's rst2html.py
|
|
|
|
"""
|
|
A minimal front end to the Docutils Publisher, producing HTML.
|
|
"""
|
|
|
|
try:
|
|
import locale
|
|
locale.setlocale(locale.LC_ALL, '')
|
|
except:
|
|
pass
|
|
|
|
from docutils.core import publish_cmdline, default_description
|
|
# ____________________________________________________________
|
|
from docutils import nodes, utils
|
|
from docutils.parsers.rst import roles
|
|
|
|
"""
|
|
description of the new roles:
|
|
|
|
`:api:` : link to the code
|
|
|
|
- code.py becomes api/code.html
|
|
- code.Code.code_test becomes api/code.Code.code_test.html
|
|
- code.Code() becomes api/code.Code.html
|
|
|
|
`:doc:`a link to an internal file
|
|
example become example.html
|
|
|
|
ref: link with anchor as in an external file
|
|
|
|
:ref:`toto#titi` becomes toto.html#titi
|
|
"""
|
|
from os.path import splitext
|
|
|
|
def api_reference_role(role, rawtext, text, lineno, inliner,
|
|
options={}, content=[]):
|
|
basename = text
|
|
if "(" in text:
|
|
basename = text.split("(")[0]
|
|
if ".py" in text:
|
|
basename = splitext(text)[0]
|
|
if "test_" in text:
|
|
refuri = "api/" + "test." + basename + '.html'
|
|
else:
|
|
refuri = "api/" + "tiramisu." + basename + '.html'
|
|
roles.set_classes(options)
|
|
node = nodes.reference(rawtext, utils.unescape(text), refuri=refuri,
|
|
**options)
|
|
return [node], []
|
|
|
|
roles.register_local_role('api', api_reference_role)
|
|
|
|
def doc_reference_role(role, rawtext, text, lineno, inliner,
|
|
options={}, content=[]):
|
|
refuri = text + '.html'
|
|
roles.set_classes(options)
|
|
node = nodes.reference(rawtext, utils.unescape(text), refuri=refuri,
|
|
**options)
|
|
return [node], []
|
|
|
|
roles.register_local_role('doc', doc_reference_role)
|
|
|
|
def ref_reference_role(role, rawtext, text, lineno, inliner,
|
|
options={}, content=[]):
|
|
fname, anchor = text.split('#')
|
|
refuri = fname + '.html#' + anchor
|
|
roles.set_classes(options)
|
|
node = nodes.reference(rawtext, utils.unescape(anchor), refuri=refuri,
|
|
**options)
|
|
return [node], []
|
|
|
|
roles.register_local_role('ref', ref_reference_role)
|
|
|
|
# ____________________________________________________________
|
|
|
|
description = ('Generates (X)HTML documents from standalone reStructuredText '
|
|
'sources. ' + default_description)
|
|
|
|
publish_cmdline(writer_name='html', description=description)
|
|
|