Moduuli:Artikkeliäänestykset

Wikipediasta
Siirry navigaatioon Siirry hakuun

local p = {}

local function parse_votepage(pagename, namespace, startkey, endkey)
	local title = mw.title.new(pagename, namespace)
	local content = title:getContent()
    local subpages = {}
	
	assert(title, 'Valitettavasti sivun [['.. namespace ..':' .. pagename .. ']] sisällön hakeminen ei onnistunut (virhe 1)')
	assert(content, 'Valitettavasti sivun [['.. namespace ..':' .. pagename .. ']] sisällön hakeminen ei onnistunut (virhe 2)')
	
	for subpagename in string.gfind(content, startkey .. '(%s-([^\n}]-)%s-)' .. endkey) do
		table.insert(subpages,subpagename)
	end
	
-- hoax to find {{Wikipedia:votepage/ ... style pages
   local lang=mw.language.new("fi")
	startkey = '\n{{' .. lang:ucfirst(namespace) ..':'.. pagename ..'/'
	for subpagename in string.gfind(content, startkey .. '(%s-([^\n}]-)%s-)' .. endkey) do
		table.insert(subpages,subpagename)
	end

	startkey = '\n{{' .. lang:lcfirst(namespace) ..':'.. pagename ..'/'
	for subpagename in string.gfind(content, startkey .. '(%s-([^\n}]-)%s-)' .. endkey) do
		table.insert(subpages,subpagename)
	end

	return subpages
end

function p.lista(frame)
	local namespace = 'Wikipedia'
	local ret=""

-- Äänestyssivut	
	local votepages = {
		'Ehdokkaat suositelluiksi artikkeleiksi',
		'Ehdokkaat suositelluiksi luetteloiksi',
		'Ehdokkaat hyviksi artikkeleiksi',
		'Poistoäänestykset',
		'Palautettavat sivut'
	}
	
	for _, pagename in ipairs(votepages) do
		local basepagename = namespace ..":" .. pagename 
		local subpages = parse_votepage(pagename, namespace, '\n{{/', '}}')
		if table.getn(subpages)>0 then
			ret = ret .. "* [[" .. basepagename .."|" .. pagename .."]]\n"
			for _,subpagename in ipairs(subpages) do
				local rowtext = "** [[" .. basepagename .. '/' ..subpagename .."|" .. subpagename .."]]\n" 
				ret = ret .. rowtext 
			end
		end
	end
	
-- Vertaisarviointi
	pagename="Vertaisarviointi"
	local basepagename = namespace ..":" .. pagename 
	local subpages = parse_votepage(pagename, namespace, '=== ?%[%[', '%]%] ?===')

	ret = ret .. "* [[" .. basepagename .."|" .. pagename .."]]\n"
	for _,subpagename in ipairs(subpages) do
		local rowtext = "** [[" .. basepagename .."#" .. subpagename .."|" .. subpagename .."]]\n" 
		ret = ret .. rowtext 
	end
	
-- Muut
	local num 

        num= mw.site.stats.pagesInCategory("Laatuarvioinnit", "pages")
	if num then
		ret = ret .."* [[:Luokka:Laatuarvioinnit|Laatuarvioinnit]] (" .. num  .." kpl)\n"
	end
	
	num=mw.site.stats.pagesInCategory("Merkittävyys kyseenalaistettu", "all")
	if num > 0 then
		ret = ret .."* [[:Luokka:Merkittävyys kyseenalaistettu|Merkittävyys kyseenalaistettu]] (" .. num .." kpl)\n"
	end 
	
	num = mw.site.stats.pagesInCategory("Poistokeskustelussa", "all")
	if num > 0 then
		ret = ret .."* [[:Luokka:Poistokeskustelussa|Poistokeskustelussa]] (" .. num .." kpl)\n"
	end

	return ret
end

return p