Skip to content

Commit 9c651e9

Browse files
committed
fix(export/html): Consider MARKUP = Text option in source file view
Previously, RST was hard-coded. Fix it by checking on a per-node basis if RST or Text rendering shall be used. It's not possible to do this on a per-source-file basis, since requirements for one source file may come from multiple documents and the MARKUP option is attached to that documents, not to the source file. Fixes #2544.
1 parent 7c4a21b commit 9c651e9

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

strictdoc/export/html/generators/source_file_view_generator.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from pygments.lexers.templates import HtmlDjangoLexer
2121
from pygments.util import ClassNotFound
2222

23+
from strictdoc.backend.sdoc.constants import SDocMarkup
2324
from strictdoc.backend.sdoc_source_code.models.function_range_marker import (
2425
ForwardFunctionRangeMarker,
2526
FunctionRangeMarker,
@@ -114,7 +115,15 @@ def export(
114115
static_path=project_config.dir_for_sdoc_assets,
115116
)
116117
markup_renderer = MarkupRenderer.create(
117-
"RST",
118+
SDocMarkup.RST,
119+
traceability_index,
120+
link_renderer,
121+
html_templates,
122+
project_config,
123+
None,
124+
)
125+
text_renderer = MarkupRenderer.create(
126+
SDocMarkup.TEXT,
118127
traceability_index,
119128
link_renderer,
120129
html_templates,
@@ -127,6 +136,7 @@ def export(
127136
project_config=project_config,
128137
link_renderer=link_renderer,
129138
markup_renderer=markup_renderer,
139+
text_renderer=text_renderer,
130140
source_file=source_file,
131141
pygments_styles=pygments_styles,
132142
pygmented_source_file_lines=pygmented_source_file_lines,

strictdoc/export/html/generators/view_objects/source_file_view_object.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from markupsafe import Markup
99

1010
from strictdoc import __version__
11+
from strictdoc.backend.sdoc.constants import SDocMarkup
1112
from strictdoc.backend.sdoc.models.anchor import Anchor
1213
from strictdoc.backend.sdoc.models.document import SDocDocument
1314
from strictdoc.backend.sdoc.models.document_view import NullViewElement
@@ -71,6 +72,7 @@ def __init__(
7172
project_config: ProjectConfig,
7273
link_renderer: LinkRenderer,
7374
markup_renderer: MarkupRenderer,
75+
text_renderer: MarkupRenderer,
7476
source_file: SourceFile,
7577
pygments_styles: Markup,
7678
pygmented_source_file_lines: List[SourceLineEntry],
@@ -81,6 +83,7 @@ def __init__(
8183
self.project_config: ProjectConfig = project_config
8284
self.link_renderer: LinkRenderer = link_renderer
8385
self.markup_renderer: MarkupRenderer = markup_renderer
86+
self.text_renderer: MarkupRenderer = text_renderer
8487
self.source_file: SourceFile = source_file
8588
self.pygments_styles: Markup = pygments_styles
8689
self.pygmented_source_file_lines: List[SourceLineEntry] = (
@@ -144,20 +147,21 @@ def render_aside_requirement(
144147
)
145148

146149
def render_node_statement(self, node: SDocNode) -> Markup:
147-
return self.markup_renderer.render_node_statement(
148-
DocumentType.DOCUMENT, node
149-
)
150+
renderer = self.get_node_renderer(node)
151+
return renderer.render_node_statement(DocumentType.DOCUMENT, node)
150152

151153
def render_node_rationale(self, node: SDocNode) -> Markup:
152-
return self.markup_renderer.render_node_rationale(
153-
DocumentType.DOCUMENT, node
154-
)
154+
renderer = self.get_node_renderer(node)
155+
return renderer.render_node_rationale(DocumentType.DOCUMENT, node)
155156

156157
def render_node_field(self, node_field: SDocNodeField) -> Markup:
157158
assert isinstance(node_field, SDocNodeField), node_field
158-
return self.markup_renderer.render_node_field(
159-
DocumentType.DOCUMENT, node_field
159+
renderer = (
160+
self.get_node_renderer(node_field.parent)
161+
if node_field.parent is not None
162+
else self.markup_renderer
160163
)
164+
return renderer.render_node_field(DocumentType.DOCUMENT, node_field)
161165

162166
def render_url(self, url: str) -> str:
163167
return self.link_renderer.render_url(url)
@@ -193,6 +197,13 @@ def render_issues(
193197
"""
194198
return ""
195199

200+
def get_node_renderer(self, node: SDocNode) -> MarkupRenderer:
201+
parent_doc = node.get_parent_or_including_document()
202+
parent_doc_config = parent_doc.config
203+
if parent_doc_config.markup is SDocMarkup.RST:
204+
return self.markup_renderer
205+
return self.text_renderer
206+
196207
def get_source_file_path(self) -> str:
197208
return self.source_file.in_doctree_source_file_rel_path_posix
198209

0 commit comments

Comments
 (0)