mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge pull request #1330 from smartass101/unify-run-get_-signals
Add get_writer signal and unify with get_generators
This commit is contained in:
commit
b4f6df2fb6
3 changed files with 21 additions and 5 deletions
|
|
@ -83,9 +83,11 @@ article_generator_finalized article_generator invoked at th
|
|||
article_generator_write_article article_generator, content invoked before writing each article, the article is passed as content
|
||||
article_writer_finalized article_generator, writer invoked after all articles and related pages have been written, but before
|
||||
the article generator is closed.
|
||||
get_generators generators invoked in Pelican.get_generator_classes,
|
||||
get_generators pelican object invoked in Pelican.get_generator_classes,
|
||||
can return a Generator, or several
|
||||
generator in a tuple or in a list.
|
||||
generators in a tuple or in a list.
|
||||
get_writer pelican object invoked in Pelican.get_writer,
|
||||
can return a custom Writer.
|
||||
page_generator_context page_generator, metadata
|
||||
page_generator_preread page_generator invoked before a page is read in PageGenerator.generate_context;
|
||||
use if code needs to do something before every page is parsed.
|
||||
|
|
@ -200,8 +202,8 @@ Adding a new generator is also really easy. You might want to have a look at
|
|||
|
||||
::
|
||||
|
||||
def get_generators(generators):
|
||||
def get_generators(pelican_object):
|
||||
# define a new generator here if you need to
|
||||
return generators
|
||||
return MyGenerator
|
||||
|
||||
signals.get_generators.connect(get_generators)
|
||||
|
|
|
|||
|
|
@ -209,7 +209,20 @@ class Pelican(object):
|
|||
return generators
|
||||
|
||||
def get_writer(self):
|
||||
return Writer(self.output_path, settings=self.settings)
|
||||
writers = [ w for w in signals.get_writer.send(self)
|
||||
if isinstance(w, type) ]
|
||||
writers_found = len(writers)
|
||||
if writers_found == 0:
|
||||
return Writer(self.output_path, settings=self.settings)
|
||||
else:
|
||||
_, writer = writers[0]
|
||||
if writers_found == 1:
|
||||
logger.debug('Found writer: {}'.format(writer))
|
||||
else:
|
||||
logger.warning(
|
||||
'{} writers found, using only first one: {}'.format(
|
||||
writers_found, writer))
|
||||
return writer(self.output_path, settings=self.settings)
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from blinker import signal
|
|||
|
||||
initialized = signal('pelican_initialized')
|
||||
get_generators = signal('get_generators')
|
||||
get_writer = signal('get_writer')
|
||||
finalized = signal('pelican_finalized')
|
||||
|
||||
# Reader-level signals
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue