Use Jinja2 templates for HTML files:
from staticpipes.pipes.jinja2 import PipeJinja2
config = Config(
pipes=[
PipeJinja2(extensions=["html"]),
],
context={
"title": "An example website",
}
)
The context is available as variables in your templates.
It's common to use includes or extends with Jinja2, but you don't want your library template files in the final website.
Put them all in a directory that starts with a _
like _templates
then exclude those directories:
from staticpipes.pipes.exclude_underscore_directories import PipeExcludeUnderscoreDirectories
config = Config(
pipes=[
PipeExcludeUnderscoreDirectories(),
PipeJinja2(extensions=["html"]),
],
)
You can create a custom environment:
from staticpipes.jinja2_environment import Jinja2Environment
jinja2_environment = Jinja2Environment()
# use in config ...
# PipeJinja2(jinja2_environment=jinja2_environment)
# or
# ProcessJinja2(jinja2_environment=jinja2_environment)
You can then change autoescape:
jinja2_environment = Jinja2Environment(autoescape=False)
Or add filters:
from markdown_it import MarkdownIt
def render_markdown(content):
md = MarkdownIt()
return md.render(content) if content else ""
jinja2_environment = Jinja2Environment(filters={"render_markdown": render_markdown})