diff options
| author | Volpeon <git@volpeon.ink> | 2021-11-14 12:34:03 +0100 |
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2021-11-14 12:34:03 +0100 |
| commit | 4c9eb23ac5c609c5f880b98be9e9e3c9c905fe85 (patch) | |
| tree | 64ad3dcbdf9b7be5610a055573f3ee01a0afe68d /scripts/metadata_filter.lua | |
| parent | Fix list generation (diff) | |
| download | volpeon.ink-4c9eb23ac5c609c5f880b98be9e9e3c9c905fe85.tar.gz volpeon.ink-4c9eb23ac5c609c5f880b98be9e9e3c9c905fe85.tar.bz2 volpeon.ink-4c9eb23ac5c609c5f880b98be9e9e3c9c905fe85.zip | |
List generation: Handle empty subpages list better
Diffstat (limited to 'scripts/metadata_filter.lua')
| -rw-r--r-- | scripts/metadata_filter.lua | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/scripts/metadata_filter.lua b/scripts/metadata_filter.lua index 4014db4..0ff7429 100644 --- a/scripts/metadata_filter.lua +++ b/scripts/metadata_filter.lua | |||
| @@ -184,6 +184,8 @@ function find_depth(pages) | |||
| 184 | end | 184 | end |
| 185 | 185 | ||
| 186 | function generate_list(meta) | 186 | function generate_list(meta) |
| 187 | if not meta.pages then return nil end | ||
| 188 | |||
| 187 | if meta.depth == "1" then | 189 | if meta.depth == "1" then |
| 188 | return meta.pages.all:map(function(p) | 190 | return meta.pages.all:map(function(p) |
| 189 | return { | 191 | return { |
| @@ -203,7 +205,7 @@ function generate_list(meta) | |||
| 203 | content = cat.content, | 205 | content = cat.content, |
| 204 | url = cat.url, | 206 | url = cat.url, |
| 205 | grid = cat.list_grid, | 207 | grid = cat.list_grid, |
| 206 | items = cat.pages.all:map(function(p) | 208 | items = ((cat.pages and cat.pages.all) or pandoc.List()):map(function(p) |
| 207 | return { | 209 | return { |
| 208 | title = p.title, | 210 | title = p.title, |
| 209 | subtitle = p.subtitle, | 211 | subtitle = p.subtitle, |
| @@ -215,13 +217,15 @@ function generate_list(meta) | |||
| 215 | } | 217 | } |
| 216 | end), | 218 | end), |
| 217 | } | 219 | } |
| 218 | end) | 220 | end):filter(function(cat) return #cat.items ~= 0 end) |
| 219 | elseif meta.depth == "3" then | 221 | elseif meta.depth == "3" then |
| 220 | return meta.pages.all:map(function(cat) | 222 | return meta.pages.all:map(function(cat) |
| 221 | local items = pandoc.List() | 223 | return { |
| 222 | 224 | title = cat.title, | |
| 223 | if cat.pages then | 225 | content = cat.content, |
| 224 | items = cat.pages.all:flatMap(function(c) | 226 | url = cat.url, |
| 227 | grid = cat.list_grid, | ||
| 228 | items = (cat.pages and cat.pages.all or pandoc.List()):flatMap(function(c) | ||
| 225 | if c.pages then | 229 | if c.pages then |
| 226 | return c.pages.all:map(function(p) | 230 | return c.pages.all:map(function(p) |
| 227 | return { | 231 | return { |
| @@ -246,17 +250,9 @@ function generate_list(meta) | |||
| 246 | }) | 250 | }) |
| 247 | return l | 251 | return l |
| 248 | end | 252 | end |
| 249 | end) | 253 | end), |
| 250 | end | ||
| 251 | |||
| 252 | return { | ||
| 253 | title = cat.title, | ||
| 254 | content = cat.content, | ||
| 255 | url = cat.url, | ||
| 256 | grid = cat.list_grid, | ||
| 257 | items = items, | ||
| 258 | } | 254 | } |
| 259 | end) | 255 | end):filter(function(cat) return #cat.items ~= 0 end) |
| 260 | end | 256 | end |
| 261 | end | 257 | end |
| 262 | 258 | ||
