Add mkdocs hook to hide internal section children

This commit is contained in:
Florian Albrechtskirchinger 2022-09-06 17:56:56 +02:00
parent 307c053b9b
commit 74d2ec12e9
No known key found for this signature in database
GPG Key ID: 19618CE9B2D4BE6D
4 changed files with 45 additions and 0 deletions

1
.gitignore vendored
View File

@ -32,6 +32,7 @@
/docs/mkdocs/docs/__pycache__/
/docs/mkdocs/docs/examples/
/docs/mkdocs/docs/images/json.gif
/docs/mkdocs/scripts/__pycache__/
/docs/mkdocs/site/
/docs/mkdocs/venv/

View File

@ -0,0 +1,9 @@
---
x-nlohmann-json-is-internal: true
---
# Developer Documentation
!!! missing
This section is under construction.

View File

@ -277,6 +277,8 @@ nav:
- 'NLOHMANN_JSON_VERSION_MAJOR': api/macros/nlohmann_json_version_major.md
- 'NLOHMANN_JSON_VERSION_MINOR': api/macros/nlohmann_json_version_major.md
- 'NLOHMANN_JSON_VERSION_PATCH': api/macros/nlohmann_json_version_major.md
- Internal:
- api/internal/index.md
# Extras
extra:
@ -341,6 +343,9 @@ plugins:
'api/basic_json/operator_literal_json.md': api/operator_literal_json.md
'api/basic_json/operator_literal_json_pointer.md': api/operator_literal_json_pointer.md
'api/json_pointer/operator_string.md': api/json_pointer/operator_string_t.md
- mkdocs-simple-hooks:
hooks:
on_page_context: scripts.internal_section:on_page_context
extra_css:
- css/custom.css

View File

@ -0,0 +1,30 @@
import sys
from copy import deepcopy
from mkdocs.structure.nav import Navigation, Section, Page
def _get_internal_sections(items, current_page):
res = []
sections = [item for item in items if isinstance(item, Section)]
while sections:
for section in sections[:]:
for item in section.children:
if isinstance(item, Section):
sections.append(item)
elif isinstance(item, Page):
if item.meta.get("x-nlohmann-json-is-internal", False):
res.append(section)
sections.remove(section)
return res
def on_page_context(context, page, config, nav):
sys.setrecursionlimit(1200)
nav = deepcopy(nav)
context["nav"] = nav
sections = _get_internal_sections(nav.items, page)
for section in sections:
if not section.active:
section.children = [child for child in section.children if child.is_index]
return context