<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/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://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ARfX_template_maker"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:RfX_template_maker&amp;action=history"/>
	<updated>2026-06-20T23:09:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:RfX_template_maker&amp;diff=479139&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:RfX_template_maker&amp;diff=479139&amp;oldid=prev"/>
		<updated>2021-07-16T05:39:25Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&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('Module:Arguments').getArgs&lt;br /&gt;
local currentRfx = require('Module:Current RfX')&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;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s.&amp;lt;/strong&amp;gt;', msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local rfxProperties = {&lt;br /&gt;
	supports = 'supports',&lt;br /&gt;
	opposes = 'opposes',&lt;br /&gt;
	neutrals = 'neutrals',&lt;br /&gt;
	percent = 'percent',&lt;br /&gt;
	endtime = 'endTime',&lt;br /&gt;
	user = 'user'&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 'yes'&lt;br /&gt;
		else&lt;br /&gt;
			return 'no'&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('template not specified')&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 == 'rfa' then&lt;br /&gt;
		rfxTable = rfas&lt;br /&gt;
	elseif args.type == 'rfb' then&lt;br /&gt;
		rfxTable = rfbs&lt;br /&gt;
	else&lt;br /&gt;
		return err('type parameter not specified; must be &amp;quot;rfa&amp;quot; or &amp;quot;rfb&amp;quot;')&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't have to generate data from the rfx object needlessly, and so that &lt;br /&gt;
	-- we don'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, '\n')&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>Zoran</name></author>
	</entry>
</feed>