mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
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:
parent
a0049f9fcd
commit
debd6fb3b4
2 changed files with 24 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue