add FILENAME_METADATA setting to extract metadata from filename

FILENAME_METADATA default to '(?P<date>\d{4}-\d{2}-\d{2}).*' which will allow
to extract date metadata from the filename.
This commit is contained in:
Bruno Binet 2012-11-28 00:29:30 +01:00
commit debd6fb3b4
2 changed files with 24 additions and 2 deletions

View file

@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
import os
import re
try:
import docutils
import docutils.core
@ -207,8 +209,9 @@ for cls in Reader.__subclasses__():
def read_file(filename, fmt=None, settings=None):
"""Return a reader object using the given format."""
base, ext = os.path.splitext(os.path.basename(filename))
if not fmt:
fmt = filename.split('.')[-1]
fmt = ext[1:]
if fmt not in _EXTENSIONS:
raise TypeError('Pelican does not know how to parse %s' % filename)
@ -230,4 +233,13 @@ def read_file(filename, fmt=None, settings=None):
content = typogrify(content)
metadata['title'] = typogrify(metadata['title'])
filename_metadata = settings and settings.get('FILENAME_METADATA')
if filename_metadata:
match = re.match(filename_metadata, base)
if match:
for k, v in match.groupdict().iteritems():
if k not in metadata:
k = k.lower() # metadata must be lowercase
metadata[k] = reader.process_metadata(k, v)
return content, metadata