local p = {}

require('strict')
--questa funzione matcha in voce se c'è un template, in questo esempio, Monitoraggio, e che valori hanno certi parametri. con la sintassi pagina=par1,par2. uso generico, preferibilmente da substare.
function p.templatematching(frame)
	local result = ''
	local page = false
	local pagestring = ''
	local tosearch = ''
	local params ={}
	for name, value in pairs(frame.args) do
		-- Title object, vedi title.getContent()
		page = mw.title.makeTitle( 'Discussione', name )
		pagestring = mw.ustring.match(tostring(page:getContent()),'{{%s*[Mm]+onitoraggio%s*|.-\r?\n==',1)
		-- il pattern non è a prova di falsi positivi (non si può fare bene senza reimplementare molte parti delle PCRE) prendendo la prima sezione,
		-- ma i falsi positivi avrebbero un livello di patologia da essere comunque da correggere a mano, e per loro natura le liste delle voci fondamentali si correggono a mano.
		-- Esempi dove fallisce questo script: due monitoraggi annidati, apertura di sezioni dentro {{monitoraggio}}, template annidati in monitoraggio con gli stessi nomi di parametri.
		if pagestring then
			params=mw.text.split( value, ',', true)
			for n,w  in ipairs(params) do
				tosearch = '|%s*'..w .. '%s*=[^|}]*'
				result = result .. mw.ustring.match(pagestring,tosearch,1)
			end
		end
	return result
	end
end

function p.namespace(frame)
	local nresult = ''
	for k, v in ipairs(mw.site.namespace) do
		nresult = nresult .. tostring(k) ..':' .. tostring(v) .. '\n'
	end
	return nresult
end
return p