/usr/lib/python3/dist-packages/markups/restructuredtext.py is in python3-markups 2.0.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | # vim: ts=8:sts=8:sw=8:noexpandtab
# This file is part of python-markups module
# License: BSD
# Copyright: (C) Dmitry Shachnev, 2012-2017
import markups.common as common
from markups.abstract import AbstractMarkup, ConvertedMarkup
class ReStructuredTextMarkup(AbstractMarkup):
"""Markup class for reStructuredText language.
Inherits :class:`~markups.abstract.AbstractMarkup`.
:param settings_overrides: optional dictionary of overrides for the
`Docutils settings`_
:type settings_overrides: dict
.. _`Docutils settings`: http://docutils.sourceforge.net/docs/user/config.html
"""
name = 'reStructuredText'
attributes = {
common.LANGUAGE_HOME_PAGE: 'http://docutils.sourceforge.net/rst.html',
common.MODULE_HOME_PAGE: 'http://docutils.sourceforge.net/',
common.SYNTAX_DOCUMENTATION: 'http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html'
}
file_extensions = ('.rst', '.rest')
default_extension = '.rst'
@staticmethod
def available():
try:
import docutils.core
except ImportError:
return False
return True
def __init__(self, filename=None, settings_overrides=None):
self.overrides = settings_overrides or {}
self.overrides.update({
'math_output': 'MathJax %s?config=TeX-AMS_CHTML' % common.MATHJAX_WEB_URL,
'syntax_highlight': 'short',
})
AbstractMarkup.__init__(self, filename)
from docutils.core import publish_parts
self._publish_parts = publish_parts
def convert(self, text):
parts = self._publish_parts(text, source_path=self.filename,
writer_name='html', settings_overrides=self.overrides)
# Determine head
head = parts['head']
# Determine body
body = parts['html_body']
# Determine title
title = parts['title']
# Determine stylesheet
origstyle = parts['stylesheet']
# Cut off <style> and </style> tags
stylestart = '<style type="text/css">'
stylesheet = ''
if stylestart in origstyle:
stylesheet = origstyle[origstyle.find(stylestart)+25:origstyle.rfind('</style>')]
stylesheet += common.get_pygments_stylesheet('.code')
return ConvertedReStructuredText(head, body, title, stylesheet)
class ConvertedReStructuredText(ConvertedMarkup):
def __init__(self, head, body, title, stylesheet):
ConvertedMarkup.__init__(self, body, title, stylesheet)
self.head = head
def get_javascript(self, webenv=False):
if 'MathJax.js?config=TeX-AMS_CHTML' not in self.head:
return ''
return ('<script type="text/javascript" src="%s?config=TeX-AMS_CHTML"></script>\n' %
common.get_mathjax_url(webenv))
|