From 049f4152cc68cda382a98654dbf19ac6e6e1828f Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Fri, 13 Jan 2017 08:55:25 +0000 Subject: [PATCH] Upgrade pelican and internalise plugin --- .gitmodules | 5 ----- pelicanconf.py | 23 ++++++++++++------- plugins/pelican-jinja2content | 1 - plugins/pelican-jinja2content.py | 38 ++++++++++++++++++++++++++++++++ requirements.txt | 2 +- 5 files changed, 54 insertions(+), 15 deletions(-) delete mode 160000 plugins/pelican-jinja2content create mode 100644 plugins/pelican-jinja2content.py diff --git a/.gitmodules b/.gitmodules index df26d6b..5246012 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,3 @@ [submodule "pelican_plugins"] path = pelican_plugins url = https://github.com/getpelican/pelican-plugins - -[submodule "plugins/pelican-jinja2content"] - path = plugins/pelican-jinja2content - url = https://github.com/RealOrangeOne/pelican-jinja2content.git - branch = patch-1 diff --git a/pelicanconf.py b/pelicanconf.py index 431a585..8e49039 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -81,14 +81,15 @@ MINIFY = { from fontawesome_markdown import FontAwesomeExtension from pyembed.markdown import PyEmbedMarkdown from mkdcomments import CommentsExtension -MD_EXTENSIONS = [ - FontAwesomeExtension(), - PyEmbedMarkdown(), - CommentsExtension(), - 'codehilite(css_class=highlight)', - 'extra' -] - +MARKDOWN = { + 'extensions': [ + FontAwesomeExtension(), + PyEmbedMarkdown(), + CommentsExtension(), + 'codehilite(css_class=highlight)', + 'extra' + ] +} # Setup jinja2 filters from plugins import filters JINJA_FILTERS = { @@ -96,3 +97,9 @@ JINJA_FILTERS = { "category_find": filters.category_find, "limit": filters.limit } + +JINJA_ENVIRONMENT = { + 'trim_blocks': True, + 'lstrip_blocks': True, + 'extensions': {} +} diff --git a/plugins/pelican-jinja2content b/plugins/pelican-jinja2content deleted file mode 160000 index 8133378..0000000 --- a/plugins/pelican-jinja2content +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 81333781964a57d5f590730d0ba419377f0ff022 diff --git a/plugins/pelican-jinja2content.py b/plugins/pelican-jinja2content.py new file mode 100644 index 0000000..304435f --- /dev/null +++ b/plugins/pelican-jinja2content.py @@ -0,0 +1,38 @@ +import os + +from pelican import signals +from pelican import contents + +from jinja2 import Environment, ChoiceLoader, FileSystemLoader + + +def execjinja2(instance): + if type(instance) in (contents.Article, contents.Page): + base_path = os.path.dirname(os.path.abspath(__file__)) + jinja2_env = Environment( + loader=ChoiceLoader([ + FileSystemLoader( + os.path.join(base_path, instance.settings['THEME'], 'templates') + ), + FileSystemLoader( + os.path.join(base_path, instance.settings['PATH']) + ) + ]), + **instance.settings['JINJA_ENVIRONMENT'], + ) + + jinja2_env.filters.update(instance.settings['JINJA_FILTERS']) + + jinja2_template = jinja2_env.from_string(instance._content) + + kwargs = instance._context + if type(instance) is contents.Article: + kwargs['article'] = instance + elif type(instance) is contents.Page: + kwargs['page'] = instance + + instance._content = jinja2_template.render(**kwargs) + + +def register(): + signals.content_object_init.connect(execjinja2) diff --git a/requirements.txt b/requirements.txt index a66f9e2..46136b4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ iso8601==0.1.11 markdown==2.6.7 nose2==0.6.5 pelican-minify==0.9 -pelican==3.6.3 +pelican==3.7.1 pyembed-markdown==1.1.0 pygments-style-github==0.4 python-resize-image==1.1.3