From 2b6c8b33be0e66160c6f5d14fd78c7a47e3389b0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 24 Jan 2018 21:33:33 +0900 Subject: [PATCH] Fix all files are treated as reST if old styled source_suffix used --- sphinx/config.py | 11 +++++++---- sphinx/registry.py | 11 ++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/sphinx/config.py b/sphinx/config.py index 88453b891..34cbf0883 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -371,11 +371,14 @@ def convert_source_suffix(app, config): """ source_suffix = config.source_suffix if isinstance(source_suffix, string_types): - # if str, considers as reST - config.source_suffix = OrderedDict({source_suffix: 'restructuredtext'}) # type: ignore + # if str, considers as default filetype (None) + # + # The default filetype is determined on later step. + # By default, it is considered as restructuredtext. + config.source_suffix = OrderedDict({source_suffix: None}) # type: ignore elif isinstance(source_suffix, (list, tuple)): - # if list, considers as all of them are reST - config.source_suffix = OrderedDict([(s, 'restructuredtext') for s in source_suffix]) # type: ignore # NOQA + # if list, considers as all of them are default filetype + config.source_suffix = OrderedDict([(s, None) for s in source_suffix]) # type: ignore # NOQA elif isinstance(source_suffix, dict): # if dict, convert it to OrderedDict config.source_suffix = OrderedDict(config.source_suffix) # type: ignore diff --git a/sphinx/registry.py b/sphinx/registry.py index ba01978cc..953fcf211 100644 --- a/sphinx/registry.py +++ b/sphinx/registry.py @@ -233,7 +233,8 @@ class SphinxComponentRegistry(object): # type: (unicode) -> unicode for suffix, filetype in iteritems(self.source_suffix): if filename.endswith(suffix): - return filetype + # If default filetype (None), considered as restructuredtext. + return filetype or 'restructuredtext' else: raise FiletypeNotFoundError @@ -273,8 +274,8 @@ class SphinxComponentRegistry(object): try: filetype = self.get_filetype(filename) input_class = self.source_inputs[filetype] - except FiletypeNotFoundError: - # use special source_input for unknown file-type '*' (if exists) + except (FiletypeNotFoundError, KeyError): + # use special source_input for unknown filetype input_class = self.source_inputs.get('*') if input_class is None: @@ -377,6 +378,10 @@ def merge_source_suffix(app): for suffix in app.registry.source_suffix: if suffix not in app.config.source_suffix: app.config.source_suffix[suffix] = suffix + elif app.config.source_suffix[suffix] is None: + # filetype is not specified (default filetype). + # So it overrides default filetype by extensions setting. + app.config.source_suffix[suffix] = suffix # copy config.source_suffix to registry app.registry.source_suffix = app.config.source_suffix