Path:
strictdoc/export/rst/document_rst_generator.py
Lines:
47
Non-empty lines:
38
Non-empty lines covered with requirements:
38 / 38 (100.0%)
Functions:
3
Functions covered by requirements:
3 / 3 (100.0%)
1
import os
2
from pathlib import Path
3
4
from strictdoc.backend.sdoc.models.document import SDocDocument
5
from strictdoc.core.document_meta import DocumentMeta
6
from strictdoc.core.traceability_index import TraceabilityIndex
7
from strictdoc.export.rst.writer import RSTWriter
8
from strictdoc.helpers.cast import assert_cast
9
10
11
class DocumentRSTGenerator:
12
@staticmethod13
def export_tree(
14
traceability_index: TraceabilityIndex, output_rst_root: str
15
) -> None:
16
Path(output_rst_root).mkdir(parents=True, exist_ok=True)
17
18
document: SDocDocument
19
for document in traceability_index.document_tree.document_list:
20
document_content = DocumentRSTGenerator.export(
21
document, traceability_index
22
)23
document_meta = assert_cast(document.meta, DocumentMeta)
24
output_folder = os.path.join(
25
output_rst_root,
26
document_meta.input_doc_dir_rel_path.relative_path,
27
)28
Path(output_folder).mkdir(parents=True, exist_ok=True)
29
30
document_out_file = f"{document_meta.document_filename_base}.rst"
31
output_path = os.path.join(output_folder, document_out_file)
32
33
with open(output_path, "w", encoding="utf8") as file:
34
file.write(document_content)
35
36
@staticmethod37
def export(
38
document: SDocDocument, traceability_index: TraceabilityIndex
39
) -> str:
40
writer = RSTWriter(traceability_index)
41
42
single_or_many = (
43
len(traceability_index.document_tree.document_list) == 1
44
)45
output = writer.write(document, single_or_many)
46
47
return output