Source code for mdreport.template_rendering

from __future__ import annotations

from collections.abc import Mapping, Sequence
from typing import Any, cast

from jinja2 import Template

from .markdown_tokens import NestedListItem

__all__ = ["render_template", "render_template_items"]


[docs] def render_template(text: str, params: Mapping[str, Any] | None = None) -> str: """Render a short Jinja template when parameters are supplied.""" if params is None: return text return cast(str, Template(text).render(**params))
[docs] def render_template_items( items: Sequence[NestedListItem], params: Mapping[str, Any] | None = None, ) -> list[NestedListItem]: """Render templates across list items, descending into nested sublists.""" rendered_items: list[NestedListItem] = [] for item in items: if isinstance(item, list): rendered_items.append(render_template_items(item, params)) else: rendered_items.append(render_template(str(item), params)) return rendered_items