mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Proof-of-concept
This commit is contained in:
parent
246da3b4d8
commit
61116f1340
2 changed files with 40 additions and 1 deletions
|
|
@ -25,7 +25,7 @@ from pelican.readers import Readers
|
|||
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
|
||||
from pelican.settings import coerce_overrides, read_settings
|
||||
from pelican.utils import (FileSystemWatcher, clean_output_dir, maybe_pluralize)
|
||||
from pelican.writers import Writer
|
||||
from pelican.writers import Writer, CollectionRSSWriter
|
||||
|
||||
try:
|
||||
__version__ = __import__('pkg_resources') \
|
||||
|
|
@ -37,6 +37,12 @@ DEFAULT_CONFIG_NAME = 'pelicanconf.py'
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DataType:
|
||||
ALL = 1
|
||||
CONTENT = 2
|
||||
COLLECTION = 3
|
||||
|
||||
|
||||
class Pelican:
|
||||
|
||||
def __init__(self, settings):
|
||||
|
|
@ -116,6 +122,8 @@ class Pelican:
|
|||
|
||||
writer = self._get_writer()
|
||||
|
||||
writers = self._get_writers()
|
||||
|
||||
for p in generators:
|
||||
if hasattr(p, 'generate_output'):
|
||||
p.generate_output(writer)
|
||||
|
|
@ -153,6 +161,24 @@ class Pelican:
|
|||
'draft page',
|
||||
'draft pages')
|
||||
|
||||
generated_data = {
|
||||
DataType.ALL: [],
|
||||
DataType.CONTENT: [],
|
||||
DataType.COLLECTION: [],
|
||||
}
|
||||
|
||||
for p in generators:
|
||||
if hasattr(p, "generate_data"):
|
||||
generated_data[getattr(p, "data_type", DataType.ALL)] = (
|
||||
p.__name__,
|
||||
p.generate_data(),
|
||||
)
|
||||
|
||||
for data_type, data_list in generated_data.items():
|
||||
for w in writers[data_type]:
|
||||
for generator, data in data_list:
|
||||
w.write(generator, data)
|
||||
|
||||
print('Done: Processed {}, {}, {}, {} and {} in {:.2f} seconds.'
|
||||
.format(
|
||||
pluralized_articles,
|
||||
|
|
@ -214,6 +240,15 @@ class Pelican:
|
|||
logger.debug("Found writer: %s", writer)
|
||||
return writer(self.output_path, settings=self.settings)
|
||||
|
||||
def _get_writers(self):
|
||||
return {
|
||||
DataType.ALL: [self._get_writer()],
|
||||
DataType.CONTENT: [],
|
||||
DataType.COLLECTION: [
|
||||
CollectionRSSWriter(self.output_path, settings=self.settings)
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
class PrintSettings(argparse.Action):
|
||||
def __call__(self, parser, namespace, values, option_string):
|
||||
|
|
|
|||
|
|
@ -268,3 +268,7 @@ class Writer:
|
|||
context, name, kwargs, relative_urls)
|
||||
_write_file(template, localcontext, self.output_path, name,
|
||||
override_output)
|
||||
|
||||
|
||||
class CollectionRSSWriter(Writer):
|
||||
pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue