<?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%2FAB-me%2FRacing_table</id>
	<title>Module:Sandbox/AB-me/Racing table - 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%2FAB-me%2FRacing_table"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/AB-me/Racing_table&amp;action=history"/>
	<updated>2026-04-17T18:47:20Z</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/AB-me/Racing_table&amp;diff=145015&amp;oldid=prev</id>
		<title>imported&gt;AB-me at 23:04, 6 July 2020</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/AB-me/Racing_table&amp;diff=145015&amp;oldid=prev"/>
		<updated>2020-07-06T23:04:14Z</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 p = {}&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local eventsArg = mw.text.split(args[&amp;#039;events&amp;#039;], &amp;#039;,&amp;#039;)&lt;br /&gt;
	local participantsArg = mw.text.split(args[&amp;#039;participants&amp;#039;], &amp;#039;,&amp;#039;)&lt;br /&gt;
	local pointPositionsArg = mw.text.split(args[&amp;#039;points&amp;#039;], &amp;#039;,&amp;#039;) or {}&lt;br /&gt;
	local notesArg = mw.text.split(args[&amp;#039;notes&amp;#039;], &amp;#039;,&amp;#039;) or {}&lt;br /&gt;
	&lt;br /&gt;
	local events = {} -- contains event information (code, name)&lt;br /&gt;
	local participants = {} -- contains participant information (code, name, results, resultNotes, points, pointsTotal)&lt;br /&gt;
	local pointPositions = {} -- contains the distribution of points based on position&lt;br /&gt;
	local notes = {} -- contains information about distribution of points not based on position (code, adj, num)&lt;br /&gt;
    &lt;br /&gt;
    local stack = {}&lt;br /&gt;
&lt;br /&gt;
	for i,v in ipairs(eventsArg) do events[i] = {code = v, name = args[&amp;#039;event_&amp;#039; .. v]} end&lt;br /&gt;
	for i,v in ipairs(participantsArg) do participants[i] = {code = v, name = args[&amp;#039;participant_&amp;#039; .. v], results = {}, resultNotes = {}, points = {}, pointsTotal = nil} end&lt;br /&gt;
	for i,v in ipairs(pointPositionsArg) do pointPositions[i] = tonumber(v) or 0 end&lt;br /&gt;
	for i,v in ipairs(notesArg) do&lt;br /&gt;
		local adj = true&lt;br /&gt;
		local num = 0&lt;br /&gt;
		local arg = args[&amp;#039;notesPoints_&amp;#039; .. v]&lt;br /&gt;
		&lt;br /&gt;
		if (arg ~= null) then&lt;br /&gt;
			local startsWith = mw.ustring.sub(arg, 1, 1)&lt;br /&gt;
			if (startsWith ~= &amp;#039;+&amp;#039; and startsWith ~= &amp;#039;-&amp;#039;) then&lt;br /&gt;
				adj = false&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			num = tonumber(arg)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        notes[i] = {code = v, adj = adj, num = tonumber(args[&amp;#039;notesPoints_&amp;#039; .. v] or 0)}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Point handling and calculations&lt;br /&gt;
	for iEvents,vEvents in ipairs(events) do&lt;br /&gt;
		if (args[&amp;#039;result_&amp;#039; .. vEvents[&amp;#039;code&amp;#039;]] ~= nil) then&lt;br /&gt;
			local resultSplit = mw.text.split(args[&amp;#039;result_&amp;#039; .. vEvents[&amp;#039;code&amp;#039;]], &amp;#039;,&amp;#039;) or nil&lt;br /&gt;
			&lt;br /&gt;
			local res = {}&lt;br /&gt;
			for i,v in ipairs(resultSplit) do res[v] = i end&lt;br /&gt;
			&lt;br /&gt;
			for iParticipants,vParticipants in ipairs(participants) do&lt;br /&gt;
                vParticipants[&amp;#039;results&amp;#039;][iEvents] = res[vParticipants[&amp;#039;code&amp;#039;]]&lt;br /&gt;
                if (vParticipants[&amp;#039;results&amp;#039;][iEvents] ~= nil) then&lt;br /&gt;
                    vParticipants[&amp;#039;points&amp;#039;][iEvents] = pointPositions[res[vParticipants[&amp;#039;code&amp;#039;]]] or 0&lt;br /&gt;
                else&lt;br /&gt;
                    vParticipants[&amp;#039;points&amp;#039;][iEvents] = nil&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
		end&lt;br /&gt;
    &lt;br /&gt;
        local spec = {}&lt;br /&gt;
        &lt;br /&gt;
        for iNotes,vNotes in ipairs(notes) do&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            if (args[&amp;#039;notes_&amp;#039; .. vEvents[&amp;#039;code&amp;#039;] .. &amp;#039;_&amp;#039; .. vNotes[&amp;#039;code&amp;#039;]]) then&lt;br /&gt;
                local notesSplit = mw.text.split(args[&amp;#039;notes_&amp;#039; .. vEvents[&amp;#039;code&amp;#039;] .. &amp;#039;_&amp;#039; .. vNotes[&amp;#039;code&amp;#039;]], &amp;#039;,&amp;#039;)&lt;br /&gt;
                &lt;br /&gt;
                for i,v in ipairs(notesSplit) do&lt;br /&gt;
                    if (spec[v] == nil) then spec[v] = {} end&lt;br /&gt;
                    table.insert(spec[v], vNotes)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
		for iParticipants,vParticipants in ipairs(participants) do&lt;br /&gt;
            vParticipants[&amp;#039;resultNotes&amp;#039;][iEvents] = spec[vParticipants[&amp;#039;code&amp;#039;]]&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Summation of points&lt;br /&gt;
	for iParticipants,vParticipants in ipairs(participants) do&lt;br /&gt;
        local tot = nil&lt;br /&gt;
        for i,v in pairs(vParticipants[&amp;#039;points&amp;#039;]) do&lt;br /&gt;
            if (v ~= nil) then&lt;br /&gt;
                tot = (tot or 0) + v&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        vParticipants[&amp;#039;pointsTotal&amp;#039;] = tot&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Writing table&lt;br /&gt;
	--local stack = {}&lt;br /&gt;
	&lt;br /&gt;
	table.insert(stack, &amp;#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: 85%; vertical-align:top; text-align:center&amp;quot;&amp;quot;\n&amp;#039;)&lt;br /&gt;
	table.insert(stack, &amp;#039;!style=&amp;quot;vertical-align:middle;&amp;quot;|&amp;lt;abbr title=&amp;quot;Position&amp;quot;&amp;gt;Pos&amp;lt;/abbr&amp;gt;\n&amp;#039;)&lt;br /&gt;
	table.insert(stack, &amp;#039;!style=&amp;quot;vertical-align:middle;&amp;quot;|&amp;#039;.. (args[&amp;#039;text_participant&amp;#039;] or &amp;#039;Participant&amp;#039;) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i,v in ipairs(events) do&lt;br /&gt;
		table.insert(stack, &amp;#039;!&amp;#039; .. (v[&amp;#039;name&amp;#039;] or v[&amp;#039;code&amp;#039;] or i) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(stack, &amp;#039;!style=&amp;quot;vertical-align:middle&amp;quot;|Points\n&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i,v in ipairs(participants) do&lt;br /&gt;
        table.insert(stack, &amp;#039;|-\n&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(stack, &amp;#039;!&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        if (v[&amp;#039;pointsTotal&amp;#039;] ~= nil) then&lt;br /&gt;
            table.insert(stack, i)&lt;br /&gt;
        else&lt;br /&gt;
            table.insert(stack, &amp;#039;&amp;amp;ndash;&amp;#039;)&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        table.insert(stack, &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
		table.insert(stack, &amp;#039;|style=&amp;quot;text-align:left;&amp;quot;|&amp;#039; .. (v[&amp;#039;name&amp;#039;] or v[&amp;#039;code&amp;#039;]) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		for j,w in ipairs(events) do&lt;br /&gt;
			table.insert(stack, &amp;#039;|&amp;#039;)&lt;br /&gt;
            table.insert(stack, v[&amp;#039;results&amp;#039;][j])&lt;br /&gt;
&lt;br /&gt;
            if (v[&amp;#039;resultNotes&amp;#039;] ~= nil and v[&amp;#039;resultNotes&amp;#039;][j] ~= nil) then&lt;br /&gt;
            	local firstNote = true&lt;br /&gt;
                for k,x in ipairs(v[&amp;#039;resultNotes&amp;#039;][j]) do&lt;br /&gt;
                	if (firstNote and v[&amp;#039;results&amp;#039;][j] == nil) then&lt;br /&gt;
                		table.insert(stack, x[&amp;#039;code&amp;#039;])&lt;br /&gt;
            		else&lt;br /&gt;
            			table.insert(stack, &amp;#039;&amp;lt;span style=&amp;quot;margin:0 0.1em 0 0.1em;&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;&amp;#039; .. x[&amp;#039;code&amp;#039;] .. &amp;#039;&amp;lt;/sup&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
                	end&lt;br /&gt;
                    firstNote = false&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
			table.insert(stack, &amp;#039;\n&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(stack, &amp;#039;!&amp;#039; .. (v[&amp;#039;pointsTotal&amp;#039;] or &amp;#039;&amp;amp;ndash;&amp;#039;) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(stack, &amp;#039;|}&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(stack)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>imported&gt;AB-me</name></author>
	</entry>
</feed>