Jump to content

Module:Resolve category redirect

From Simple English Wikipedia, the free encyclopedia


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.

{{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
  • {{Resolve category redirect|Colourless green things}} → Colourless green things
  • {{Resolve category redirect|Category:Colourless green things}} → Category:Colourless green things
  • {{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