Coverage for src / content_generator / template_engine.py: 79%
14 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-13 20:29 +0800
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-13 20:29 +0800
1"""模板引擎."""
3from __future__ import annotations
5from typing import Any
7from jinja2 import BaseLoader, Environment, FileSystemLoader
10class TemplateEngine:
11 def __init__(self, template_dir: str | None = None) -> None:
12 if template_dir:
13 self.env = Environment(loader=FileSystemLoader(template_dir))
14 else:
15 self.env = Environment(loader=BaseLoader())
17 def render(self, template_str: str, context: dict[str, Any]) -> str:
18 template = self.env.from_string(template_str)
19 return template.render(**context) # type: ignore[no-any-return]
21 def render_file(self, template_file: str, context: dict[str, Any]) -> str:
22 template = self.env.get_template(template_file)
23 return template.render(**context) # type: ignore[no-any-return]