From af3b016717605153abf786390f9fa3d77ce402e0 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Mon, 13 Jun 2022 08:43:35 +0200 Subject: Control list flattening via metadata --- scripts/metadata_filter.lua | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'scripts/metadata_filter.lua') diff --git a/scripts/metadata_filter.lua b/scripts/metadata_filter.lua index cb060fa..07f060c 100644 --- a/scripts/metadata_filter.lua +++ b/scripts/metadata_filter.lua @@ -27,6 +27,19 @@ function pandoc.List:take(n) return result end +function dump(o) + if type(o) == 'table' then + local s = '{ ' + for k, v in pairs(o) do + if type(k) ~= 'number' then k = '"' .. k .. '"' end + s = s .. '[' .. k .. '] = ' .. dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end + function page_sort(order) return function(p1, p2) if p1.position then @@ -241,10 +254,10 @@ function generate_list(meta) return meta.pages.all :map(function(cat) local allItems = (cat.pages and cat.pages.all or pandoc.List()):flatMap(function(c) - if c.pages then - return c.pages.all:map(function(p) return d2_page_to_list_item(cat, c, p, true) end) - else + if not c.pages or not cat.list_flatten then return pandoc.List({ d1_page_to_list_item(cat, c) }) + else + return c.pages.all:map(function(p) return d2_page_to_list_item(cat, c, p, true) end) end end) allItems:sort(page_sort(cat.list_order)) -- cgit v1.2.3-54-g00ecf