<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ABellezzasoloUserPageModule</id>
	<title>Module:BellezzasoloUserPageModule - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ABellezzasoloUserPageModule"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:BellezzasoloUserPageModule&amp;action=history"/>
	<updated>2026-04-15T17:57:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:BellezzasoloUserPageModule&amp;diff=135369&amp;oldid=prev</id>
		<title>imported&gt;Bellezzasolo: Undid revision 870134518 by Bellezzasolo (talk) Nope</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:BellezzasoloUserPageModule&amp;diff=135369&amp;oldid=prev"/>
		<updated>2018-11-22T16:59:37Z</updated>

		<summary type="html">&lt;p&gt;Undid revision 870134518 by &lt;a href=&quot;/research/Special:Contributions/Bellezzasolo&quot; title=&quot;Special:Contributions/Bellezzasolo&quot;&gt;Bellezzasolo&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Bellezzasolo&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Bellezzasolo (page does not exist)&quot;&gt;talk&lt;/a&gt;) Nope&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {};&lt;br /&gt;
&lt;br /&gt;
local args = {}&lt;br /&gt;
local origArgs&lt;br /&gt;
local root&lt;br /&gt;
&lt;br /&gt;
local function preprocessSingleArg(argName, default)&lt;br /&gt;
    -- If the argument exists and isn&amp;#039;t blank, add it to the argument table.&lt;br /&gt;
    -- Blank arguments are treated as nil to match the behaviour of ParserFunctions.&lt;br /&gt;
    if origArgs[argName] and origArgs[argName] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        args[argName] = origArgs[argName]:gsub(&amp;quot;&amp;amp;#35;&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
    elseif default ~= nil then&lt;br /&gt;
    	args[argName] = default:gsub(&amp;quot;&amp;amp;#35;&amp;quot;, &amp;quot;#&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function preprocessArgs(prefixTable, step)&lt;br /&gt;
    -- Assign the parameters with the given prefixes to the args table, in order, in batches&lt;br /&gt;
    -- of the step size specified. This is to prevent references etc. from appearing in the&lt;br /&gt;
    -- wrong order. The prefixTable should be an array containing tables, each of which has&lt;br /&gt;
    -- two possible fields, a &amp;quot;prefix&amp;quot; string and a &amp;quot;depend&amp;quot; table. The function always parses&lt;br /&gt;
    -- parameters containing the &amp;quot;prefix&amp;quot; string, but only parses parameters in the &amp;quot;depend&amp;quot;&lt;br /&gt;
    -- table if the prefix parameter is present and non-blank.&lt;br /&gt;
    if type(prefixTable) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
        error(&amp;quot;Non-table value detected for the prefix table&amp;quot;, 2)&lt;br /&gt;
    end&lt;br /&gt;
    if type(step) ~= &amp;#039;number&amp;#039; then&lt;br /&gt;
        error(&amp;quot;Invalid step value detected&amp;quot;, 2)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Get arguments without a number suffix, and check for bad input.&lt;br /&gt;
    for i,v in ipairs(prefixTable) do&lt;br /&gt;
        if type(v) ~= &amp;#039;table&amp;#039; or type(v.prefix) ~= &amp;quot;string&amp;quot; or (v.depend and type(v.depend) ~= &amp;#039;table&amp;#039;) then&lt;br /&gt;
            error(&amp;#039;Invalid input detected to preprocessArgs prefix table&amp;#039;, 2)&lt;br /&gt;
        end&lt;br /&gt;
        preprocessSingleArg(v.prefix, nil)&lt;br /&gt;
        -- Only parse the depend parameter if the prefix parameter is present and not blank.&lt;br /&gt;
        if args[v.prefix] and v.depend then&lt;br /&gt;
            for j, dependValue in ipairs(v.depend) do&lt;br /&gt;
                if type(dependValue) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
                    error(&amp;#039;Invalid &amp;quot;depend&amp;quot; parameter value detected in preprocessArgs&amp;#039;)&lt;br /&gt;
                end&lt;br /&gt;
                preprocessSingleArg(dependValue, nil)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Get arguments with number suffixes.&lt;br /&gt;
    local a = 1 -- Counter variable.&lt;br /&gt;
    local moreArgumentsExist = true&lt;br /&gt;
    while moreArgumentsExist == true do&lt;br /&gt;
        moreArgumentsExist = false&lt;br /&gt;
        for i = a, a + step - 1 do&lt;br /&gt;
            for j,v in ipairs(prefixTable) do&lt;br /&gt;
                local prefixArgName = v.prefix .. tostring(i)&lt;br /&gt;
                if origArgs[prefixArgName] then&lt;br /&gt;
                    moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones.&lt;br /&gt;
                    preprocessSingleArg(prefixArgName, nil)&lt;br /&gt;
                end&lt;br /&gt;
                -- Process the depend table if the prefix argument is present and not blank, or&lt;br /&gt;
                -- we are processing &amp;quot;prefix1&amp;quot; and &amp;quot;prefix&amp;quot; is present and not blank, and&lt;br /&gt;
                -- if the depend table is present.&lt;br /&gt;
                if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then&lt;br /&gt;
                    for j,dependValue in ipairs(v.depend) do&lt;br /&gt;
                        local dependArgName = dependValue .. tostring(i)&lt;br /&gt;
                        preprocessSingleArg(dependArgName, nil)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        a = a + step&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(prefix)&lt;br /&gt;
    -- Returns a table containing the numbers of the arguments that exist&lt;br /&gt;
    -- for the specified prefix. For example, if the prefix was &amp;#039;data&amp;#039;, and&lt;br /&gt;
    -- &amp;#039;data1&amp;#039;, &amp;#039;data2&amp;#039;, and &amp;#039;data5&amp;#039; exist, it would return {1, 2, 5}.&lt;br /&gt;
    local nums = {}&lt;br /&gt;
    for k, v in pairs(args) do&lt;br /&gt;
        local num = tostring(k):match(&amp;#039;^&amp;#039; .. prefix .. &amp;#039;([1-9]%d*)$&amp;#039;)&lt;br /&gt;
        if num then table.insert(nums, tonumber(num)) end&lt;br /&gt;
    end&lt;br /&gt;
    table.sort(nums)&lt;br /&gt;
    return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function defaultLink(pagename)&lt;br /&gt;
	if pagename == args.basepagename then&lt;br /&gt;
		return &amp;#039;User:&amp;#039; .. pagename&lt;br /&gt;
	elseif pagename == &amp;quot;Talk&amp;quot; then&lt;br /&gt;
		return &amp;#039;User talk:&amp;#039; .. args.basepagename&lt;br /&gt;
	elseif pagename == &amp;quot;Contributions&amp;quot; then&lt;br /&gt;
		return &amp;#039;Special:Contributions/&amp;#039; .. args.basepagename&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;User:&amp;#039; .. args.basepagename .. &amp;#039;/&amp;#039; .. pagename&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _userpage()&lt;br /&gt;
	local nameargs = getArgNums(&amp;#039;name&amp;#039;)&lt;br /&gt;
	local nameargslen = 0&lt;br /&gt;
	for _ in pairs(nameargs) do nameargslen = nameargslen + 1 end&lt;br /&gt;
	local width = 100 / nameargslen&lt;br /&gt;
	root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	root:css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
	    :css(&amp;#039;background-color&amp;#039;, args.background_normal)&lt;br /&gt;
	    :tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	local cellnums = getArgNums(&amp;#039;name&amp;#039;)&lt;br /&gt;
    table.sort(cellnums)&lt;br /&gt;
    for k, num in ipairs(cellnums) do&lt;br /&gt;
    	local row = root:tag(&amp;#039;td&amp;#039;):css(&amp;#039;border&amp;#039;,args.border .. &amp;quot; solid medium&amp;quot;):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;):css(&amp;#039;width&amp;#039;, width .. &amp;#039;%&amp;#039;)&lt;br /&gt;
    	local pagename = args[&amp;#039;name&amp;#039; .. num]&lt;br /&gt;
    	local pagelink = nil&lt;br /&gt;
    	local textcolor = nil&lt;br /&gt;
    	if args[&amp;#039;link&amp;#039; .. num] ~= nil then&lt;br /&gt;
    		pagelink = args[&amp;#039;link&amp;#039; .. num]&lt;br /&gt;
    	else&lt;br /&gt;
    		pagelink = defaultLink(pagename)&lt;br /&gt;
    	end&lt;br /&gt;
    	if pagelink == args.fullpagename then&lt;br /&gt;
    		row:css(&amp;#039;background-color&amp;#039;, args.background_select)&lt;br /&gt;
    		textcolor = args.text_highlight&lt;br /&gt;
    	else&lt;br /&gt;
    		row:css(&amp;#039;background-color&amp;#039;, args.background_normal)&lt;br /&gt;
    		textcolor = args.text_normal&lt;br /&gt;
    	end&lt;br /&gt;
    	local para = row:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
    	para:wikitext(&amp;quot;[[&amp;quot; .. pagelink .. &amp;quot;|&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;#039;color:&amp;quot; .. textcolor .. &amp;quot;&amp;#039;&amp;gt;&amp;quot; .. pagename .. &amp;quot;&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;]]&amp;quot;)&lt;br /&gt;
    	para:done()&lt;br /&gt;
    	row:done()&lt;br /&gt;
    end&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.userpage(frame, fullpagename, basepagename)&lt;br /&gt;
	-- If called via #invoke, use the args passed into the invoking template.&lt;br /&gt;
    -- Otherwise, for testing purposes, assume args are being passed directly in.&lt;br /&gt;
    if frame == mw.getCurrentFrame() then&lt;br /&gt;
        origArgs = frame:getParent().args&lt;br /&gt;
    else&lt;br /&gt;
        origArgs = frame&lt;br /&gt;
    end&lt;br /&gt;
    preprocessSingleArg(&amp;#039;user_title_color&amp;#039;, &amp;#039;black&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;background_normal&amp;#039;, &amp;#039;lightblue&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;background_select&amp;#039;, &amp;#039;blue&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;text_highlight&amp;#039;, &amp;#039;white&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;text_normal&amp;#039;, &amp;#039;navy&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;border&amp;#039;, &amp;#039;navy&amp;#039;)&lt;br /&gt;
    preprocessSingleArg(&amp;#039;fullpagename&amp;#039;, frame.args[1])&lt;br /&gt;
    preprocessSingleArg(&amp;#039;basepagename&amp;#039;, frame.args[2])&lt;br /&gt;
    preprocessArgs({{prefix=&amp;#039;name&amp;#039;, depend={&amp;#039;link&amp;#039;}}}, 4)&lt;br /&gt;
    return _userpage()&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>imported&gt;Bellezzasolo</name></author>
	</entry>
</feed>