summaryrefslogtreecommitdiffstats
path: root/scripts/lib/sort.lua
blob: 393e5d5c7ba95aeacd868401213cc3cf0a336b15 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
local utils = require 'pandoc.utils'

function page_sort(order, pages)
    order = order and utils.stringify(order)

    return function(ref1, ref2)
        local p1 = pages and pages[utils.stringify(ref1)] or ref1
        local p2 = pages and pages[utils.stringify(ref2)] or ref2

        if p1.position then
            if p2.position then
                return tonumber(utils.stringify(p1.position)) < tonumber(utils.stringify(p2.position))
            else
                return true
            end
        elseif p2.position then
            return false
        elseif order == "date_desc" then
            if p1.last_update then
                if p2.last_update then
                    return utils.stringify(p1.last_update.yyyy_mm_dd) > utils.stringify(p2.last_update.yyyy_mm_dd)
                else
                    return true
                end
            else
                return false
            end
        else
            return utils.stringify(p1.title):upper() < utils.stringify(p2.title):upper()
        end
    end
end

return {
    page_sort = page_sort
}