|
@@ -8,6 +8,7 @@ body of your articles.
|
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
from pelican import signals
|
|
|
+from pelican.generators import ArticlesGenerator, StaticGenerator
|
|
|
|
|
|
def initialized(pelican):
|
|
|
from pelican.settings import DEFAULT_CONFIG
|
|
@@ -21,7 +22,7 @@ def initialized(pelican):
|
|
|
pelican.settings.setdefault('SUMMARY_END_MARKER',
|
|
|
'<!-- PELICAN_END_SUMMARY -->')
|
|
|
|
|
|
-def content_object_init(instance):
|
|
|
+def extract_summary(instance):
|
|
|
# if summary is already specified, use it
|
|
|
# if there is no content, there's nothing to do
|
|
|
if hasattr(instance, '_summary'):
|
|
@@ -35,7 +36,6 @@ def content_object_init(instance):
|
|
|
begin_marker = instance.settings['SUMMARY_BEGIN_MARKER']
|
|
|
end_marker = instance.settings['SUMMARY_END_MARKER']
|
|
|
|
|
|
- # extract out our summary
|
|
|
content = instance._content
|
|
|
begin_summary = -1
|
|
|
end_summary = -1
|
|
@@ -69,6 +69,22 @@ def content_object_init(instance):
|
|
|
instance._summary = summary
|
|
|
instance.has_summary = True
|
|
|
|
|
|
+
|
|
|
+def run_plugin(generators):
|
|
|
+ for generator in generators:
|
|
|
+ if isinstance(generator, ArticlesGenerator):
|
|
|
+ for article in generator.articles:
|
|
|
+ extract_summary(article)
|
|
|
+ elif isinstance(generator, PagesGenerator):
|
|
|
+ for page in generator.pages:
|
|
|
+ extract_summary(page)
|
|
|
+
|
|
|
+
|
|
|
def register():
|
|
|
signals.initialized.connect(initialized)
|
|
|
- signals.content_object_init.connect(content_object_init)
|
|
|
+ try:
|
|
|
+ signals.all_generators_finalized.connect(run_plugin)
|
|
|
+ except AttributeError:
|
|
|
+ # NOTE: This results in #314 so shouldn't really be relied on
|
|
|
+ # https://github.com/getpelican/pelican-plugins/issues/314
|
|
|
+ signals.content_object_init.connect(extract_summary)
|