2
0
mirror of https://github.com/offen/website.git synced 2024-10-18 12:10:25 +02:00

vendor decorate plugin to enable pickling of settings file

This commit is contained in:
Frederik Ring 2020-12-17 17:25:31 +01:00
parent 8bdb79f190
commit 111cd9082b
5 changed files with 39 additions and 5 deletions

1
.gitignore vendored
View File

@ -115,3 +115,4 @@ venv.bak/
test.py
*.json
homepage/cache

View File

@ -1,6 +1,5 @@
import os
from datetime import datetime
from pelican_decorate_content import decorate_content
# If your site is available via HTTPS, make sure SITEURL begins with https://
RELATIVE_URLS = False
@ -27,7 +26,8 @@ DEFAULT_PAGINATION = False
THEME = './theme'
# Delete the output directory before generating new files.
DELETE_OUTPUT_DIRECTORY = True
DELETE_OUTPUT_DIRECTORY = False
CACHE_CONTENT = True
DIRECT_TEMPLATES = ['sitemap', 'archives']
@ -45,7 +45,7 @@ PAGE_SAVE_AS = '{slug}/index.html'
ARTICLE_SAVE_AS = 'blog/{slug}/index.html'
PLUGIN_PATHS = ['./plugins']
PLUGINS = [decorate_content, 'assets']
PLUGINS = ['decorate_content', 'assets']
MARKDOWN = {
'extension_configs': {

View File

@ -0,0 +1 @@
from .decorate_content import *

View File

@ -0,0 +1,33 @@
from json import loads
from pelican import signals
from pelican.contents import Article, Page, Static
from bs4 import BeautifulSoup
def content_object_init(instance):
if isinstance(instance, (Article, Page, Static)):
plugin_settings = instance.settings.get("DECORATE_CONTENT", {})
content_overrides = (
instance.metadata.get("decorate_content", None)
if instance.metadata is not None
else None
)
settings = plugin_settings.copy()
settings.update(
loads(content_overrides) if content_overrides is not None else {}
)
soup = BeautifulSoup(instance._content, "html.parser")
for selector, class_names in settings.items():
elems = soup.select(selector)
for elem in elems:
elem["class"] = elem.get("class", []) + class_names
instance._content = soup.decode()
def register():
signals.content_object_init.connect(content_object_init)

View File

@ -1,5 +1,4 @@
pelican==4.0.1
pelican==4.5.3
markdown==3.1.1
git+git://github.com/miracle2k/webassets#d1f3455e383446ca4ab0c644f326ee937e68e809
beautifulsoup4==4.8.1
pelican-decorate-content==0.1.1