smart-resume-builder / render /templates.py
raj999's picture
one commit to rule them all
da0c238
raw
history blame
1.01 kB
from __future__ import annotations
import pathlib
from typing import Dict
from jinja2 import Environment, FileSystemLoader, select_autoescape
TEMPLATE_DIR = pathlib.Path(__file__).resolve().parent.parent / "templates"
def list_templates() -> Dict[str, pathlib.Path]:
return {p.stem: p for p in TEMPLATE_DIR.glob("*.tex")}
def render_template(template_name: str, context: dict) -> str:
templates = list_templates()
if template_name not in templates:
raise ValueError(f"Template {template_name} not found. Available: {list(templates)}")
env = Environment(
loader=FileSystemLoader(str(TEMPLATE_DIR)),
autoescape=select_autoescape(enabled_extensions=("tex",)),
block_start_string="\\BLOCK{",
block_end_string="}",
variable_start_string="{{",
variable_end_string="}}",
comment_start_string="\\#",
comment_end_string="}",
)
template = env.get_template(f"{template_name}.tex")
return template.render(**context)