From 558038be32f4cbfdf2c04897a5f10c9cde039e15 Mon Sep 17 00:00:00 2001 From: Alexander Artemenko Date: Wed, 22 Dec 2010 01:08:23 +0300 Subject: [PATCH] Fixed tags parsing, now it can parse tags like this "blah,minor, foo , bar". Also, code for metadata parsing was slightly refactored. --- pelican/readers.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pelican/readers.py b/pelican/readers.py index 7ff393c5..1fc51f68 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -1,6 +1,7 @@ from docutils import core from markdown import Markdown import re +import string # import the directives to have pygments support import rstdirectives @@ -8,11 +9,11 @@ import rstdirectives from pelican.utils import get_date, open -_METADATAS_FIELDS = {'tags': lambda x: x.split(', '), - 'date': lambda x: get_date(x), - 'category': lambda x: x, - 'author': lambda x: x, - 'status': lambda x:x.strip(),} +_METADATAS_PROCESSORS = { + 'tags': lambda x: map(string.strip, x.split(',')), + 'date': lambda x: get_date(x), + 'status': string.strip, +} class RstReader(object): @@ -20,10 +21,11 @@ class RstReader(object): def _parse_metadata(self, content): """Return the dict containing metadatas""" output = {} - for m in re.compile(':([a-z]+): (.*)\s', re.M).finditer(content): + for m in re.compile('^:([a-z]+): (.*)\s', re.M).finditer(content): name, value = m.group(1).lower(), m.group(2) - if name in _METADATAS_FIELDS: - output[name] = _METADATAS_FIELDS[name](value) + output[name] = _METADATAS_PROCESSORS.get( + name, lambda x:x + )(value) return output def read(self, filename): @@ -51,7 +53,7 @@ class MarkdownReader(object): metadatas = {} for name, value in md.Meta.items(): name = name.lower() - metadatas[name] = _METADATAS_FIELDS.get( + metadatas[name] = _METADATAS_PROCESSORS.get( name, lambda x:x )(value[0]) return content, metadatas