Merge pull request #794 from wking/static-reader

Use the static format to read Static metadata
This commit is contained in:
Justin Mayer 2013-03-21 11:26:22 -07:00
commit 167128b1f2
2 changed files with 18 additions and 8 deletions

View file

@ -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},

View file

@ -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'])