diff options
author | Volpeon <git@volpeon.ink> | 2022-08-05 06:51:52 +0200 |
---|---|---|
committer | Volpeon <git@volpeon.ink> | 2022-08-05 06:51:52 +0200 |
commit | fcbb697dc92c3368089f0d1cae3ef348f77257b6 (patch) | |
tree | d2cac0454aea934ef17beebb541c4ef2232e5d73 | |
parent | Don't make parent accessible in templates (diff) | |
download | volpeon.ink-fcbb697dc92c3368089f0d1cae3ef348f77257b6.tar.gz volpeon.ink-fcbb697dc92c3368089f0d1cae3ef348f77257b6.tar.bz2 volpeon.ink-fcbb697dc92c3368089f0d1cae3ef348f77257b6.zip |
Prune parents and subpages
-rw-r--r-- | scripts/metadata.lua | 4 | ||||
-rw-r--r-- | scripts/page.lua | 29 |
2 files changed, 29 insertions, 4 deletions
diff --git a/scripts/metadata.lua b/scripts/metadata.lua index 42bf71c..5d372fc 100644 --- a/scripts/metadata.lua +++ b/scripts/metadata.lua | |||
@@ -84,12 +84,12 @@ function process_pages(meta) | |||
84 | 84 | ||
85 | pages_all:sort(sort.page_sort(meta.list_order, meta.pages)) | 85 | pages_all:sort(sort.page_sort(meta.list_order, meta.pages)) |
86 | pages_date_desc:sort(sort.page_sort("date_desc", meta.pages)) | 86 | pages_date_desc:sort(sort.page_sort("date_desc", meta.pages)) |
87 | --local pages_random = pages_all:clone():shuffle() | 87 | local pages_random = pages_all:clone():shuffle() |
88 | 88 | ||
89 | meta.pages = { | 89 | meta.pages = { |
90 | all = pages_all, | 90 | all = pages_all, |
91 | date_desc = pages_date_desc, | 91 | date_desc = pages_date_desc, |
92 | --random = pages_random, | 92 | random = pages_random, |
93 | by_id = meta.pages | 93 | by_id = meta.pages |
94 | } | 94 | } |
95 | end | 95 | end |
diff --git a/scripts/page.lua b/scripts/page.lua index e18f392..4eeebb2 100644 --- a/scripts/page.lua +++ b/scripts/page.lua | |||
@@ -138,7 +138,7 @@ end | |||
138 | function process_pages(meta) | 138 | function process_pages(meta) |
139 | meta.pages.all = meta.pages.all:filterMap(deref_page(meta.pages.by_id)) | 139 | meta.pages.all = meta.pages.all:filterMap(deref_page(meta.pages.by_id)) |
140 | meta.pages.date_desc = meta.pages.date_desc:filterMap(deref_page(meta.pages.by_id)) | 140 | meta.pages.date_desc = meta.pages.date_desc:filterMap(deref_page(meta.pages.by_id)) |
141 | --meta.pages.random = meta.pages.random:filterMap(deref_page(meta.pages.by_id)) | 141 | meta.pages.random = meta.pages.random:filterMap(deref_page(meta.pages.by_id)) |
142 | end | 142 | end |
143 | 143 | ||
144 | function resolve_urls(global, build, meta) | 144 | function resolve_urls(global, build, meta) |
@@ -191,6 +191,31 @@ function process(global, build, meta, dir) | |||
191 | end | 191 | end |
192 | end | 192 | end |
193 | 193 | ||
194 | function prune_pages(meta, n) | ||
195 | if n == 0 then | ||
196 | meta.pages = { | ||
197 | all = pandoc.List(), | ||
198 | date_desc = pandoc.List(), | ||
199 | random = pandoc.List(), | ||
200 | by_id = {} | ||
201 | } | ||
202 | else | ||
203 | for _, p in pairs(meta.pages.by_id) do | ||
204 | prune_pages(p, n - 1) | ||
205 | end | ||
206 | end | ||
207 | end | ||
208 | |||
209 | function prune(meta, up, down) | ||
210 | prune_pages(meta, down) | ||
211 | |||
212 | if up == 0 then | ||
213 | meta.parent = nil | ||
214 | elseif meta.parent then | ||
215 | prune(meta.parent, up - 1, down) | ||
216 | end | ||
217 | end | ||
218 | |||
194 | function Meta(meta) | 219 | function Meta(meta) |
195 | local build = {} | 220 | local build = {} |
196 | 221 | ||
@@ -230,7 +255,7 @@ function Meta(meta) | |||
230 | global.menus.main = prep_menu(meta.namespace.full, global.menus.main) | 255 | global.menus.main = prep_menu(meta.namespace.full, global.menus.main) |
231 | end | 256 | end |
232 | 257 | ||
233 | meta.parent = nil | 258 | prune(meta, 0, 2) |
234 | 259 | ||
235 | for key, value in pairs(global) do | 260 | for key, value in pairs(global) do |
236 | meta[key] = value | 261 | meta[key] = value |