diff options
author | pennae <github@quasiparticle.net> | 2023-02-18 20:36:29 +0100 |
---|---|---|
committer | pennae <github@quasiparticle.net> | 2023-02-21 18:26:40 +0100 |
commit | ba201144605ed4ba83d165a37c3660ef2b49b193 (patch) | |
tree | 4b4909ada7b09db23ed249067c8bcab4c9b17a29 /pkgs/tools/nix/nixos-render-docs | |
parent | 7b0824c0031dd65e1abd6d88ca537a90d4dfbe23 (diff) | |
download | nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar.gz nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar.bz2 nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar.lz nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar.xz nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.tar.zst nixpkgs-ba201144605ed4ba83d165a37c3660ef2b49b193.zip |
nixos-render-docs: check heading continuity
while not technically necessary for correct rendering of *contents* we do need to disallow heading levels being skipped to build a correct TOC. treating headings that have skipped a number of levels to actually be headings that many levels up only gets confusing, and inserting artifical intermediate headings suffers from problems, such as which ids to use and what to call them.
Diffstat (limited to 'pkgs/tools/nix/nixos-render-docs')
-rw-r--r-- | pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual_structure.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual_structure.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual_structure.py index d7cf449a417..c6842db606f 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual_structure.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual_structure.py @@ -27,3 +27,14 @@ def check_titles(kind: TocEntryType, tokens: Sequence[Token]) -> None: f"{kind}, but found a second in line {t.map[0] + 1}. " "please remove all such headings except the first or demote the subsequent headings.", t) + + last_heading_level = 0 + for token in tokens: + if token.type != 'heading_open': + continue + level = int(token.tag[1:]) # because tag = h1..h6 + if level > last_heading_level + 1: + assert token.map + raise RuntimeError(f"heading in line {token.map[0] + 1} skips one or more heading levels, " + "which is currently not allowed") + last_heading_level = level |