diff --git a/pelican/readers.py b/pelican/readers.py index 797994cb..ae634c80 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -102,6 +102,9 @@ class RstReader(Reader): enabled = bool(docutils) file_extensions = ['rst'] + def __init__(self, *args, **kwargs): + super(RstReader, self).__init__(*args, **kwargs) + def _parse_metadata(self, document): """Return the dict containing document metadata""" output = {} @@ -126,6 +129,10 @@ class RstReader(Reader): extra_params = {'initial_header_level': '2', 'syntax_highlight': 'short', 'input_encoding': 'utf-8'} + user_params = self.settings.get('DOCUTILS_SETTINGS') + if user_params: + extra_params.update(user_params) + pub = docutils.core.Publisher( destination_class=docutils.io.StringOutput) pub.set_components('standalone', 'restructuredtext', 'html') @@ -335,6 +342,9 @@ def read_file(path, fmt=None, settings=None): if fmt not in EXTENSIONS: raise TypeError('Pelican does not know how to parse {}'.format(path)) + if settings is None: + settings = {} + reader = EXTENSIONS[fmt](settings) settings_key = '%s_EXTENSIONS' % fmt.upper() diff --git a/pelican/tests/test_readers.py b/pelican/tests/test_readers.py index 5381a776..386c0172 100644 --- a/pelican/tests/test_readers.py +++ b/pelican/tests/test_readers.py @@ -37,8 +37,7 @@ class RstReaderTest(unittest.TestCase): def test_article_with_filename_metadata(self): content, metadata = readers.read_file( - _path('2012-11-29_rst_w_filename_meta#foo-bar.rst'), - settings={}) + _path('2012-11-29_rst_w_filename_meta#foo-bar.rst')) expected = { 'category': 'yeah', 'author': 'Alexis Métaireau', @@ -204,8 +203,7 @@ class MdReaderTest(unittest.TestCase): @unittest.skipUnless(readers.Markdown, "markdown isn't installed") def test_article_with_filename_metadata(self): content, metadata = readers.read_file( - _path('2012-11-30_md_w_filename_meta#foo-bar.md'), - settings={}) + _path('2012-11-30_md_w_filename_meta#foo-bar.md')) expected = { 'category': 'yeah', 'author': 'Alexis Métaireau',