<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mindpowe.red/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AUserbox</id>
	<title>Module:Userbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mindpowe.red/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AUserbox"/>
	<link rel="alternate" type="text/html" href="https://mindpowe.red/wiki/index.php?title=Module:Userbox&amp;action=history"/>
	<updated>2026-04-05T23:08:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://mindpowe.red/wiki/index.php?title=Module:Userbox&amp;diff=885&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: make edit request from User:Diriector_Doc and also changes to prefer named params to numbered params</title>
		<link rel="alternate" type="text/html" href="https://mindpowe.red/wiki/index.php?title=Module:Userbox&amp;diff=885&amp;oldid=prev"/>
		<updated>2020-02-20T08:53:37Z</updated>

		<summary type="html">&lt;p&gt;make edit request from &lt;a href=&quot;/wiki/index.php?title=User:Diriector_Doc&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Diriector Doc (page does not exist)&quot;&gt;User:Diriector_Doc&lt;/a&gt; and also changes to prefer named params to numbered params&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{userbox}}.&lt;br /&gt;
&lt;br /&gt;
local categoryHandler = require('Module:Category handler').main&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function checkNum(val, default)&lt;br /&gt;
	-- Checks whether a value is a number greater than or equal to zero. If so,&lt;br /&gt;
	-- returns it as a number. If not, returns a default value.&lt;br /&gt;
	val = tonumber(val)&lt;br /&gt;
	if val and val &amp;gt;= 0 then&lt;br /&gt;
		return val&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addSuffix(num, suffix)&lt;br /&gt;
	-- Turns a number into a string and adds a suffix.&lt;br /&gt;
	if num then&lt;br /&gt;
		return tostring(num) .. suffix&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkNumAndAddSuffix(num, default, suffix)&lt;br /&gt;
	-- Checks a value with checkNum and adds a suffix.&lt;br /&gt;
	num = checkNum(num, default)&lt;br /&gt;
	return addSuffix(num, suffix)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCat(cat, sort)&lt;br /&gt;
	-- Makes a category link.&lt;br /&gt;
	if sort then&lt;br /&gt;
		return mw.ustring.format('[[Category:%s|%s]]', cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format('[[Category:%s]]', cat)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Argument processing&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local origArgs = require('Module:Arguments').getArgs(frame)&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.main(funcName, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.userbox = makeInvokeFunc('_userbox')&lt;br /&gt;
p['userbox-2'] = makeInvokeFunc('_userbox-2')&lt;br /&gt;
p['userbox-r'] = makeInvokeFunc('_userbox-r')&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Main functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(funcName, args)&lt;br /&gt;
	local userboxData = p[funcName](args)&lt;br /&gt;
	local userbox = p.render(userboxData)&lt;br /&gt;
	local cats = p.categories(args)&lt;br /&gt;
	return userbox .. (cats or '')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._userbox(args)&lt;br /&gt;
	-- Does argument processing for {{userbox}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or 'left'&lt;br /&gt;
	local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, 'px')&lt;br /&gt;
	data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999'&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args['info-a'] or 'left'&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')&lt;br /&gt;
	data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')&lt;br /&gt;
	data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'&lt;br /&gt;
	data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'&lt;br /&gt;
	data.infoColor = args['info-color'] or args['info-fc'] or 'black'&lt;br /&gt;
	data.infoOtherParams = args['info-other-param'] or args['info-op']&lt;br /&gt;
	data.infoClass = args['info-class']&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	local id = args.logo or args[3] or args.id&lt;br /&gt;
	data.id = id&lt;br /&gt;
	data.showId = id and true or false&lt;br /&gt;
	data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')&lt;br /&gt;
	data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')&lt;br /&gt;
	data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'&lt;br /&gt;
	data.idTextAlign = args['id-a'] or 'center'&lt;br /&gt;
	data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')&lt;br /&gt;
	data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor&lt;br /&gt;
	data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0'&lt;br /&gt;
	data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'&lt;br /&gt;
	data.idOtherParams = args['logo-other-param'] or args['id-op']&lt;br /&gt;
	data.idClass = args['id-class']&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p['_userbox-2'] = function (args)&lt;br /&gt;
	-- Does argument processing for {{userbox-2}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or 'left'&lt;br /&gt;
	local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, 'px')&lt;br /&gt;
	data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999'&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args['info-c'] or args[2] or '#eeeeee'&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args['info-a'] or 'left'&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt')&lt;br /&gt;
	data.infoColor = args['info-fc'] or args[8] or 'black'&lt;br /&gt;
	data.infoPadding = args['info-p'] or '0 4px 0 4px'&lt;br /&gt;
	data.infoLineHeight = args['info-lh'] or '1.25em'&lt;br /&gt;
	data.infoOtherParams = args['info-op']&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	data.showId = true&lt;br /&gt;
	data.id = args.logo or args[3] or args.id1 or 'id1'&lt;br /&gt;
	data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px')&lt;br /&gt;
	data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px')&lt;br /&gt;
	data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd'&lt;br /&gt;
	data.idTextAlign = 'center'&lt;br /&gt;
	data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt')&lt;br /&gt;
	data.idLineHeight = args['id1-lh'] or '1.25em'&lt;br /&gt;
	data.idColor = args['id1-fc'] or data.infoColor&lt;br /&gt;
	data.idPadding = args['id1-p'] or '0 1px 0 0'&lt;br /&gt;
	data.idOtherParams = args['id1-op']&lt;br /&gt;
&lt;br /&gt;
	-- Get id2 values.&lt;br /&gt;
	data.showId2 = true&lt;br /&gt;
	data.id2 = args.logo or args[5] or args.id2 or 'id2'&lt;br /&gt;
	data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px')&lt;br /&gt;
	data.id2Height = data.idHeight&lt;br /&gt;
	data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd'&lt;br /&gt;
	data.id2TextAlign = 'center'&lt;br /&gt;
	data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt')&lt;br /&gt;
	data.id2LineHeight = args['id2-lh'] or '1.25em'&lt;br /&gt;
	data.id2Color = args['id2-fc'] or data.infoColor&lt;br /&gt;
	data.id2Padding = args['id2-p'] or '0 0 0 1px'&lt;br /&gt;
	data.id2OtherParams = args['id2-op']&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p['_userbox-r'] = function (args)&lt;br /&gt;
	-- Does argument processing for {{userbox-r}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or 'left'&lt;br /&gt;
	local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, 'px')&lt;br /&gt;
	data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999'&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
	&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	data.showId = false -- We only show id2 in userbox-r.&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args['info-align'] or args['info-a'] or 'left'&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')&lt;br /&gt;
	data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'&lt;br /&gt;
	data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'&lt;br /&gt;
	data.infoColor = args['info-color'] or args['info-fc'] or 'black'&lt;br /&gt;
	data.infoOtherParams = args['info-other-param'] or args['info-op']&lt;br /&gt;
	&lt;br /&gt;
	-- Get id2 values.&lt;br /&gt;
	data.showId2 = true&lt;br /&gt;
	data.id2 = args.logo or args[3] or args.id or 'id'&lt;br /&gt;
	data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')&lt;br /&gt;
	data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')&lt;br /&gt;
	data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'&lt;br /&gt;
	data.id2TextAlign = args['id-a'] or 'center'&lt;br /&gt;
	data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')&lt;br /&gt;
	data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor&lt;br /&gt;
	data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px'&lt;br /&gt;
	data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'&lt;br /&gt;
	data.id2OtherParams = args['logo-other-param'] or args['id-op']&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(data)&lt;br /&gt;
	-- Renders the userbox html using the content of the data table. &lt;br /&gt;
	-- Render the div tag html.&lt;br /&gt;
	local root = mw.html.create('div')&lt;br /&gt;
	root&lt;br /&gt;
		:css('float', data.float)&lt;br /&gt;
		:css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or ''))&lt;br /&gt;
		:css('margin', '1px')&lt;br /&gt;
		:css('width', data.width)&lt;br /&gt;
		:addClass('wikipediauserbox')&lt;br /&gt;
		:addClass(data.bodyClass)&lt;br /&gt;
