This Lua module is used in MediaWiki:Babel-category-override, and on approximately 773,000 pages, or roughly 1% of all pages. Changes to it can cause immediate changes to the Wikipedia user interface. 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. Please discuss changes on the talk page before implementing them. |
This module depends on the following other modules: |
Related pages |
---|
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.
((Resolve category redirect|categoryname))
((Resolve category redirect|1970s))
→ 1970s((Resolve category redirect|Category:1970s))
→ Category:1970s((Resolve category redirect|Mosques completed in the 19th century))
→ 19th-century mosques((Resolve category redirect|Category:Mosques completed in the 19th century))
→ 19th-century mosques((Resolve category redirect|Organisations))
→ Organizations((Resolve category redirect|Category:Organisations))
→ Organizations((Resolve category redirect|Colourless green things))
→ Colourless green things((Resolve category redirect|Category:Colourless green things))
→ Category:Colourless green thingsDo not use templates in the target name.
((Resolve category redirect)) cannot expand any templates in the target name, and the {
character caused crashes (as did }
and !
). So it does not attempt to resolve any redirect where the target includes those characters.
((category redirect|((title year)) in New Spain))
which cannot be resolved. To be safe, ((Resolve category redirect|1781 in Mexico))
simply returned 1781 in Mexico
.((category redirect|1781 in New Spain))
, which can be resolved.If the parameter |keep=yes
is included in the category redirect, this hides a speedy deletion button that is otherwise displayed to administrators.
It is helpful to also add ((R from category navigation)) to indicate that the redirect is required for navigation between category pages. See that template page for full syntax.
local p = {}
--Returns the target of ((Category redirect)), if it exists, else returns the original cat.
function p.rtarget( cat )
if (mw.ustring.match( cat, '[{}!|]') ~= nil ) then
return cat
end
local catcontent = mw.title.new( cat or '', 'Category' ):getContent()
if string.match( catcontent or '', '(( *[Cc]at' ) then
local getRegex = require('Module:Template redirect regex').main
local tregex = getRegex('Category redirect')
for _, v in pairs (tregex) 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 p.rtarget( cat )
end
return p