跳转到内容
打开/关闭菜单
  • 6 条目
  • 7 文件
  • 13 用户
  • 684 编辑
久远澪Wiki
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
DoubleCircle留言 | 贡献2026年8月29日 (六) 14:24的版本 ("自动提交 via publish.js")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在Module:直播周表/doc创建

-- 直播周表渲染模块:读取 久远澪:直播周表/Data 的 JSON 数据并渲染为表格。
--
-- 用法:{{#invoke:直播周表|render}}
--
-- /Data 页 JSON 结构:
--   {
--     "caption": "本周周表",
--     "rows": [
--       {"date": "24日", "weekday": "周一", "time": "18:30",
--        "content": "神厨小澪", "note": "做饭游戏"},
--       ...
--     ]
--   }
local p = {}

local DATA_PAGE = '久远澪:直播周表/Data'
local HEADER = '! 日期 !! 星期 !! 时间 !! 内容 !! 备注'

function p.render(frame)
    local dataTitle = mw.title.new(DATA_PAGE)
    if not dataTitle or not dataTitle.exists then
        return '<span class="error">数据页 [[:' .. DATA_PAGE .. ']] 不存在</span>'
    end
    local content = dataTitle:getContent()
    local ok, data = pcall(mw.text.jsonDecode, content)
    if not ok or type(data) ~= 'table' then
        return '<span class="error">数据页 [[:' .. DATA_PAGE
            .. ']] JSON 解析失败,请检查格式</span>'
    end

    local rows = data.rows or {}
    local lines = {}
    table.insert(lines, '{| class="wikitable" style="text-align:center"')
    if data.caption and data.caption ~= '' then
        table.insert(lines, '|+ ' .. data.caption)
    end
    table.insert(lines, HEADER)
    for _, row in ipairs(rows) do
        table.insert(lines, '|-')
        table.insert(lines,
            '| ' .. (row.date or '')
            .. ' || ' .. (row.weekday or '')
            .. ' || ' .. (row.time or '')
            .. ' || ' .. (row.content or '')
            .. ' || ' .. (row.note or ''))
    end
    table.insert(lines, '|}')
    return table.concat(lines, '\n')
end

return p