summaryrefslogtreecommitdiffstats
path: root/scripts/metadata.lua
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2022-08-21 18:33:02 +0200
committerVolpeon <git@volpeon.ink>2022-08-21 18:33:02 +0200
commitbd42fbff628ca5831d7a0f9b18e3466bd6dbe8a5 (patch)
tree7ca3187ed9d6a03799bed780f93920fa546b71ce /scripts/metadata.lua
parentShow related content (diff)
downloadvolpeon.ink-bd42fbff628ca5831d7a0f9b18e3466bd6dbe8a5.tar.gz
volpeon.ink-bd42fbff628ca5831d7a0f9b18e3466bd6dbe8a5.tar.bz2
volpeon.ink-bd42fbff628ca5831d7a0f9b18e3466bd6dbe8a5.zip
Don't use random pages for "related"
Diffstat (limited to 'scripts/metadata.lua')
-rw-r--r--scripts/metadata.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/scripts/metadata.lua b/scripts/metadata.lua
index 49a9c55..9c8a964 100644
--- a/scripts/metadata.lua
+++ b/scripts/metadata.lua
@@ -130,6 +130,7 @@ end
130 130
131function process_base(build, meta) 131function process_base(build, meta)
132 meta.namespace = prep_namespace(meta.namespace) 132 meta.namespace = prep_namespace(meta.namespace)
133 meta.id = meta.namespace.full:gsub("^.*/(.-)$", "%1")
133 meta.file_out = utils.stringify(meta.file_out) 134 meta.file_out = utils.stringify(meta.file_out)
134 meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev") 135 meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev")
135 meta.redirect = meta.url and true 136 meta.redirect = meta.url and true
@@ -164,6 +165,24 @@ function process(global, build, meta)
164 resolve_dates(meta) 165 resolve_dates(meta)
165end 166end
166 167
168function find_pos(meta)
169 for _, p in pairs(meta.pages.by_id) do
170 p.parent = meta
171 find_pos(p)
172 p.parent = nil
173 end
174
175 if not meta.parent then return end
176
177 local pages = meta.parent.list_order == "date_desc" and meta.parent.pages.date_desc or meta.parent.pages.all
178 local _, index = pages:find(meta.id)
179
180 if index == nil then return end
181
182 meta.prev = index >= 2 and pages[index - 1] or nil
183 meta.next = index <= #pages - 1 and pages[index + 1] or nil
184end
185
167function Meta(meta) 186function Meta(meta)
168 local build = {} 187 local build = {}
169 188
@@ -180,6 +199,7 @@ function Meta(meta)
180 199
181 find_depth(meta) 200 find_depth(meta)
182 process(meta, build, meta) 201 process(meta, build, meta)
202 find_pos(meta)
183 203
184 return meta 204 return meta
185end 205end