Source code for plbuilder.templater

import os
from functools import lru_cache
from pathlib import Path
from typing import Optional, Union
from typing_extensions import TypedDict

import jinja2


[docs]class TemplateData(TypedDict): title: str
[docs]@lru_cache def get_environment(local_path: Optional[Union[str, Path]] = None) -> jinja2.Environment: path = Path(local_path or os.getcwd()) local_templates_path = path / "templates" local_loader = jinja2.FileSystemLoader(local_templates_path) default_loader = jinja2.PackageLoader("plbuilder") choice_loader = jinja2.ChoiceLoader([local_loader, default_loader]) return jinja2.Environment(loader=choice_loader)
[docs]def render_template(name: str, data: TemplateData) -> str: env = get_environment() template = env.get_template(name) return template.render(**data)
[docs]def output_template(name: str, data: TemplateData, path: Union[str, Path]): output = render_template(name, data) Path(path).write_text(output)