模組:DYK status
外观
-- 本模块用来检查条目的DYK状态
-- 以下模板的重定向检索于2025-04-04
local p = {}
-- 加载依赖
local TPV = require('Module:Template parameter value')
local ustring = mw.ustring
-- 模板名称列表
local inviteTemplates = { "DYK[_ ]Invite", "Dyk[_ ]invite", "DYKInvite", "DYKinvite", "DYKC", "DYKN" }
local archiveTemplates = { "DYKEntry/archive", "NewDYKnomination/archive" }
local historyTemplates = { "Article[_ ]history", "ArticleHistory" }
-- 主函数
function p.main(frame)
local pageTitleStr = frame.args[1]
if not pageTitleStr or pageTitleStr == '' then
return nil
end
-- 获取讨论页标题
local titleObj = mw.title.new(pageTitleStr)
if not titleObj then
return nil
end
local talkTitleObj = titleObj.talkPageTitle
if not talkTitleObj then
return nil
end
local talkPageTitleStr = talkTitleObj.prefixedText
-- 1.检查候选状态
local inviteOptions = { template_index = 1, treat_as_regex = true }
local inviteSuccess, _ = TPV.getTemplate(talkPageTitleStr, inviteTemplates, inviteOptions)
if inviteSuccess then
return "candidate"
end
-- 2.检查DYKEntry/archive
local archiveOptions = { template_index = 1, treat_as_regex = false }
local archiveSuccess, archiveText = TPV.getTemplate(talkPageTitleStr, archiveTemplates, archiveOptions)
if archiveSuccess then
-- 使用 TPV.getParameter 获取result参数的值
local paramOptions = {
template_index = 1, -- TPV.getParameter内部会再次调用getTemplate,需要此参数
ignore_subtemplates = true
}
local resultSuccess, resultValue = TPV.getParameter(talkPageTitleStr, archiveTemplates, 'result', paramOptions)
if resultValue == '-' or resultValue == '!' then
return "no"
else
return "yes"
end
end
-- 3.检查Article history
local historyOptions = { template_index = 1, treat_as_regex = true } -- 处理 Article history/Article_history
local historySuccess, historyText = TPV.getTemplate(talkPageTitleStr, historyTemplates, historyOptions)
if historySuccess then
local params, _ = TPV.getParameters(historyText)
if params.dykdate or params.dyk1date or params.dykentry or params.dyk1entry then
return "yes"
end
end
-- 默认状态
return nil
end
return p