<?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%3ASandbox%2FGonnym%2Fsometest8</id>
	<title>Module:Sandbox/Gonnym/sometest8 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FGonnym%2Fsometest8"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Gonnym/sometest8&amp;action=history"/>
	<updated>2026-05-27T13:23:48Z</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:Sandbox/Gonnym/sometest8&amp;diff=145491&amp;oldid=prev</id>
		<title>imported&gt;Gonnym at 21:13, 23 November 2019</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Gonnym/sometest8&amp;diff=145491&amp;oldid=prev"/>
		<updated>2019-11-23T21:13:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Award class.&lt;br /&gt;
--]]&lt;br /&gt;
local function Award(o)&lt;br /&gt;
	local Award = o or {name = &amp;quot;&amp;quot;, numOfWins = 0, numOfNominations = 0}&lt;br /&gt;
	local checkSelf = libraryUtil.makeCheckSelfFunction( &amp;#039;Sandbox/Gonnym/sometest8&amp;#039;, &amp;#039;Award&amp;#039;, Award, &amp;#039;Sandbox/Gonnym/sometest8 object&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	function Award:setWins(value)&lt;br /&gt;
		if (value) then&lt;br /&gt;
			Award.numOfWins = value&lt;br /&gt;
		else&lt;br /&gt;
			Award.numOfWins = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function Award:setNominations(value)&lt;br /&gt;
		if (value) then&lt;br /&gt;
			Award.numOfNominations = value&lt;br /&gt;
		else&lt;br /&gt;
			Award.numOfNominations = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return Award&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isValidParameter(param, pattern)&lt;br /&gt;
	if (mw.ustring.sub(param, -mw.ustring.len(pattern), -1) == pattern) then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Local function which is used to compare entries in a list.&lt;br /&gt;
--]]&lt;br /&gt;
local function compare(a, b)&lt;br /&gt;
	return a[1] &amp;lt; b[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getOrderedArgs(args)&lt;br /&gt;
	local orderedArgs = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		orderedArgs[i] = {[1] = k, [2] = v}&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.sort(orderedArgs, compare)&lt;br /&gt;
	return orderedArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAwardsList(args)&lt;br /&gt;
	local orderedArgs = getOrderedArgs(args)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local data = mw.loadData(&amp;#039;Module:Sandbox/Gonnym/sometest8/awards&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs(orderedArgs) do&lt;br /&gt;
		local currentArg = orderedArgs[i]&lt;br /&gt;
		local paramName = currentArg[1]&lt;br /&gt;
		local value = currentArg[2]&lt;br /&gt;
		mw.log(&amp;quot;Param name: &amp;quot; .. paramName)&lt;br /&gt;
&lt;br /&gt;
		local awardName = data.getAwardNameFromParameter[paramName:sub(1, -2)]&lt;br /&gt;
		&lt;br /&gt;
		-- Check if parameter is on the award list.&lt;br /&gt;
		if (awardName) then&lt;br /&gt;
			local award = Award()&lt;br /&gt;
		&lt;br /&gt;
			-- Check if award was already added to list.&lt;br /&gt;
			if (list[awardName]) then&lt;br /&gt;
				-- Award was present in list; Use previous entry.&lt;br /&gt;
				award = list[awardName]&lt;br /&gt;
			else&lt;br /&gt;
				-- New award in list; Create new entry.&lt;br /&gt;
				award.name = awardName&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- Check if the award is for Nominations or Wins.&lt;br /&gt;
			if (isValidParameter(paramName, &amp;quot;N&amp;quot;)) then&lt;br /&gt;
				award.numOfNominations = value&lt;br /&gt;
				list[awardName] = award&lt;br /&gt;
			elseif (isValidParameter(paramName, &amp;quot;W&amp;quot;)) then&lt;br /&gt;
				award.numOfWins =  value&lt;br /&gt;
				list[awardName] = award&lt;br /&gt;
			else&lt;br /&gt;
				-- Not one of the above; Might be a malformed parameter name.&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		-- The parameter is not on the award list; Check if it is a custom &amp;quot;award&amp;quot; parameter.&lt;br /&gt;
		elseif (paramName:sub(1, -2) == &amp;quot;award&amp;quot;) then&lt;br /&gt;
			local award = Award()&lt;br /&gt;
			award.name = value&lt;br /&gt;
			mw.log(paramName .. &amp;quot;N&amp;quot;)&lt;br /&gt;
			award:setNominations(args[paramName .. &amp;quot;N&amp;quot;])&lt;br /&gt;
			award:setWins(args[paramName .. &amp;quot;W&amp;quot;])&lt;br /&gt;
			mw.log(award.numOfNominations)&lt;br /&gt;
			mw.log(award.numOfWins)&lt;br /&gt;
			list[value] = award&lt;br /&gt;
		else&lt;br /&gt;
			-- Do nothing.&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._orderAwards(args)&lt;br /&gt;
	local list = getAwardsList(args)&lt;br /&gt;
&lt;br /&gt;
--	for i, v in ipairs(list) do&lt;br /&gt;
--		currentAward = list[i]&lt;br /&gt;
--		args[&amp;quot;label&amp;quot; .. i] = currentAward.name&lt;br /&gt;
--		args[&amp;quot;data&amp;quot; .. i .. &amp;quot;a&amp;quot;] = currentAward.numOfWins&lt;br /&gt;
--		args[&amp;quot;data&amp;quot; .. i .. &amp;quot;b&amp;quot;] = currentAward.numOfNominations&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function sumValues(args)&lt;br /&gt;
	local sum = 0&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs(args) do&lt;br /&gt;
		if (args[i]) then&lt;br /&gt;
			sum = sum + args[i]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return sum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getValues(args, pattern)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	for name, value in pairs(args) do&lt;br /&gt;
		if (isValidParameter(name, pattern)) then&lt;br /&gt;
			table.insert(list, value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._nominations(args)&lt;br /&gt;
	local nominations = getValues(args, &amp;quot;N&amp;quot;)&lt;br /&gt;
	return sumValues(nominations)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._wins(args)&lt;br /&gt;
	local wins = getValues(args, &amp;quot;W&amp;quot;)&lt;br /&gt;
	return sumValues(wins)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
		local args = getArgs(frame)&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.orderAwards = makeInvokeFunc(&amp;#039;_orderAwards&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
p.nominations = makeInvokeFunc(&amp;#039;_nominations&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
p.wins = makeInvokeFunc(&amp;#039;_wins&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Comment: &lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs - works for both direct module calls and inside templates.&lt;br /&gt;
local args2 = mw.getCurrentFrame():getParent().args - works only inside templates.&lt;br /&gt;
--]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Gonnym</name></author>
	</entry>
</feed>