Skip to content

Commit ddd973c

Browse files
authored
Merge pull request #2302 from strictdoc-project/stanislaw/has_any_toc_nodes
[[NODE]] migration: simplify has_any_toc_nodes()
2 parents 215c33c + a332396 commit ddd973c

File tree

6 files changed

+16
-22
lines changed

6 files changed

+16
-22
lines changed

strictdoc/backend/sdoc/models/document.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
SDocDocumentIF,
1818
SDocElementIF,
1919
SDocNodeIF,
20-
SDocSectionIF,
2120
)
2221
from strictdoc.backend.sdoc.models.node import SDocNode
2322
from strictdoc.backend.sdoc.models.type_system import (
@@ -194,17 +193,6 @@ def assign_meta(self, meta: DocumentMeta) -> None:
194193
def has_any_nodes(self) -> bool:
195194
return len(self.section_contents) > 0
196195

197-
def has_any_toc_nodes(self) -> bool:
198-
for node_ in self.section_contents:
199-
# Skip nodes without a TOC level.
200-
if (
201-
isinstance(node_, SDocSectionIF)
202-
and node_.ng_resolved_custom_level == "None"
203-
):
204-
continue
205-
return True
206-
return False
207-
208196
def get_display_title(
209197
self,
210198
include_toc_number: bool = True, # noqa: ARG002

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# mypy: disable-error-code="no-untyped-call,no-untyped-def,union-attr"
22
from dataclasses import dataclass
33
from datetime import datetime
4-
from typing import List, Optional, Union
4+
from typing import Iterator, List, Optional, Union
55

66
from jinja2 import Template
77
from markupsafe import Markup
@@ -10,6 +10,7 @@
1010
from strictdoc.backend.sdoc.models.document import SDocDocument
1111
from strictdoc.backend.sdoc.models.document_grammar import GrammarElement
1212
from strictdoc.backend.sdoc.models.document_view import ViewElement
13+
from strictdoc.backend.sdoc.models.model import SDocElementIF
1314
from strictdoc.backend.sdoc.models.node import SDocNode, SDocNodeField
1415
from strictdoc.backend.sdoc.models.section import SDocSection
1516
from strictdoc.core.document_tree import DocumentTree
@@ -302,9 +303,12 @@ def get_document_by_path(self, full_path: str) -> SDocDocument:
302303
def get_grammar_elements(self) -> List[GrammarElement]:
303304
return self.document.grammar.elements
304305

305-
def table_of_contents(self):
306+
def table_of_contents(self) -> Iterator[SDocElementIF]:
306307
yield from self.document_iterator.table_of_contents()
307308

309+
def document_has_any_toc_nodes(self) -> bool:
310+
return any(self.table_of_contents())
311+
308312
def document_content_iterator(self):
309313
yield from self.document_iterator.all_content(
310314
print_fragments=True,

strictdoc/export/html/templates/screens/document/pdf/toc.jinja

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{%- if view_object.document.has_any_toc_nodes() -%}
1+
{%- if view_object.document_has_any_toc_nodes() -%}
22
<div class="pdf-toc" data-testid="pdf-toc-list">
33
<div class="pdf-toc-row">
44
<span class="pdf-toc-cell"></span>

tests/integration/features/html2pdf/01_empty_document/test_pdf.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
reader = PdfReader("Output/html2pdf/pdf/input.pdf")
44

5-
assert len(reader.pages) == 3, reader.pages
5+
assert len(reader.pages) == 2, reader.pages
66

7-
# page2_text = reader.pages[1].extract_text() # noqa: ERA001
8-
# assert "Table of contents" not in page2_text # noqa: ERA001
7+
page2_text = reader.pages[1].extract_text()
8+
assert "2/2" in page2_text
9+
assert "Hello world! 😊😊😊" in page2_text

tests/integration/features/html2pdf/03_three_documents_with_assets/test_pdf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
reader = PdfReader("Output/html2pdf/pdf/input.pdf")
44

5-
assert len(reader.pages) == 3, reader.pages
5+
assert len(reader.pages) == 2, reader.pages

tests/integration/features/html2pdf/06_system_chromedriver/test_pdf.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
reader = PdfReader("Output/html2pdf/pdf/input.pdf")
44

5-
assert len(reader.pages) == 3, reader.pages
5+
assert len(reader.pages) == 2, reader.pages
66

7-
# page2_text = reader.pages[1].extract_text() # noqa: ERA001
8-
# assert "Table of contents" not in page2_text # noqa: ERA001
7+
page2_text = reader.pages[1].extract_text()
8+
assert "2/2" in page2_text
9+
assert "Hello world! 😊😊😊" in page2_text

0 commit comments

Comments
 (0)