Obraz — static site generator in a single Python file mostly compatible with Jekyll
This release introduces an experimental plugin system.
What's new:
Please note, that the plugin system is very experimental. It may be changed significantly in the future releases.
Having said that, let's see how to write plugins for Obraz. A plugin is a Python
file sitting in the _plugins
directory inside your site. This file will be
sourced by Obraz before loading the site content.
A typical plugin should:
Let's create a simple plugin that automatically sets the layout of the blog
posts to the posts_layout
parameter value of _config.yml
.
File _plugins/posts_layout.py
:
def process_posts_layout(basedir, destdir, site):
"""Set default posts layout."""
layout = site.get('posts_layout', 'post')
for post in site.get('posts', []):
post.setdefault('layout', layout)
obraz.processors.insert(0, process_posts_layout)
That's all you need. obraz
is a special variable that refers to the Obraz
module. You can see your plugin doing things in the output of Obraz:
$ obraz
Loaded 1 plugins
Loading source files...
Loaded 13 files
Set default posts layout...
Sort and interlink posts...
Generate pages with YAML front matter...
Copy static files...
Site generated successfully
Please refer to the source code of Obraz for more info. Remember that it's less than 500 lines!