From bd42fbff628ca5831d7a0f9b18e3466bd6dbe8a5 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sun, 21 Aug 2022 18:33:02 +0200 Subject: Don't use random pages for "related" --- scripts/page.lua | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'scripts/page.lua') diff --git a/scripts/page.lua b/scripts/page.lua index dcbb36f..7378bfc 100644 --- a/scripts/page.lua +++ b/scripts/page.lua @@ -130,32 +130,35 @@ function generate_list(meta) end end +function deref_page(pages) + return function(ref) + return pages[utils.stringify(ref)] + end +end + function generate_related(meta) if not meta.parent then return nil end - meta = meta.parent + local deref = deref_page(meta.parent.pages.by_id) - local items = meta.pages.random:take(2):map(function (p) return d1_page_to_list_item(p) end) + meta.prev = meta.prev and d1_page_to_list_item(deref(meta.prev)) + meta.next = meta.next and d1_page_to_list_item(deref(meta.next)) - if #items == 0 then return nil end + if not meta.prev and not meta.next then return nil end return { - url = meta.url, - layout = meta.list_layout, - items = items + url = meta.parent.url, + layout = meta.parent.list_layout, + prev = meta.prev, + next = meta.next } end -function deref_page(pages) - return function(ref) - return pages[utils.stringify(ref)] - end -end - function process_pages(meta) - meta.pages.all = meta.pages.all:filterMap(deref_page(meta.pages.by_id)) - meta.pages.date_desc = meta.pages.date_desc:filterMap(deref_page(meta.pages.by_id)) - meta.pages.random = meta.pages.all :clone():shuffle() + local deref = deref_page(meta.pages.by_id) + + meta.pages.all = meta.pages.all:filterMap(deref) + meta.pages.date_desc = meta.pages.date_desc:filterMap(deref) end function resolve_urls(global, build, meta) @@ -179,6 +182,7 @@ function resolve_urls(global, build, meta) end function process_base(meta) + meta.id = utils.stringify(meta.id) meta.depth = tonumber(utils.stringify(meta.depth)) meta.file_out = utils.stringify(meta.file_out) meta.url = utils.stringify(meta.url) @@ -187,6 +191,8 @@ function process_base(meta) meta.list_order = meta.list_order and utils.stringify(meta.list_order) meta.position = meta.position and tonumber(utils.stringify(meta.position)) meta.thumbnail = meta.thumbnail and utils.stringify(meta.thumbnail) + meta.prev = meta.prev and utils.stringify(meta.prev) + meta.next = meta.next and utils.stringify(meta.next) end function process(global, build, meta, dir) @@ -207,7 +213,6 @@ function process(global, build, meta, dir) end function prune_pages(meta, up, down) - meta.pages.random = pandoc.List() meta.pages.by_id = {} if down == 0 then @@ -231,8 +236,6 @@ function prune(meta, up, down) end function Meta(meta) - math.randomseed(os.time()) - local build = {} for key, value in pairs(meta) do @@ -254,7 +257,7 @@ function Meta(meta) meta = meta.tree - local parts = utils.stringify(build.namespace):split('/'):skip(1) + local parts = build.namespace:split('/'):skip(1) for i = 1, #parts do local part = parts[i] local p = meta.pages.by_id[part] -- cgit v1.2.3-54-g00ecf