Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bep/docuapi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhosrow Moossavi <khos2ow@gmail.com>2019-11-07 03:23:55 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-11-07 09:50:18 +0300
commit2c5e6563f8100dd37301410cf95b4075a2b701d9 (patch)
tree52b55304f8987f6efca91c25b55b7f0783362e0e
parentff1c02c6988f6a005505c438099dcf89eb1377d3 (diff)
Combine headers of all pages before generating TOC
By combining all the headers scattered around all the different pages, before looping over them to generate the ToC, we can now safely distribute the contents on multiple smaller files. e.g: ``` 10-main.md (define h1) 11-sub1.md (define h2 and multiple h3) 12-sub2.md (define h2) 20-second.md (define h1 and multiple h2 and h3) 21-sub1.md (define h2) ```
-rw-r--r--layouts/partials/funcs/toc_from_pages.html51
1 files changed, 27 insertions, 24 deletions
diff --git a/layouts/partials/funcs/toc_from_pages.html b/layouts/partials/funcs/toc_from_pages.html
index 44dabc1..e86d919 100644
--- a/layouts/partials/funcs/toc_from_pages.html
+++ b/layouts/partials/funcs/toc_from_pages.html
@@ -1,32 +1,35 @@
-{{ $toc := slice }}
+{{ $combined := slice }}
{{ range . }}
- {{ $previousH1 := dict}}
- {{ $previousLevel := 0 }}
- {{ $h2s := slice }}
-
{{ $headers := findRE "<h\\d.*?>(.|\n)*?</h\\d>" .Content }}
- {{ range $headers }}
- {{ $level := int (substr . 2 1) }}
- {{ if le $level 2 }}
- {{ $title := . | replaceRE "</?h\\d.*?>" "" | htmlUnescape | safeHTML }}
- {{ $item := dict "level" $level "title" $title }}
+ {{ $combined = $combined | append $headers }}
+{{ end }}
- {{if eq $level 1 }}
- {{if ne $previousLevel 0 }}
- {{ $tocItem := merge $previousH1 (dict "sub" $h2s)}}
- {{ $toc = $toc | append $tocItem }}
- {{ $h2s = slice }}
- {{end}}
- {{ $previousH1 = $item }}
- {{else}}
- {{ $h2s = $h2s | append $item}}
+{{ $toc := slice }}
+{{ $previousH1 := dict }}
+{{ $previousLevel := 0 }}
+{{ $h2s := slice }}
+
+{{ range $combined }}
+ {{ $level := int (substr . 2 1) }}
+ {{ if le $level 2 }}
+ {{ $title := . | replaceRE "</?h\\d.*?>" "" | htmlUnescape | safeHTML }}
+ {{ $item := dict "level" $level "title" $title }}
+
+ {{ if eq $level 1 }}
+ {{ if ne $previousLevel 0 }}
+ {{ $tocItem := merge $previousH1 (dict "sub" $h2s) }}
+ {{ $toc = $toc | append $tocItem }}
+ {{ $h2s = slice }}
{{end}}
- {{ $previousLevel = $level }}
+ {{ $previousH1 = $item }}
+ {{ else }}
+ {{ $h2s = $h2s | append $item }}
{{ end }}
+ {{ $previousLevel = $level }}
{{ end }}
- {{if ne $previousLevel 0}}
- {{ $item := merge $previousH1 (dict "sub" $h2s)}}
- {{ $toc = $toc | append $item }}
- {{end}}
+{{ end }}
+{{ if ne $previousLevel 0 }}
+ {{ $item := merge $previousH1 (dict "sub" $h2s) }}
+ {{ $toc = $toc | append $item }}
{{ end }}
{{ return $toc }}