From dc50988b4eb688e90024d2cce4475b9f7ae89ee9 Mon Sep 17 00:00:00 2001 From: liob Date: Wed, 26 Mar 2014 11:35:27 +0100 Subject: [PATCH] added actual code --- __init__.py | 1 + pandoc_reader.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 __init__.py create mode 100644 pandoc_reader.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..31d0856 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +from .pandoc_reader import * diff --git a/pandoc_reader.py b/pandoc_reader.py new file mode 100644 index 0000000..b5e0b07 --- /dev/null +++ b/pandoc_reader.py @@ -0,0 +1,42 @@ +from datetime import datetime +from pelican import signals +from pelican.readers import BaseReader +import pypandoc + +class NewReader(BaseReader): + enabled = True + file_extensions = ['md', 'markdown', 'mkd', 'mdown'] + + def read(self, filename): + with open(filename) as file: + metadata_items = [] + in_content = False + MD = '' + for line in file.readlines(): + splitted = line.split(':', 1) + if len(splitted) == 2 and not in_content: + metadata_items.append(splitted) + else: + in_content = True + MD += line + + metadata = {} + for item in metadata_items: + name, value = item + name = name.lower() + value = value.strip() + meta = self.process_metadata(name, value) + metadata[name] = meta + + if 'PANDOC_ARGS' in self.settings: + output = pypandoc.convert(MD, 'html5', format='md', extra_args=self.settings['PANDOC_ARGS']) + else: + output = pypandoc.convert(MD, 'html5', format='md') + + return output, metadata + +def add_reader(readers): + readers.reader_classes['md'] = NewReader + +def register(): + signals.readers_init.connect(add_reader)