Fix all files are treated as reST if old styled source_suffix used

This commit is contained in:
Takeshi KOMIYA 2018-01-24 21:33:33 +09:00
parent 0cdd9ee72a
commit 2b6c8b33be
2 changed files with 15 additions and 7 deletions

View File

@ -371,11 +371,14 @@ def convert_source_suffix(app, config):
""" """
source_suffix = config.source_suffix source_suffix = config.source_suffix
if isinstance(source_suffix, string_types): if isinstance(source_suffix, string_types):
# if str, considers as reST # if str, considers as default filetype (None)
config.source_suffix = OrderedDict({source_suffix: 'restructuredtext'}) # type: ignore #
# 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)): elif isinstance(source_suffix, (list, tuple)):
# if list, considers as all of them are reST # if list, considers as all of them are default filetype
config.source_suffix = OrderedDict([(s, 'restructuredtext') for s in source_suffix]) # type: ignore # NOQA config.source_suffix = OrderedDict([(s, None) for s in source_suffix]) # type: ignore # NOQA
elif isinstance(source_suffix, dict): elif isinstance(source_suffix, dict):
# if dict, convert it to OrderedDict # if dict, convert it to OrderedDict
config.source_suffix = OrderedDict(config.source_suffix) # type: ignore config.source_suffix = OrderedDict(config.source_suffix) # type: ignore

View File

@ -233,7 +233,8 @@ class SphinxComponentRegistry(object):
# type: (unicode) -> unicode # type: (unicode) -> unicode
for suffix, filetype in iteritems(self.source_suffix): for suffix, filetype in iteritems(self.source_suffix):
if filename.endswith(suffix): if filename.endswith(suffix):
return filetype # If default filetype (None), considered as restructuredtext.
return filetype or 'restructuredtext'
else: else:
raise FiletypeNotFoundError raise FiletypeNotFoundError
@ -273,8 +274,8 @@ class SphinxComponentRegistry(object):
try: try:
filetype = self.get_filetype(filename) filetype = self.get_filetype(filename)
input_class = self.source_inputs[filetype] input_class = self.source_inputs[filetype]
except FiletypeNotFoundError: except (FiletypeNotFoundError, KeyError):
# use special source_input for unknown file-type '*' (if exists) # use special source_input for unknown filetype
input_class = self.source_inputs.get('*') input_class = self.source_inputs.get('*')
if input_class is None: if input_class is None:
@ -377,6 +378,10 @@ def merge_source_suffix(app):
for suffix in app.registry.source_suffix: for suffix in app.registry.source_suffix:
if suffix not in app.config.source_suffix: if suffix not in app.config.source_suffix:
app.config.source_suffix[suffix] = 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 # copy config.source_suffix to registry
app.registry.source_suffix = app.config.source_suffix app.registry.source_suffix = app.config.source_suffix