模組:ArticleAlertGrouping

文档图示 模块文档[查看] [编辑] [历史] [清除缓存]

Alertlivebot暂无法自定义各类通告的顺序,本模组可作为权宜工具,在另一页面上生成按有序排列的工作流。

用法 编辑

{{#invoke:ArticleAlertGrouping|main|<条目通告页面名>|workflows=<期望的工作流序列代码>}}

模组workflow_names表中的代码定义未经校订,因此可能出现输入正确工作流代码却无法显示内容情况。此时修正模组即可。

例子 编辑

按删除(CSD,VFD,COPYVIO,TRANS,DRV)、批判性问题(FAME,SUB)、保护与合并(PP,MM,MV,SPLIT)的顺序排列WikiProject:电子游戏/条目状态通告/首页报告。

代码:

<div style="border: 1px dotted black; padding: .5em; width: 95%; margin: auto;">
<div style="text-align:center; background-color:#EEEEEE;">📰 '''[[WikiProject:电子游戏/条目状态通告/首页|条目状态通告]]'''</div>
<div style="-moz-column-width:30em; column-width:30em; font-size:90%;">{{#invoke:ArticleAlertGrouping|main|WikiProject:电子游戏/条目状态通告/首页|workflows=CSD,VFD,COPYVIO,TRANS,DRV,FAME,SUB,PP,MM,MV,SPLIT}}</div>
{{ArticleAlertbot/foot|WikiProject:电子游戏/条目状态通告/首页}}
[[Category:订阅条目通告的专题]]
</div>

效果

关注度
保护

加入监视列表 (订阅: RSS  Atom · 其他专题的条目通告
Alertlivebot实时更新 — 问题反馈 — 最后更新于2024-04-19 03:07:24 (UTC)

require('Module:No globals')

local getArgs = require('Module:Arguments').getArgs
local p = {}

function p.main(frame)
     local args = getArgs(frame)
     return p._main(args)
end

function p._main(args)

     local workflow_names = {
          COPYVIO = '侵权',
          CSD = '快速删除',
          DRV = '存废复核',
          DYK = '新条目推荐',
          FA = '特色内容',
          FAME = '关注度',
          GA = '优良条目',
          IFD = '档案存废讨论',
          ITN = '新闻动态候选',
          MM = '合并',
          MV = '移动请求',
          NOZH = '非中文内容',
          PP = '保护',
          PR = '同行评审',
          RFC = '正在讨论的条目',
          SPLIT = '拆分',
          SUB = '小小作品',
          TFC = '今日首页特色内容',
          TGA = '今日首页优良条目',
          TRANS = '迁移到其他计划',
          VFD = '页面存废',
     }

     local wikitext = mw.title.new(args[1]):getContent()
     local source_by_worksflow = {}
     local pos_start, pos_end = 0, 0

     while true do
          pos_start =  mw.ustring.find(wikitext,'\n;', pos_end + 1)
          if pos_start == nil then break end
          pos_end =  mw.ustring.find(wikitext, '\n[^*]', pos_start + 1)

          local text = mw.ustring.sub(wikitext, pos_start, pos_end)
          local _pos_start =  mw.ustring.find(text, ';')
          local _pos_end =  mw.ustring.find(text, '\n', _pos_start + 1)
          local key =  mw.ustring.sub(text, _pos_start + 1 , _pos_end - 1)
          local value =  mw.ustring.sub(text, _pos_end + 1)
          source_by_worksflow[key] = value
     end

     local enabled_workflows = mw.text.split( args.workflows, '%s*,%s*' )
     local ret = {}

     for _, v in ipairs(enabled_workflows) do
          local workflow_title = workflow_names[v]
          if source_by_worksflow[workflow_title] ~= nil then
               table.insert(ret, '; ' .. workflow_title .. '\n' .. source_by_worksflow[workflow_title])
          end
     end

   return mw.getCurrentFrame():preprocess(table.concat( ret, '\n' ))

end

return p