diff --git a/pelican/readers.py b/pelican/readers.py index 9cf78042..e5283de7 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -34,6 +34,7 @@ try: except ImportError: from HTMLParser import HTMLParser +from pelican import signals from pelican.contents import Page, Category, Tag, Author from pelican.utils import get_date, pelican_open @@ -348,16 +349,18 @@ class Readers(object): def __init__(self, settings=None): self.settings = settings or {} self.readers = {} + self.reader_classes = {} - extensions = {} for cls in [BaseReader] + BaseReader.__subclasses__(): for ext in cls.file_extensions: - extensions[ext] = cls + self.reader_classes[ext] = cls if self.settings['READERS']: - extensions.update(self.settings['READERS']) + self.reader_classes.update(self.settings['READERS']) - for fmt, reader_class in extensions.items(): + signals.readers_init.send(self) + + for fmt, reader_class in self.reader_classes.items(): if not reader_class: continue @@ -484,7 +487,7 @@ def path_metadata(full_path, source_path, settings=None): metadata['date'] = datetime.datetime.fromtimestamp( os.stat(full_path).st_ctime) metadata.update(settings.get('EXTRA_PATH_METADATA', {}).get( - source_path, {})) + source_path, {})) return metadata diff --git a/pelican/signals.py b/pelican/signals.py index cb010d37..77802e88 100644 --- a/pelican/signals.py +++ b/pelican/signals.py @@ -8,6 +8,10 @@ initialized = signal('pelican_initialized') get_generators = signal('get_generators') finalized = signal('pelican_finalized') +# Reader-level signals + +readers_init = signal('readers_init') + # Generator-level signals generator_init = signal('generator_init')