<?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%3ARfX_template_maker</id>
	<title>Module:RfX template maker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ARfX_template_maker"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:RfX_template_maker&amp;action=history"/>
	<updated>2026-05-28T07:32:34Z</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:RfX_template_maker&amp;diff=144668&amp;oldid=prev</id>
		<title>imported&gt;Mr. Stradivarius: add secondsleft field</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:RfX_template_maker&amp;diff=144668&amp;oldid=prev"/>
		<updated>2014-05-22T12:17:19Z</updated>

		<summary type="html">&lt;p&gt;add secondsleft field&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module allows people to make templates that display data about current RfA and RfB discussions,&lt;br /&gt;
-- without them having to know how to program in Lua.&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local currentRfx = require(&amp;#039;Module:Current RfX&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function err(msg)&lt;br /&gt;
	return string.format(&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s.&amp;lt;/strong&amp;gt;&amp;#039;, msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local rfxProperties = {&lt;br /&gt;
	supports = &amp;#039;supports&amp;#039;,&lt;br /&gt;
	opposes = &amp;#039;opposes&amp;#039;,&lt;br /&gt;
	neutrals = &amp;#039;neutrals&amp;#039;,&lt;br /&gt;
	percent = &amp;#039;percent&amp;#039;,&lt;br /&gt;
	endtime = &amp;#039;endTime&amp;#039;,&lt;br /&gt;
	user = &amp;#039;user&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local rfxMethods = {&lt;br /&gt;
	page = function (obj)&lt;br /&gt;
		local title = obj:getTitleObject()&lt;br /&gt;
		return title.prefixedText&lt;br /&gt;
	end,&lt;br /&gt;
	dupes = function (obj)&lt;br /&gt;
		local dupes = obj:dupesExist()&lt;br /&gt;
		if dupes then&lt;br /&gt;
			return &amp;#039;yes&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;no&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	secondsleft = function (obj)&lt;br /&gt;
		return obj:getSecondsLeft()&lt;br /&gt;
	end,&lt;br /&gt;
	timeleft = function (obj)&lt;br /&gt;
		return obj:getTimeLeft()&lt;br /&gt;
	end,&lt;br /&gt;
	report = function (obj)&lt;br /&gt;
		local report = obj:getReport()&lt;br /&gt;
		return tostring(report)&lt;br /&gt;
	end,&lt;br /&gt;
	status = function (obj)&lt;br /&gt;
		return obj:getStatus()&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local template = args.template&lt;br /&gt;
	if not template then&lt;br /&gt;
		return err(&amp;#039;template not specified&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rfxes = currentRfx.rfx()&lt;br /&gt;
	local rfas = rfxes.rfa&lt;br /&gt;
	local rfbs = rfxes.rfb&lt;br /&gt;
	&lt;br /&gt;
	local rfxTable&lt;br /&gt;
	if args.type == &amp;#039;rfa&amp;#039; then&lt;br /&gt;
		rfxTable = rfas&lt;br /&gt;
	elseif args.type == &amp;#039;rfb&amp;#039; then&lt;br /&gt;
		rfxTable = rfbs&lt;br /&gt;
	else&lt;br /&gt;
		return err(&amp;#039;type parameter not specified; must be &amp;quot;rfa&amp;quot; or &amp;quot;rfb&amp;quot;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Work out what properties and methods were specified in the arguments, so that&lt;br /&gt;
	-- we don&amp;#039;t have to generate data from the rfx object needlessly, and so that &lt;br /&gt;
	-- we don&amp;#039;t have to check the arguments for every row.&lt;br /&gt;
	local propertiesToUse, methodsToUse = {}, {}&lt;br /&gt;
	for argName, property in pairs(rfxProperties) do&lt;br /&gt;
		if args[argName] then&lt;br /&gt;
			propertiesToUse[argName] = property&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for argName, func in pairs(rfxMethods) do&lt;br /&gt;
		if args[argName] then&lt;br /&gt;
			methodsToUse[argName] = func&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local renderRow = p.renderRow&lt;br /&gt;
	for _, rfxObj in ipairs(rfxTable) do&lt;br /&gt;
		ret[#ret + 1] = renderRow(rfxObj, propertiesToUse, methodsToUse, template, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderRow(obj, propertiesToUse, methodsToUse, template, frame)&lt;br /&gt;
	local targs = {}&lt;br /&gt;
	for argName, property in pairs(propertiesToUse) do&lt;br /&gt;
		targs[argName] = obj[property]&lt;br /&gt;
	end&lt;br /&gt;
	for argName, func in pairs(methodsToUse) do&lt;br /&gt;
		targs[argName] = func(obj)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{title = template, args = targs}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Mr. Stradivarius</name></author>
	</entry>
</feed>