diff --git a/pelican/generators.py b/pelican/generators.py index 43127099..f748766a 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -563,21 +563,24 @@ class StaticGenerator(Generator): for f in self.get_files( os.path.join(self.path, static_path), extensions=False): f_rel = os.path.relpath(f, self.path) + content, metadata = read_file( + f, fmt='static', settings=self.settings) # TODO remove this hardcoded 'static' subdirectory - dest = os.path.join('static', f_rel) - url = pelican.utils.path_to_url(dest) + metadata['save_as'] = os.path.join('static', f_rel) + metadata['url'] = pelican.utils.path_to_url(metadata['save_as']) sc = Static( content=None, - metadata={ - 'save_as': dest, - 'url': url, - }, + metadata=metadata, settings=self.settings, source_path=f_rel) self.staticfiles.append(sc) self.add_source_path(sc) # same thing for FILES_TO_COPY for src, dest in self.settings['FILES_TO_COPY']: + content, metadata = read_file( + src, fmt='static', settings=self.settings) + metadata['save_as'] = dest + metadata['url'] = pelican.utils.path_to_url(metadata['save_as']) sc = Static( content=None, metadata={'save_as': dest}, diff --git a/pelican/readers.py b/pelican/readers.py index 3fd3650b..a6ff9118 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -44,6 +44,7 @@ METADATA_PROCESSORS = { class Reader(object): enabled = True + file_extensions = ['static'] extensions = None def __init__(self, settings): @@ -54,6 +55,12 @@ class Reader(object): return METADATA_PROCESSORS[name](value, self.settings) return value + def read(self, source_path): + "No-op parser" + content = None + metadata = {} + return content, metadata + class _FieldBodyTranslator(HTMLTranslator): @@ -311,7 +318,7 @@ class AsciiDocReader(Reader): EXTENSIONS = {} -for cls in Reader.__subclasses__(): +for cls in [Reader] + Reader.__subclasses__(): for ext in cls.file_extensions: EXTENSIONS[ext] = cls @@ -340,7 +347,7 @@ def read_file(path, fmt=None, settings=None): metadata.update(reader_metadata) # eventually filter the content with typogrify if asked so - if settings and settings.get('TYPOGRIFY'): + if content and settings and settings.get('TYPOGRIFY'): from typogrify.filters import typogrify content = typogrify(content) metadata['title'] = typogrify(metadata['title'])