From e8519fd954433fbcc5208e6699315a6bbd57b21e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=9A=D0=B0=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Wed, 31 Oct 2018 20:23:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20!markdown=20=D0=B4=D0=BB=D1=8F=20YAML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 4 ++++ flatfilecms/views/pages.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c052994 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +all: bdist + +bdist: + python3 setup.py sdist bdist_wheel diff --git a/flatfilecms/views/pages.py b/flatfilecms/views/pages.py index 1b31280..dcb986b 100644 --- a/flatfilecms/views/pages.py +++ b/flatfilecms/views/pages.py @@ -10,12 +10,16 @@ from pathlib import PurePath from ..resources import (Folder, Document, Markdown, YAML, Jinja2) import yaml import frontmatter +import markdown + +from ..filters import IgnoreExtension class Loader(yaml.Loader): def __init__(self, stream): super(Loader, self).__init__(stream) Loader.add_constructor('!include', Loader.include) + Loader.add_constructor('!markdown', Loader.markdown) def include(self, node): if isinstance(node, yaml.ScalarNode): @@ -35,6 +39,17 @@ class Loader(yaml.Loader): raise yaml.constructor.ConstructorError( "Error:: unrecognised node type in !include statement") + def markdown(self, node): + if not isinstance(node, yaml.ScalarNode): + raise yaml.constructor.ConstructorError( + "Error:: unrecognised node type in !markdown statement") + m = self.construct_scalar(node) + return markdown.markdown( + m, + extensions=[IgnoreExtension(), 'markdown.extensions.extra'], + output_format='html5', + tab_length=2) + def extractFile(self, filename): path = PurePath(self.data_dir) / filename f = AssetResolver().resolve(str(path)).stream()