Coverage for src / rendercv / renderer / typst.py: 100%
11 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-25 13:49 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-25 13:49 +0000
1import pathlib
3from rendercv.schema.models.rendercv_model import RenderCVModel
5from .path_resolver import resolve_rendercv_file_path
6from .templater.templater import render_full_template
9def generate_typst(rendercv_model: RenderCVModel) -> pathlib.Path | None:
10 """Generate Typst source file from CV model via Jinja2 templates.
12 Why:
13 Typst is the intermediate format before PDF/PNG compilation. Templates
14 convert validated model data to Typst markup with proper formatting,
15 fonts, and styling from design options.
17 Args:
18 rendercv_model: Validated CV model with content and design.
20 Returns:
21 Path to generated Typst file, or None if generation disabled.
22 """
23 if rendercv_model.settings.render_command.dont_generate_typst:
24 return None
25 typst_path = resolve_rendercv_file_path(
26 rendercv_model, rendercv_model.settings.render_command.typst_path
27 )
28 typst_contents = render_full_template(rendercv_model, "typst")
29 typst_path.write_text(typst_contents, encoding="utf-8")
30 return typst_path