&lt;br /&gt;
	-- Render the table tag html.&lt;br /&gt;
	local tableroot = root:tag('table')&lt;br /&gt;
	tableroot&lt;br /&gt;
		:attr('role', 'presentation')&lt;br /&gt;
		:css('border-collapse', 'collapse')&lt;br /&gt;
		:css('width', data.width)&lt;br /&gt;
		:css('margin-bottom', '0')&lt;br /&gt;
		:css('margin-top', '0')&lt;br /&gt;
		:css('background', data.backgroundColor)&lt;br /&gt;
	&lt;br /&gt;
	-- Render the id html.&lt;br /&gt;
	local tablerow = tableroot:tag('tr')&lt;br /&gt;
	if data.showId then&lt;br /&gt;
		tablerow:tag('td')&lt;br /&gt;
			:css('border', '0')&lt;br /&gt;
			:css('width', data.idWidth)&lt;br /&gt;
			:css('height', data.idHeight)&lt;br /&gt;
			:css('background', data.idBackgroundColor)&lt;br /&gt;
			:css('text-align', data.idTextAlign)&lt;br /&gt;
			:css('font-size', data.idFontSize)&lt;br /&gt;
			:css('font-weight', 'bold')&lt;br /&gt;
			:css('color', data.idColor)&lt;br /&gt;
			:css('padding', data.idPadding)&lt;br /&gt;
			:css('line-height', data.idLineHeight)&lt;br /&gt;
			:css('vertical-align', 'middle')&lt;br /&gt;
			:cssText(data.idOtherParams)&lt;br /&gt;
			:addClass(data.idClass)&lt;br /&gt;
			:wikitext(data.id)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the info html.&lt;br /&gt;
	tablerow:tag('td')&lt;br /&gt;
		:css('border', '0')&lt;br /&gt;
		:css('text-align', data.infoTextAlign)&lt;br /&gt;
		:css('font-size', data.infoFontSize)&lt;br /&gt;
		:css('padding', data.infoPadding)&lt;br /&gt;
		:css('height', data.infoHeight)&lt;br /&gt;
		:css('line-height', data.infoLineHeight)&lt;br /&gt;
		:css('color', data.infoColor)&lt;br /&gt;
		:css('vertical-align', 'middle')&lt;br /&gt;
		:cssText(data.infoOtherParams)&lt;br /&gt;
		:addClass(data.infoClass)&lt;br /&gt;
		:wikitext(data.info)&lt;br /&gt;
	&lt;br /&gt;
	-- Render the second id html.&lt;br /&gt;
	if data.showId2 then&lt;br /&gt;
		tablerow:tag('td')&lt;br /&gt;
			:css('border', '0')&lt;br /&gt;
			:css('width', data.id2Width)&lt;br /&gt;
			:css('height', data.id2Height)&lt;br /&gt;
			:css('background', data.id2BackgroundColor)&lt;br /&gt;
			:css('text-align', data.id2TextAlign)&lt;br /&gt;
			:css('font-size', data.id2FontSize)&lt;br /&gt;
			:css('font-weight', 'bold')&lt;br /&gt;
			:css('color', data.id2Color)&lt;br /&gt;
			:css('padding', data.id2Padding)&lt;br /&gt;
			:css('line-height', data.id2LineHeight)&lt;br /&gt;
			:css('vertical-align', 'middle')&lt;br /&gt;
			:cssText(data.id2OtherParams)&lt;br /&gt;
			:wikitext(data.id2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if (title.namespace == 2) and not title.text:match(&amp;quot;/&amp;quot;) then&lt;br /&gt;
		return tostring(root) -- regular user page&lt;br /&gt;
	elseif title.namespace == 14 then&lt;br /&gt;
		return tostring(root) -- category&lt;br /&gt;
	elseif title.isTalkPage then&lt;br /&gt;
		return tostring(root) -- talk page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local legible = true&lt;br /&gt;
	local contrast = require('Module:Color contrast')._ratio&lt;br /&gt;
&lt;br /&gt;
	local function has_text(wikitext)&lt;br /&gt;
		local function get_alt(text)&lt;br /&gt;
			return text:match(&amp;quot;|alt=([^|]*)&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;]]&amp;quot;, &amp;quot;|]]&amp;quot;)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		return mw.text.trim(wikitext) ~= &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if contrast { data.infoColor, data.backgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		legible = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		if has_text(data.id or &amp;quot;&amp;quot;) then&lt;br /&gt;
			legible = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		if has_text(data.id2 or &amp;quot;&amp;quot;) then&lt;br /&gt;
			legible = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not legible then&lt;br /&gt;
		root:wikitext('[[Category:Userboxes with insufficient color contrast]]')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.categories(args, page)&lt;br /&gt;
	-- Gets categories from [[Module:Category handler]].&lt;br /&gt;
	-- The page parameter makes the function act as though the module was being called from that page.&lt;br /&gt;
	-- It is included for testing purposes.&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	cats[#cats + 1] = args.usercategory&lt;br /&gt;
	cats[#cats + 1] = args.usercategory2&lt;br /&gt;
	cats[#cats + 1] = args.usercategory3&lt;br /&gt;
	cats[#cats + 1] = args.usercategory4&lt;br /&gt;
	cats[#cats + 1] = args.usercategory5&lt;br /&gt;
	if #cats &amp;gt; 0 then&lt;br /&gt;
		-- Get the title object&lt;br /&gt;
		local title&lt;br /&gt;
		if page then&lt;br /&gt;
			title = mw.title.new(page)&lt;br /&gt;
		else&lt;br /&gt;
			title = mw.title.getCurrentTitle()&lt;br /&gt;
		end&lt;br /&gt;
		-- Build category handler arguments.&lt;br /&gt;
		local chargs = {}&lt;br /&gt;
		chargs.page = page&lt;br /&gt;
		chargs.nocat = args.nocat&lt;br /&gt;
		chargs.main = '[[Category:Pages with misplaced templates]]'&lt;br /&gt;
		if args.notcatsubpages then&lt;br /&gt;
			chargs.subpage = 'no'&lt;br /&gt;
		end&lt;br /&gt;
		-- User namespace.&lt;br /&gt;
		local user = ''&lt;br /&gt;
		for i, cat in ipairs(cats) do&lt;br /&gt;
			user = user .. makeCat(cat)&lt;br /&gt;
		end&lt;br /&gt;
		chargs.user = user&lt;br /&gt;
		-- Template namespace.&lt;br /&gt;
		local basepage = title.baseText&lt;br /&gt;
		local template = ''&lt;br /&gt;
		for i, cat in ipairs(cats) do&lt;br /&gt;
			template = template .. makeCat(cat, ' ' .. basepage)&lt;br /&gt;
		end&lt;br /&gt;
		chargs.template = template&lt;br /&gt;
		return categoryHandler(chargs)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;WOSlinker</name></author>
		
	</entry>
</feed>