From fe2223ce778fcc2cf07e3e7c23fee8879041a46a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 5 May 2019 14:06:29 +0200 Subject: [PATCH] m.htmlsanity: make the docutils settings public. --- plugins/m/htmlsanity.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/plugins/m/htmlsanity.py b/plugins/m/htmlsanity.py index 38dc42ed..dacacd2d 100644 --- a/plugins/m/htmlsanity.py +++ b/plugins/m/htmlsanity.py @@ -54,6 +54,17 @@ settings = { 'M_HTMLSANITY_FORMATTED_FIELDS': [] } +# Default docutils settings. Some things added in register() / register_mcss(), +# and from the M_HTMLSANITY_DOCUTILS_SETTINGS option. +docutils_settings = { + 'initial_header_level': '2', + 'syntax_highlight': 'short', + 'input_encoding': 'utf-8', + 'halt_level': 2, + 'traceback': True, + 'embed_stylesheet': False +} + words_re = re.compile(r'\w+', re.UNICODE|re.X) def extract_document_language(document): @@ -657,23 +668,13 @@ class SaneHtmlWriter(docutils.writers.html5_polyglot.Writer): return docutils.writers.html5_polyglot.Writer.get_transforms(self) + [SmartQuotes, Pyphen] def render_rst(value): - extra_params = {'initial_header_level': '2', - 'syntax_highlight': 'short', - 'input_encoding': 'utf-8', - 'language_code': settings['M_HTMLSANITY_LANGUAGE'], - 'halt_level': 2, - 'traceback': True, - 'embed_stylesheet': False} - if settings['M_HTMLSANITY_DOCUTILS_SETTINGS']: - extra_params.update(settings['M_HTMLSANITY_DOCUTILS_SETTINGS']) - pub = docutils.core.Publisher( writer=SaneHtmlWriter(), source_class=docutils.io.StringInput, destination_class=docutils.io.StringOutput) pub.set_components('standalone', 'restructuredtext', 'html') pub.writer.translator_class = _SaneFieldBodyTranslator - pub.process_programmatic_settings(None, extra_params, None) + pub.process_programmatic_settings(None, docutils_settings, None) pub.set_source(source=value) pub.publish(enable_exit_status=True) return pub.writer.parts.get('body').strip() @@ -753,6 +754,10 @@ def configure_pelican(pelicanobj): for key in 'INTRASITE_LINK_REGEX', 'SITEURL': pelican_settings[key] = pelicanobj.settings[key] + # Update the docutils settings using the above + docutils_settings['language_code'] = settings['M_HTMLSANITY_LANGUAGE'] + docutils_settings.update(settings['M_HTMLSANITY_DOCUTILS_SETTINGS']) + def add_reader(readers): readers.reader_classes['rst'] = SaneRstReader -- 2.30.2