summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/metadata.lua76
1 files changed, 43 insertions, 33 deletions
diff --git a/scripts/metadata.lua b/scripts/metadata.lua
index 7d9206f..6aa679a 100644
--- a/scripts/metadata.lua
+++ b/scripts/metadata.lua
@@ -106,24 +106,25 @@ function prep_menu(active_id, main_menu)
106 return { items = items, active = active_item } 106 return { items = items, active = active_item }
107end 107end
108 108
109function process_pages(global, build, order, pages_by_id) 109function process_pages(global, build, meta)
110 local order = meta.list_order
111
110 local pages_all = pandoc.List() 112 local pages_all = pandoc.List()
111 local pages_date_desc = pandoc.List() 113 local pages_date_desc = pandoc.List()
112 114
113 if pages_by_id then 115 for _, p in pairs(meta.pages) do
114 for _, p in pairs(pages_by_id) do 116 process(global, build, p)
115 process(global, build, p)
116 if not p.unlisted then
117 pages_all:insert(p)
118 if p.last_update then pages_date_desc:insert(p) end
119 end
120 end
121 117
122 pages_all:sort(page_sort(order)) 118 if not p.unlisted then
123 pages_date_desc:sort(page_sort("date_desc")) 119 pages_all:insert(p)
120 if p.last_update then pages_date_desc:insert(p) end
121 end
124 end 122 end
125 123
126 return { all = pages_all, date_desc = pages_date_desc, by_id = pages_by_id } 124 pages_all:sort(page_sort(order))
125 pages_date_desc:sort(page_sort("date_desc"))
126
127 meta.pages = { all = pages_all, date_desc = pages_date_desc, by_id = meta.pages }
127end 128end
128 129
129function find_depth(meta) 130function find_depth(meta)
@@ -162,6 +163,28 @@ function resolve_urls(global, build, meta)
162 if meta.thumbnail then 163 if meta.thumbnail then
163 meta.thumbnail = resolve_url(global.site.url, build.file_out, meta.thumbnail) 164 meta.thumbnail = resolve_url(global.site.url, build.file_out, meta.thumbnail)
164 end 165 end
166
167 -- for _, p in pairs(meta.pages.by_id) do
168 -- resolve_urls(global, build, p)
169 -- end
170end
171
172function resolve_dates(meta)
173 if meta.last_update then
174 meta.last_update = format_date(meta.last_update)
175 elseif #meta.pages.date_desc ~= 0 then
176 meta.last_update = meta.pages.date_desc[1].last_update
177 elseif meta.date then
178 meta.last_update = format_date(meta.date)
179 end
180
181 if meta.date then
182 meta.date = format_date(meta.date)
183 elseif meta.last_update then
184 meta.date = meta.last_update
185 end
186
187 meta.was_updated = meta.date and meta.last_update and meta.date.yyyy_mm_dd ~= meta.last_update.yyyy_mm_dd
165end 188end
166 189
167function d1_page_to_list_item(meta, p) 190function d1_page_to_list_item(meta, p)
@@ -226,7 +249,7 @@ function cat_to_list_cat(cat, allItems)
226end 249end
227 250
228function generate_list(meta) 251function generate_list(meta)
229 if meta.depth < 1 then return nil end 252 if meta.depth < 1 then return pandoc.List() end
230 253
231 if meta.depth == 1 then 254 if meta.depth == 1 then
232 return meta.pages.all:map(function(p) return d1_page_to_list_item(meta, p) end) 255 return meta.pages.all:map(function(p) return d1_page_to_list_item(meta, p) end)
@@ -263,7 +286,7 @@ function generate_list(meta)
263 end 286 end
264end 287end
265 288
266function process(global, build, meta) 289function process_base(build, meta)
267 meta.namespace = resolve_namespace(meta.namespace) 290 meta.namespace = resolve_namespace(meta.namespace)
268 meta.file_out = pandoc.utils.stringify(meta.file_out) 291 meta.file_out = pandoc.utils.stringify(meta.file_out)
269 meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev") 292 meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev")
@@ -277,27 +300,14 @@ function process(global, build, meta)
277 meta.list_limit = meta.list_limit and tonumber(pandoc.utils.stringify(meta.list_limit)) 300 meta.list_limit = meta.list_limit and tonumber(pandoc.utils.stringify(meta.list_limit))
278 meta.position = meta.position and tonumber(pandoc.utils.stringify(meta.position)) 301 meta.position = meta.position and tonumber(pandoc.utils.stringify(meta.position))
279 meta.thumbnail = meta.thumbnail and make_absolute("thumbnail." .. pandoc.utils.stringify(meta.thumbnail), meta.file_out) 302 meta.thumbnail = meta.thumbnail and make_absolute("thumbnail." .. pandoc.utils.stringify(meta.thumbnail), meta.file_out)
280
281 resolve_urls(global, build, meta)
282
283 meta.pages = process_pages(global, build, meta.list_order, meta.pages)
284 meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth)) 303 meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth))
304end
285 305
286 if meta.last_update then 306function process(global, build, meta)
287 meta.last_update = format_date(meta.last_update) 307 process_base(build, meta)
288 elseif #meta.pages.date_desc ~= 0 then 308 resolve_urls(global, build, meta)
289 meta.last_update = meta.pages.date_desc[1].last_update 309 process_pages(global, build, meta)
290 elseif meta.date then 310 resolve_dates(meta)
291 meta.last_update = format_date(meta.date)
292 end
293
294 if meta.date then
295 meta.date = format_date(meta.date)
296 elseif meta.last_update then
297 meta.date = meta.last_update
298 end
299
300 meta.was_updated = meta.date and meta.last_update and meta.date.yyyy_mm_dd ~= meta.last_update.yyyy_mm_dd
301end 311end
302 312
303function Meta(meta) 313function Meta(meta)