跳转到内容

模組:沙盒/PexEric/2

维基百科,自由的百科全书
local p = {}
local ArticleHistoryParser = require("Module:ArticleHistoryParser")

function p.main(frame)
    local args = frame.args
    local categoryName = args[1]
    local action = args[2]
    local iconType = args[3]
    
    local dplQuery = frame:preprocess(string.format(
        '{{#dpl:category=%s|namespace=Talk|format=,¦%%TITLE%%¦,|noresultsheader=|suppresserrors=true}}',
        categoryName
    ))
    
    local pageData = {}
    for title in mw.ustring.gmatch(dplQuery, "¦([^¦]+)¦") do
        local dateStr = ArticleHistoryParser.findDate({args = {title, action}})
        if dateStr ~= "" then
            local year, month, day = dateStr:match("(%d+)年(%d+)月(%d+)日")
            if year then
                table.insert(pageData, {
                    title = title,
                    dateStr = dateStr,
                    dateNum = tonumber(year) * 10000 + tonumber(month) * 100 + tonumber(day)
                })
            end
        end
    end
    
    table.sort(pageData, function(a, b) return a.dateNum > b.dateNum end)
    
    local output = {}
    for i, data in ipairs(pageData) do
        table.insert(output, string.format('# {{icon|%s}} [[%s]]<small>(%s)</small>', 
            iconType, data.title:gsub("^Talk:", ""), data.dateStr))
    end
    
    return table.concat(output, "\n")
end

return p