diff options
author | Volpeon <git@volpeon.ink> | 2022-07-27 21:52:59 +0200 |
---|---|---|
committer | Volpeon <git@volpeon.ink> | 2022-07-27 21:52:59 +0200 |
commit | b3e7a555a21c300e34d256badfa6fa6501840756 (patch) | |
tree | 5d0243f641e4ed4ce6f5698504f8c5c036280c5d /scripts | |
parent | Skip drafts in feed (diff) | |
download | volpeon.ink-b3e7a555a21c300e34d256badfa6fa6501840756.tar.gz volpeon.ink-b3e7a555a21c300e34d256badfa6fa6501840756.tar.bz2 volpeon.ink-b3e7a555a21c300e34d256badfa6fa6501840756.zip |
Better handling of drafts
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/metadata.lua | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/scripts/metadata.lua b/scripts/metadata.lua index 98ad9e5..9cb9970 100644 --- a/scripts/metadata.lua +++ b/scripts/metadata.lua | |||
@@ -162,9 +162,7 @@ function process_pages(global, order, pages_by_id) | |||
162 | pages_date_desc:sort(page_sort("date_desc")) | 162 | pages_date_desc:sort(page_sort("date_desc")) |
163 | end | 163 | end |
164 | 164 | ||
165 | local pages_data = { all = pages_all, date_desc = pages_date_desc, by_id = pages_by_id } | 165 | return { all = pages_all, date_desc = pages_date_desc, by_id = pages_by_id } |
166 | |||
167 | return pages_data | ||
168 | end | 166 | end |
169 | 167 | ||
170 | function find_depth(pages) | 168 | function find_depth(pages) |
@@ -240,21 +238,17 @@ function cat_to_list_cat(cat, allItems) | |||
240 | } | 238 | } |
241 | end | 239 | end |
242 | 240 | ||
243 | function generate_list(global, meta) | 241 | function generate_list(meta) |
244 | if meta.depth < 1 then return nil end | 242 | if meta.depth < 1 then return nil end |
245 | 243 | ||
246 | if meta.depth == 1 then | 244 | if meta.depth == 1 then |
247 | return meta.pages.all | 245 | return meta.pages.all:map(function(p) return d1_page_to_list_item(meta, p) end) |
248 | :map(function(p) return d1_page_to_list_item(meta, p) end) | ||
249 | :filter(function(p) return not p.draft or global.mode == "dev" end) | ||
250 | end | 246 | end |
251 | 247 | ||
252 | if meta.depth == 2 then | 248 | if meta.depth == 2 then |
253 | return meta.pages.all | 249 | return meta.pages.all |
254 | :map(function(cat) | 250 | :map(function(cat) |
255 | local allItems = cat.pages.all | 251 | local allItems = cat.pages.all:map(function(p) return d2_page_to_list_item(meta, cat, p, false) end) |
256 | :map(function(p) return d2_page_to_list_item(meta, cat, p, false) end) | ||
257 | :filter(function(p) return not p.draft or global.mode == "dev" end) | ||
258 | 252 | ||
259 | return cat_to_list_cat(cat, allItems) | 253 | return cat_to_list_cat(cat, allItems) |
260 | end) | 254 | end) |
@@ -264,15 +258,13 @@ function generate_list(global, meta) | |||
264 | if meta.depth == 3 then | 258 | if meta.depth == 3 then |
265 | local list = meta.pages.all | 259 | local list = meta.pages.all |
266 | :map(function(cat) | 260 | :map(function(cat) |
267 | local allItems = cat.pages.all | 261 | local allItems = cat.pages.all:flatMap(function(c) |
268 | :flatMap(function(c) | 262 | if cat.list_flatten and c.depth ~= 0 then |
269 | if #c.pages.all ~= 0 and cat.list_flatten then | 263 | return c.pages.all:map(function(p) return d2_page_to_list_item(cat, c, p, true) end) |
270 | return c.pages.all:map(function(p) return d2_page_to_list_item(cat, c, p, true) end) | 264 | else |
271 | else | 265 | return pandoc.List({ d1_page_to_list_item(cat, c) }) |
272 | return pandoc.List({ d1_page_to_list_item(cat, c) }) | 266 | end |
273 | end | 267 | end) |
274 | end) | ||
275 | :filter(function(p) return not p.draft or global.mode == "dev" end) | ||
276 | 268 | ||
277 | allItems:sort(page_sort(cat.list_order)) | 269 | allItems:sort(page_sort(cat.list_order)) |
278 | 270 | ||
@@ -287,6 +279,7 @@ end | |||
287 | function process(global, meta) | 279 | function process(global, meta) |
288 | meta.namespace = resolve_namespace(meta.namespace) | 280 | meta.namespace = resolve_namespace(meta.namespace) |
289 | meta.file_out = pandoc.utils.stringify(meta.file_out):gsub("^out", "") | 281 | meta.file_out = pandoc.utils.stringify(meta.file_out):gsub("^out", "") |
282 | meta.unlisted = meta.unlisted or (meta.draft and global.mode ~= "dev") | ||
290 | meta.redirect = meta.url and true | 283 | meta.redirect = meta.url and true |
291 | meta.url = meta.url and pandoc.utils.stringify(meta.url) | 284 | meta.url = meta.url and pandoc.utils.stringify(meta.url) |
292 | meta.url = resolve_url(global.site.url, global.file_out, meta.url or meta.file_out) | 285 | meta.url = resolve_url(global.site.url, global.file_out, meta.url or meta.file_out) |
@@ -321,7 +314,7 @@ function process(global, meta) | |||
321 | end | 314 | end |
322 | 315 | ||
323 | meta.pages = process_pages(global, meta.list_order, meta.pages) | 316 | meta.pages = process_pages(global, meta.list_order, meta.pages) |
324 | meta.depth = find_depth(meta.pages) | 317 | meta.depth = meta.depth and tonumber(pandoc.utils.stringify(meta.depth)) or find_depth(meta.pages) |
325 | meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth)) | 318 | meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth)) |
326 | 319 | ||
327 | if meta.last_update then | 320 | if meta.last_update then |
@@ -338,7 +331,7 @@ function process(global, meta) | |||
338 | meta.date = meta.last_update | 331 | meta.date = meta.last_update |
339 | end | 332 | end |
340 | 333 | ||
341 | meta.list = generate_list(global, meta) | 334 | meta.list = generate_list(meta) |
342 | 335 | ||
343 | return meta | 336 | return meta |
344 | end | 337 | end |