From a7dd21ffafb399b88183e6e71fd022d9f947f439 Mon Sep 17 00:00:00 2001 From: Nico Di Rocco Date: Fri, 28 Sep 2012 14:59:05 +0200 Subject: [PATCH] Added a new setting OUTPUT_SOURCES_EXTENSION Using this configurable setting users can control what extension will be appended to filenames by the SourcesGenerator. The default is to use the ``.text`` extension. --- docs/settings.rst | 3 +++ pelican/generators.py | 5 ++++- pelican/settings.py | 13 +++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/settings.rst b/docs/settings.rst index a0411e0b..9997f474 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -72,6 +72,9 @@ Setting name (default value) What doe `OUTPUT_SOURCES` (``False``) Set to True if you want to copy the articles and pages in their original format (e.g. Markdown or ReStructeredText) to the specified OUTPUT_PATH. +`OUTPUT_SOURCES_EXTENSION` (``.text``) Controls the extension that will be used by the SourcesGenerator. + Defaults to .text. If the first character is not a `.` the + dot character will be prepended to the extension. `RELATIVE_URLS` (``True``) Defines whether Pelican should use document-relative URLs or not. If set to ``False``, Pelican will use the SITEURL setting to construct absolute URLs. diff --git a/pelican/generators.py b/pelican/generators.py index b28e5c6d..e9646825 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -492,9 +492,12 @@ class PdfGenerator(Generator): self._create_pdf(page, pdf_path) class SourceFileGenerator(Generator): + def generate_context(self): + self.output_extension = self.settings['OUTPUT_SOURCES_EXTENSION'] + def _create_source(self, obj, output_path): filename = os.path.splitext(obj.save_as)[0] - dest = os.path.join(output_path, filename + '.text') + dest = os.path.join(output_path, filename + self.output_extension) copy('', obj.filename, dest) def generate_output(self, writer=None): diff --git a/pelican/settings.py b/pelican/settings.py index df105673..dce1d8ac 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -33,6 +33,7 @@ _DEFAULT_CONFIG = {'PATH': '.', 'DISPLAY_PAGES_ON_MENU': True, 'PDF_GENERATOR': False, 'OUTPUT_SOURCES': False, + 'OUTPUT_SOURCES_EXTENSION': '.text', 'DEFAULT_CATEGORY': 'misc', 'DEFAULT_DATE': 'fs', 'WITH_FUTURE_DATES': True, @@ -175,4 +176,16 @@ def configure_settings(settings, default_settings=None, filename=None): logger.warn("You must install the webassets module to use WEBASSETS.") settings['WEBASSETS'] = False + if 'OUTPUT_SOURCES_EXTENSION' in settings: + try: + if not isinstance(settings['OUTPUT_SOURCES_EXTENSION'], str): + raise ValueError + elif '.' is not settings['OUTPUT_SOURCES_EXTENSION'][0]: + settings['OUTPUT_SOURCES_EXTENSION'] = '.' + settings['OUTPUT_SOURCES_EXTENSION'] + except(ValueError, IndexError): + logger.warn("Detected misconfiguration with OUTPUT_SOURCES_EXTENSION." + " falling back to the default extension " + + _DEFAULT_CONFIG['OUTPUT_SOURCES_EXTENSION']) + settings['OUTPUT_SOURCES_EXTENSION'] = _DEFAULT_CONFIG['OUTPUT_SOURCES_EXTENSION'] + return settings