diff options
Diffstat (limited to 'scripts/metadata.lua')
| -rw-r--r-- | scripts/metadata.lua | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/scripts/metadata.lua b/scripts/metadata.lua index afd0ca5..5d372fc 100644 --- a/scripts/metadata.lua +++ b/scripts/metadata.lua | |||
| @@ -71,13 +71,11 @@ function prep_menu(active_id, main_menu) | |||
| 71 | return { items = items, active = active_item } | 71 | return { items = items, active = active_item } |
| 72 | end | 72 | end |
| 73 | 73 | ||
| 74 | function process_pages(global, build, meta) | 74 | function process_pages(meta) |
| 75 | local pages_all = pandoc.List() | 75 | local pages_all = pandoc.List() |
| 76 | local pages_date_desc = pandoc.List() | 76 | local pages_date_desc = pandoc.List() |
| 77 | 77 | ||
| 78 | for id, p in pairs(meta.pages) do | 78 | for id, p in pairs(meta.pages) do |
| 79 | process(global, build, p, meta) | ||
| 80 | |||
| 81 | if not p.unlisted then | 79 | if not p.unlisted then |
| 82 | pages_all:insert(id) | 80 | pages_all:insert(id) |
| 83 | if p.last_update then pages_date_desc:insert(id) end | 81 | if p.last_update then pages_date_desc:insert(id) end |
| @@ -86,8 +84,14 @@ function process_pages(global, build, meta) | |||
| 86 | 84 | ||
| 87 | pages_all:sort(sort.page_sort(meta.list_order, meta.pages)) | 85 | pages_all:sort(sort.page_sort(meta.list_order, meta.pages)) |
| 88 | pages_date_desc:sort(sort.page_sort("date_desc", meta.pages)) | 86 | pages_date_desc:sort(sort.page_sort("date_desc", meta.pages)) |
| 87 | local pages_random = pages_all:clone():shuffle() | ||
| 89 | 88 | ||
| 90 | meta.pages = { all = pages_all, date_desc = pages_date_desc, by_id = meta.pages } | 89 | meta.pages = { |
| 90 | all = pages_all, | ||
| 91 | date_desc = pages_date_desc, | ||
| 92 | random = pages_random, | ||
| 93 | by_id = meta.pages | ||
| 94 | } | ||
| 91 | end | 95 | end |
| 92 | 96 | ||
| 93 | function find_depth(meta) | 97 | function find_depth(meta) |
| @@ -126,7 +130,7 @@ function resolve_dates(meta) | |||
| 126 | meta.was_updated = meta.date and meta.last_update and meta.date.yyyy_mm_dd ~= meta.last_update.yyyy_mm_dd | 130 | meta.was_updated = meta.date and meta.last_update and meta.date.yyyy_mm_dd ~= meta.last_update.yyyy_mm_dd |
| 127 | end | 131 | end |
| 128 | 132 | ||
| 129 | function process_base(build, meta, parent) | 133 | function process_base(build, meta) |
| 130 | meta.namespace = prep_namespace(meta.namespace) | 134 | meta.namespace = prep_namespace(meta.namespace) |
| 131 | meta.file_out = utils.stringify(meta.file_out) | 135 | meta.file_out = utils.stringify(meta.file_out) |
| 132 | meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev") | 136 | meta.unlisted = meta.unlisted or (meta.draft and build.mode ~= "dev") |
| @@ -140,16 +144,33 @@ function process_base(build, meta, parent) | |||
| 140 | meta.position = meta.position and tonumber(utils.stringify(meta.position)) | 144 | meta.position = meta.position and tonumber(utils.stringify(meta.position)) |
| 141 | meta.thumbnail = meta.thumbnail and make_absolute("thumbnail." .. utils.stringify(meta.thumbnail), meta.file_out) | 145 | meta.thumbnail = meta.thumbnail and make_absolute("thumbnail." .. utils.stringify(meta.thumbnail), meta.file_out) |
| 142 | meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth)) | 146 | meta.layout = prep_layout(meta.layout or (meta.redirect and "redirect") or resolve_layout(meta.depth)) |
| 143 | meta.show_date = parent and parent.list_order == "date_desc" | 147 | |
| 148 | meta.description = (meta.description and pandoc.MetaBlocks(pandoc.Para(meta.description))) or | ||
| 149 | (not meta.no_description and meta.content) | ||
| 150 | meta.show_date = meta.parent and meta.parent.list_order == "date_desc" | ||
| 151 | meta.category = meta.parent and meta.parent.title | ||
| 152 | meta.icon = meta.icon or (meta.parent and meta.parent.icon) | ||
| 153 | meta.post_icon = meta.post_icon or (meta.parent and meta.parent.list_post_icon) or | ||
| 154 | (meta.parent and meta.parent.parent and meta.parent.parent.list_post_icon) | ||
| 155 | meta.indicator = meta.parent and meta.parent.list_read_indicators | ||
| 144 | end | 156 | end |
| 145 | 157 | ||
| 146 | function process(global, build, meta, parent) | 158 | function process(global, build, meta) |
| 147 | process_base(build, meta, parent) | 159 | process_base(build, meta) |
| 148 | process_pages(global, build, meta) | 160 | |
| 161 | for _, p in pairs(meta.pages) do | ||
| 162 | p.parent = meta | ||
| 163 | process(global, build, p) | ||
| 164 | p.parent = nil | ||
| 165 | end | ||
| 166 | |||
| 167 | process_pages(meta) | ||
| 149 | resolve_dates(meta) | 168 | resolve_dates(meta) |
| 150 | end | 169 | end |
| 151 | 170 | ||
| 152 | function Meta(meta) | 171 | function Meta(meta) |
| 172 | math.randomseed(os.time()) | ||
| 173 | |||
| 153 | local build = {} | 174 | local build = {} |
| 154 | 175 | ||
| 155 | for key, value in pairs(meta) do | 176 | for key, value in pairs(meta) do |
