Module:DateTitleList

来自NeuroWiki
Selfice留言 | 贡献2025年1月23日 (四) 00:31的版本 (创建页面,内容为“local p = {} -- 格式化日期和生成链接 local function formatDate(date, title, year, baseYear) local dateYear = string.sub(date, 1, 4) local monthDay = os.date("%m月%d日", os.time{year=string.sub(date, 1, 4), month=string.sub(date, 5, 6), day=string.sub(date, 7, 8)}) local categoryLink = "" .. monthDay .. "" local pageLink = "[[直播记录/vedal987频道/" .. dateYear .. "年" .. monthDay .. "|" .. tit…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

此模块的文档可以在Module:DateTitleList/doc创建

local p = {}

-- 格式化日期和生成链接
local function formatDate(date, title, year, baseYear)
    local dateYear = string.sub(date, 1, 4)
    local monthDay = os.date("%m月%d日", os.time{year=string.sub(date, 1, 4), month=string.sub(date, 5, 6), day=string.sub(date, 7, 8)})
    local categoryLink = "[[:Category:" .. monthDay .. "|" .. monthDay .. "]]"
    local pageLink = "[[直播记录/vedal987频道/" .. dateYear .. "年" .. monthDay .. "|" .. title .. "]]"
    
    -- 如果年份不同于baseYear,则显示小号斜体年份
    if dateYear ~= baseYear then
        categoryLink = "[[:Category:" .. monthDay .. "|{{ruby|" .. monthDay .. "|''<small>" .. dateYear .. "年</small>''}}]]"
    end
    
    return "* '''" .. categoryLink .. "''' " .. pageLink
end

-- 主函数
function p.render(frame)
    local args = frame:getParent().args
    local year = args.year or os.date("%Y")  -- 默认年份为当前年份
    local entries = {}
    
    -- 收集date和title的对
    for i = 1, 7 do
        local date = args["date" .. i]
        local title = args["title" .. i]
        if date and title then
            table.insert(entries, {date = date, title = title})
        end
    end
    
    -- 按日期排序
    table.sort(entries, function(a, b) return a.date < b.date end)
    
    -- 生成输出
    local output = {}
    for _, entry in ipairs(entries) do
        table.insert(output, formatDate(entry.date, entry.title, year, year))
    end
    
    return table.concat(output, "\n")
end

return p