readers: Ensure the reader class is enabled before instantiating

Otherwise the MarkdownReader fails with:

  'bool' object is not callable

if Markdown is not installed.

Reported-by: Deniz Turgut <dturgut@gmail.com>
This commit is contained in:
W. Trevor King 2013-06-03 15:29:54 -04:00
commit 38c22e83b6

View file

@ -361,15 +361,17 @@ def read_file(base_path, path, content_class=Page, fmt=None,
if settings is None:
settings = {}
reader = EXTENSIONS[fmt](settings)
reader_class = EXTENSIONS[fmt]
if not reader_class.enabled:
raise ValueError('Missing dependencies for {}'.format(fmt))
reader = reader_class(settings)
settings_key = '%s_EXTENSIONS' % fmt.upper()
if settings and settings_key in settings:
reader.extensions = settings[settings_key]
if not reader.enabled:
raise ValueError("Missing dependencies for %s" % fmt)
metadata = default_metadata(
settings=settings, process=reader.process_metadata)
metadata.update(path_metadata(