vf-site/lib/engine.py

19 lines
554 B
Python

from dataclasses import dataclass
from typing import Protocol
from jinja2 import Environment, FileSystemLoader, select_autoescape
engine = Environment(loader=FileSystemLoader("templates"), autoescape=select_autoescape())
class Renderer(Protocol):
def render(self, template: str, context: dict | None = None) -> str:
...
@dataclass
class FileSystemRenderer(Renderer):
path: str = "templates"
def render(self, template: str, context: dict | None = None) -> str:
return engine.get_template(template).render(context or {})