Module:Resolve category redirect
Jump to navigation
Jump to search
![]() | This Lua module is used on approximately 388,000 pages, or roughly 969% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
![]() | This module depends on the following other modules: |
Resolves a soft category redirect.
It takes one parameter, which is the name of a category. It returns that category name, unless the category exists and is a {{category redirect}} ... when it returns the name of the redirect target.
Usage
{{Resolve category redirect|categoryname}}
Examples
- Category exists and is not redirected
- Category:1970s
{{Resolve category redirect|1970s}}
→ 1970s{{Resolve category redirect|Category:1970s}}
→ Category:1970s
- Category exists and is a soft redirect
- Category:Mosques completed in the 19th century
{{Resolve category redirect|Mosques completed in the 19th century}}
→ Mosques completed in the 19th century{{Resolve category redirect|Category:Mosques completed in the 19th century}}
→ Category:Mosques completed in the 19th century
- Category exists and is a soft redirect
- Category:Organisations
{{Resolve category redirect|Organisations}}
→ Organisations{{Resolve category redirect|Category:Organisations}}
→ Category:Organisations
- Non-existent category
- Category:Colourless green things
{{Resolve category redirect|Colourless green things}}
→ Colourless green things{{Resolve category redirect|Category:Colourless green things}}
→ Category:Colourless green things
See also
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