mirror of
https://github.com/offen/website.git
synced 2024-11-22 09:00:28 +01:00
Merge pull request #19 from offen/process-markdown
Add markdown decorator plugin
This commit is contained in:
commit
0db19d427f
@ -39,8 +39,12 @@ DIRECT_TEMPLATES = ['sitemap']
|
|||||||
SITEMAP_SAVE_AS = 'sitemap.xml'
|
SITEMAP_SAVE_AS = 'sitemap.xml'
|
||||||
|
|
||||||
PLUGIN_PATHS = ['./plugins']
|
PLUGIN_PATHS = ['./plugins']
|
||||||
PLUGINS = ['assets']
|
PLUGINS = ['decorate_content', 'assets']
|
||||||
|
|
||||||
|
DECORATE_CONTENT = {
|
||||||
|
# maps any CSS selector to a list of classes to be added
|
||||||
|
# 'p': ['pv0', 'dim']
|
||||||
|
}
|
||||||
|
|
||||||
GITHUB_ORG = 'https://github.com/offen'
|
GITHUB_ORG = 'https://github.com/offen'
|
||||||
CONTACT_EMAIL = 'hioffen@posteo.de'
|
CONTACT_EMAIL = 'hioffen@posteo.de'
|
||||||
|
1
homepage/plugins/decorate_content/__init__.py
Normal file
1
homepage/plugins/decorate_content/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .decorate_content import *
|
33
homepage/plugins/decorate_content/decorate_content.py
Normal file
33
homepage/plugins/decorate_content/decorate_content.py
Normal 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.find_all(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)
|
@ -3,3 +3,4 @@ markdown==3.1.1
|
|||||||
git+git://github.com/miracle2k/webassets#d1f3455e383446ca4ab0c644f326ee937e68e809
|
git+git://github.com/miracle2k/webassets#d1f3455e383446ca4ab0c644f326ee937e68e809
|
||||||
cssmin==0.2.0
|
cssmin==0.2.0
|
||||||
libsass==0.19.3
|
libsass==0.19.3
|
||||||
|
beautifulsoup4==4.8.1
|
||||||
|
Loading…
Reference in New Issue
Block a user