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

1import pathlib 

2 

3from rendercv.schema.models.rendercv_model import RenderCVModel 

4 

5from .path_resolver import resolve_rendercv_file_path 

6from .templater.templater import render_full_template 

7 

8 

9def generate_typst(rendercv_model: RenderCVModel) -> pathlib.Path | None: 

10 """Generate Typst source file from CV model via Jinja2 templates. 

11 

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. 

16 

17 Args: 

18 rendercv_model: Validated CV model with content and design. 

19 

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