Jump to content

Module:Current RfX: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
make a start on a dedicated module for getting rfx objects for current rfxes; the code is largely copied from Module:RFX report
 
add an rfx function to get open rfx objects
Line 1: Line 1:
-- This module gets information about RfXes (requests for adminship and requests for bureaucratship)
local rfx = require( 'Module:Rfx' )
-- that are currently open. It can return a list of page names or a list of rfx objects found using
local colours = mw.loadData( 'Module:RFX report/colour' )
-- [[Module:Rfx]].

local rfx = require('Module:Rfx')
local p = {}
local p = {}
Line 13: Line 16:
return nil
return nil
end
end
-- Return a table with a list of pages transcluded from
-- Return a table with a list of pages transcluded from
-- [[Wikipedia:Requests for adminship]], minus the exceptions
-- [[Wikipedia:Requests for adminship]], minus the exceptions
Line 19: Line 21:
local rfxNames = {}
local rfxNames = {}
local exceptions = { ['Front matter'] = true, ['bureaucratship'] = true }
local exceptions = { ['Front matter'] = true, ['bureaucratship'] = true }
for rfxPage, rfxSubpage in mw.ustring.gmatch( rfaText, '{{[ _]*([wW]ikipedia:[rR]equests for %w+/([^{}]-))[ _]*}}' ) do
local pattern = '{{[ _]*([wW]ikipedia:[rR]equests for %w+/([^{}]-))[ _]*}}'
for rfxPage, rfxSubpage in mw.ustring.gmatch(rfaText, pattern) do
if not exceptions[rfxSubpage] then
if not exceptions[rfxSubpage] then
rfxNames[#rfxNames + 1] = rfxPage
rfxNames[#rfxNames + 1] = rfxPage
Line 25: Line 28:
end
end
return rfxNames
return rfxNames
end

function p.rfx()
local rfa, rfb = {}, {}
local rfxNames = p.rfxNames()
for i, rfxName in ipairs(rfxNames) do
local rfxObj = rfx.new(rfxName)
if rfxObj then
local rfxType = rfxObj.type
if rfxType == 'rfa' then
rfa[#rfa + 1] = rfxObj
elseif rfxType == 'rfb' then
rfb[#rfb + 1] = rfxObj
end
end
end
return {rfa = rfa, rfb = rfb}
end
end



Revision as of 06:53, 30 January 2014

-- This module gets information about RfXes (requests for adminship and requests for bureaucratship)
-- that are currently open. It can return a list of page names or a list of rfx objects found using
-- [[Module:Rfx]].

local rfx = require('Module:Rfx')
 
local p = {}
 
function p.rfxNames()
    local success, rfa = pcall(mw.title.new, 'Wikipedia:Requests for adminship')
    if not (success and rfa) then
        return nil
    end
    local rfaText = rfa:getContent()
    if not rfaText then
        return nil
    end
    -- Return a table with a list of pages transcluded from
    -- [[Wikipedia:Requests for adminship]], minus the exceptions
    -- which are always transcluded there.
    local rfxNames = {}
    local exceptions = { ['Front matter'] = true, ['bureaucratship'] = true }
    local pattern = '{{[ _]*([wW]ikipedia:[rR]equests for %w+/([^{}]-))[ _]*}}'
    for rfxPage, rfxSubpage in mw.ustring.gmatch(rfaText, pattern) do
        if not exceptions[rfxSubpage] then
            rfxNames[#rfxNames + 1] = rfxPage
        end
    end
    return rfxNames
end

function p.rfx()
	local rfa, rfb = {}, {}
	local rfxNames = p.rfxNames()
	for i, rfxName in ipairs(rfxNames) do
		local rfxObj = rfx.new(rfxName)
		if rfxObj then
			local rfxType = rfxObj.type
			if rfxType == 'rfa' then
				rfa[#rfa + 1] = rfxObj
			elseif rfxType == 'rfb' then
				rfb[#rfb + 1] = rfxObj
			end
		end
	end
	return {rfa = rfa, rfb = rfb}
end

return p