Module:Resolve category redirect
| This Lua module is used in MediaWiki:Babel-category-override. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption, 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 |
|---|
About
[change source]This template resolves soft category redirects.
It takes one parameter, which is the name of a category. If successful, it will return the target of {{category redirect|<target>}} on that category. If unsuccessful, it will return its own original parameter.
Usage
[change source]{{Resolve category redirect|categoryname}}
Examples
[change source]Category exists and is not redirected: Category:1970s
[change source]{{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
[change source]{{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
[change source]{{Resolve category redirect|Organisations}}→ Organizations{{Resolve category redirect|Category:Organisations}}→ Organizations
Non-existent category: Category:Colourless green things
[change source]{{Resolve category redirect|Colourless green things}}→ Colourless green things{{Resolve category redirect|Category:Colourless green things}}→ Category:Colourless green things
{{Title year}} in category: Category:1781 in Mexico
[change source]{{Resolve category redirect|1781 in Mexico}}→ 1781 in Mexico{{Resolve category redirect|Category:1781 in Mexico}}→ Category:1781 in Mexico
Templates
[change source]{{Title year}} and other templates without parameters are now allowed in the {{Category redirect}} target name, as well as basic parser functions, and are evaluated accordingly. Multiple templates are not evaluated, but such functionality can be requested with an appropriate working example.
The character ! is also now allowed (see testcases).
Avoiding deletion of the redirected page
[change source]It is helpful to also add {{R from category navigation}} or {{R from template-generated category}} (as appropriate) to indicate that the redirect is required for navigation between category pages. See those template page for full syntax. This also hides a speedy deletion button that is otherwise displayed to administrators.
Tracking categories
[change source]See also
[change source]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