diff options
author | Khosrow Moossavi <khos2ow@gmail.com> | 2019-11-07 03:23:55 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-11-07 09:50:18 +0300 |
commit | 2c5e6563f8100dd37301410cf95b4075a2b701d9 (patch) | |
tree | 52b55304f8987f6efca91c25b55b7f0783362e0e | |
parent | ff1c02c6988f6a005505c438099dcf89eb1377d3 (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.html | 51 |
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 }} |