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