diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/metadata_filter.lua | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/scripts/metadata_filter.lua b/scripts/metadata_filter.lua index d7116dc..cd0c2f7 100644 --- a/scripts/metadata_filter.lua +++ b/scripts/metadata_filter.lua | |||
@@ -183,20 +183,28 @@ function organize_subpages(site_url, output_dir, ref_file, pages) | |||
183 | pandoc.utils.stringify(page.file_out)) | 183 | pandoc.utils.stringify(page.file_out)) |
184 | end | 184 | end |
185 | 185 | ||
186 | local grouped_pages = group_by(pages, function(p) return not p.date end) | 186 | local pages_grouped_date = |
187 | group_by(pages, function(p) return not p.date end) | ||
187 | 188 | ||
188 | local pages_undated = grouped_pages[true] or pandoc.MetaList({}) | 189 | local pages_undated = pages_grouped_date[true] or pandoc.MetaList({}) |
189 | pages_undated:sort(function(p1, p2) | 190 | pages_undated:sort(function(p1, p2) |
190 | return pandoc.utils.stringify(p1.title) < | 191 | return pandoc.utils.stringify(p1.title) < |
191 | pandoc.utils.stringify(p2.title) | 192 | pandoc.utils.stringify(p2.title) |
192 | end) | 193 | end) |
193 | 194 | ||
194 | local pages_dated = grouped_pages[false] or pandoc.MetaList({}) | 195 | local pages_dated = pages_grouped_date[false] or pandoc.MetaList({}) |
195 | pages_dated:sort(function(p1, p2) | 196 | pages_dated:sort(function(p1, p2) |
196 | return pandoc.utils.stringify(p1.date.yyyy_mm_dd) > | 197 | return pandoc.utils.stringify(p1.date.yyyy_mm_dd) > |
197 | pandoc.utils.stringify(p2.date.yyyy_mm_dd) | 198 | pandoc.utils.stringify(p2.date.yyyy_mm_dd) |
198 | end) | 199 | end) |
199 | 200 | ||
201 | local pages_categorized = pages:filter( | ||
202 | function(p) return p.category ~= nil end) | ||
203 | pages_categorized:sort(function(p1, p2) | ||
204 | return pandoc.utils.stringify(p1.title) > | ||
205 | pandoc.utils.stringify(p2.title) | ||
206 | end) | ||
207 | |||
200 | local pages_by_year = group_by(pages_dated, function(p) | 208 | local pages_by_year = group_by(pages_dated, function(p) |
201 | return pandoc.utils.stringify(p.date.yyyy) | 209 | return pandoc.utils.stringify(p.date.yyyy) |
202 | end) | 210 | end) |
@@ -205,14 +213,23 @@ function organize_subpages(site_url, output_dir, ref_file, pages) | |||
205 | return i1.key > i2.key | 213 | return i1.key > i2.key |
206 | end)) | 214 | end)) |
207 | 215 | ||
216 | local pages_by_category = group_by(pages_categorized, function(p) | ||
217 | return pandoc.utils.stringify(p.category.id) | ||
218 | end) | ||
219 | pages_by_category = pandoc.MetaList(table_to_list(pages_by_category, | ||
220 | function(i1, i2) | ||
221 | return i1.key > i2.key | ||
222 | end)) | ||
223 | |||
208 | local pages_data = pandoc.MetaMap({ | 224 | local pages_data = pandoc.MetaMap({ |
209 | all_dated = pages_dated, | 225 | all_dated = pages_dated, |
210 | all_undated = pages_undated, | 226 | all_undated = pages_undated, |
211 | by_year = pages_by_year, | 227 | by_year = pages_by_year, |
228 | by_category = pages_by_category, | ||
212 | last_update = #pages_dated ~= 0 and pages_dated[1].last_update | 229 | last_update = #pages_dated ~= 0 and pages_dated[1].last_update |
213 | }) | 230 | }) |
214 | 231 | ||
215 | local categories_data = group_by(pages_dated, function(p) | 232 | local categories_data = group_by(pages_categorized, function(p) |
216 | return p.category and pandoc.utils.stringify(p.category.id) | 233 | return p.category and pandoc.utils.stringify(p.category.id) |
217 | end, function(stats, _, p) | 234 | end, function(stats, _, p) |
218 | if not stats then | 235 | if not stats then |