Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion strictdoc/export/html/generators/source_file_view_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from pygments.lexers.templates import HtmlDjangoLexer
from pygments.util import ClassNotFound

from strictdoc.backend.sdoc.constants import SDocMarkup
from strictdoc.backend.sdoc_source_code.models.function_range_marker import (
ForwardFunctionRangeMarker,
FunctionRangeMarker,
Expand Down Expand Up @@ -114,7 +115,15 @@ def export(
static_path=project_config.dir_for_sdoc_assets,
)
markup_renderer = MarkupRenderer.create(
"RST",
SDocMarkup.RST,
traceability_index,
link_renderer,
html_templates,
project_config,
None,
)
text_renderer = MarkupRenderer.create(
SDocMarkup.TEXT,
traceability_index,
link_renderer,
html_templates,
Expand All @@ -127,6 +136,7 @@ def export(
project_config=project_config,
link_renderer=link_renderer,
markup_renderer=markup_renderer,
text_renderer=text_renderer,
source_file=source_file,
pygments_styles=pygments_styles,
pygmented_source_file_lines=pygmented_source_file_lines,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from markupsafe import Markup

from strictdoc import __version__
from strictdoc.backend.sdoc.constants import SDocMarkup
from strictdoc.backend.sdoc.models.anchor import Anchor
from strictdoc.backend.sdoc.models.document import SDocDocument
from strictdoc.backend.sdoc.models.document_view import NullViewElement
Expand Down Expand Up @@ -71,6 +72,7 @@ def __init__(
project_config: ProjectConfig,
link_renderer: LinkRenderer,
markup_renderer: MarkupRenderer,
text_renderer: MarkupRenderer,
source_file: SourceFile,
pygments_styles: Markup,
pygmented_source_file_lines: List[SourceLineEntry],
Expand All @@ -81,6 +83,7 @@ def __init__(
self.project_config: ProjectConfig = project_config
self.link_renderer: LinkRenderer = link_renderer
self.markup_renderer: MarkupRenderer = markup_renderer
self.text_renderer: MarkupRenderer = text_renderer
self.source_file: SourceFile = source_file
self.pygments_styles: Markup = pygments_styles
self.pygmented_source_file_lines: List[SourceLineEntry] = (
Expand Down Expand Up @@ -144,20 +147,21 @@ def render_aside_requirement(
)

def render_node_statement(self, node: SDocNode) -> Markup:
return self.markup_renderer.render_node_statement(
DocumentType.DOCUMENT, node
)
renderer = self.get_node_renderer(node)
return renderer.render_node_statement(DocumentType.DOCUMENT, node)

def render_node_rationale(self, node: SDocNode) -> Markup:
return self.markup_renderer.render_node_rationale(
DocumentType.DOCUMENT, node
)
renderer = self.get_node_renderer(node)
return renderer.render_node_rationale(DocumentType.DOCUMENT, node)

def render_node_field(self, node_field: SDocNodeField) -> Markup:
assert isinstance(node_field, SDocNodeField), node_field
return self.markup_renderer.render_node_field(
DocumentType.DOCUMENT, node_field
renderer = (
self.get_node_renderer(node_field.parent)
if node_field.parent is not None
else self.markup_renderer
)
return renderer.render_node_field(DocumentType.DOCUMENT, node_field)

def render_url(self, url: str) -> str:
return self.link_renderer.render_url(url)
Expand Down Expand Up @@ -193,6 +197,13 @@ def render_issues(
"""
return ""

def get_node_renderer(self, node: SDocNode) -> MarkupRenderer:
parent_doc = node.get_parent_or_including_document()
parent_doc_config = parent_doc.config
if parent_doc_config.markup is SDocMarkup.RST:
return self.markup_renderer
return self.text_renderer

def get_source_file_path(self) -> str:
return self.source_file.in_doctree_source_file_rel_path_posix

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@ STATEMENT: >>>
**This text will not be converted to strong tag**
<a href="url">link</a>
<<<

[REQUIREMENT]
UID: REQ-1
TITLE: This Requirement Is Rendered in Document View *and* Source Code View
STATEMENT: Writing about '*name' in statement shall not cause an RST parser error.
RATIONALE: Writing about '*name' in rationale shall not cause an RST parser error.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <stdio.h>

// @relation(REQ-1, scope=line)
void examle_1(char *name) {
print("hello %s\n", name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[project]

features = [
"REQUIREMENT_TO_SOURCE_TRACEABILITY",
]
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@ CHECK: Published: Hello world doc
RUN: %cat %T/html/02_options_markup_is_text/input.html | filecheck %s --dump-input=fail --check-prefix CHECK-HTML
CHECK-HTML: **This text will not be converted to strong tag**
CHECK-HTML: &lt;a href=&#34;url&#34;&gt;link&lt;/a&gt;

RUN: %cat %T/html/_source_files/src/file.c.html | filecheck %s --check-prefix CHECK-SOURCE-FILE
CHECK-SOURCE-FILE: This Requirement Is Rendered in Document View *and* Source Code View
CHECK-SOURCE-FILE: Writing about &#39;*name&#39; in statement shall not cause an RST parser error.
CHECK-SOURCE-FILE: Writing about &#39;*name&#39; in rationale shall not cause an RST parser error.
Loading