diff options
| author | Volpeon <git@volpeon.ink> | 2022-08-04 10:26:57 +0200 |
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2022-08-04 10:26:57 +0200 |
| commit | 347d7c0da13079fefce6d8741a5604adb89eb97c (patch) | |
| tree | 43b568e5ae48692425a9ddeeddc4001b1e940336 /scripts/lib | |
| parent | Code reorganization (diff) | |
| download | volpeon.ink-347d7c0da13079fefce6d8741a5604adb89eb97c.tar.gz volpeon.ink-347d7c0da13079fefce6d8741a5604adb89eb97c.tar.bz2 volpeon.ink-347d7c0da13079fefce6d8741a5604adb89eb97c.zip | |
Overhauled metadata handling
Diffstat (limited to 'scripts/lib')
| -rw-r--r-- | scripts/lib/common.lua | 10 | ||||
| -rw-r--r-- | scripts/lib/sort.lua | 36 |
2 files changed, 46 insertions, 0 deletions
diff --git a/scripts/lib/common.lua b/scripts/lib/common.lua index 80b81ba..5ed3e31 100644 --- a/scripts/lib/common.lua +++ b/scripts/lib/common.lua | |||
| @@ -49,6 +49,16 @@ function pandoc.List:take(n) | |||
| 49 | return result | 49 | return result |
| 50 | end | 50 | end |
| 51 | 51 | ||
| 52 | function pandoc.List:skip(n) | ||
| 53 | local result = pandoc.List() | ||
| 54 | |||
| 55 | if n >= #self then return result end | ||
| 56 | |||
| 57 | for i = n + 1, #self do result:insert(self[i]) end | ||
| 58 | |||
| 59 | return result | ||
| 60 | end | ||
| 61 | |||
| 52 | return { | 62 | return { |
| 53 | dump = dump | 63 | dump = dump |
| 54 | } | 64 | } |
diff --git a/scripts/lib/sort.lua b/scripts/lib/sort.lua new file mode 100644 index 0000000..393e5d5 --- /dev/null +++ b/scripts/lib/sort.lua | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | local utils = require 'pandoc.utils' | ||
| 2 | |||
| 3 | function page_sort(order, pages) | ||
| 4 | order = order and utils.stringify(order) | ||
| 5 | |||
| 6 | return function(ref1, ref2) | ||
| 7 | local p1 = pages and pages[utils.stringify(ref1)] or ref1 | ||
| 8 | local p2 = pages and pages[utils.stringify(ref2)] or ref2 | ||
| 9 | |||
| 10 | if p1.position then | ||
| 11 | if p2.position then | ||
| 12 | return tonumber(utils.stringify(p1.position)) < tonumber(utils.stringify(p2.position)) | ||
| 13 | else | ||
| 14 | return true | ||
| 15 | end | ||
| 16 | elseif p2.position then | ||
| 17 | return false | ||
| 18 | elseif order == "date_desc" then | ||
| 19 | if p1.last_update then | ||
| 20 | if p2.last_update then | ||
| 21 | return utils.stringify(p1.last_update.yyyy_mm_dd) > utils.stringify(p2.last_update.yyyy_mm_dd) | ||
| 22 | else | ||
| 23 | return true | ||
| 24 | end | ||
| 25 | else | ||
| 26 | return false | ||
| 27 | end | ||
| 28 | else | ||
| 29 | return utils.stringify(p1.title):upper() < utils.stringify(p2.title):upper() | ||
| 30 | end | ||
| 31 | end | ||
| 32 | end | ||
| 33 | |||
| 34 | return { | ||
| 35 | page_sort = page_sort | ||
| 36 | } | ||
