Modulo:Bozza

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Bozza/man (modifica · cronologia)
Sandbox: Modulo:Bozza/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Bozza/test (modifica · cronologia · Esegui)
Modulo che implementa le funzionalità del template:Bozza.
Legge i vari template:Richiesta revisione bozza presenti nella pagina e include il template:Bozza/avviso coi parametri adeguati.
require('Modulo:No globals')
local p = {}
local function removeFalsePositives(str)
return str
:gsub('<!%-%-.-%-%->', '')
:gsub('<nowiki>.-</nowiki>', '')
:gsub('%{%{ *[Cc]ategorie *bozza *%|.-%}%}', '')
end
local function getPageContent()
local text = mw.title.getCurrentTitle():getContent() or ''
return removeFalsePositives(text)
end
function p.controllo_categorie(frame)
local text = getPageContent()
local pattern = "%[%[ *([Cc][Aa][Tt][Ee][Gg][Oo][Rr][YyIi][Aa]?) *: *[^%s][^\n]-%]%]"
for colonprefix in text:gmatch(pattern) do
local ns = mw.site.namespaces[colonprefix]
if ns and ns.canonicalName == 'Category' then
return '[[Categoria:Bozze con categorie da disabilitare]]'
end
end
end
function p.stato_richiesta(frame)
if frame.args[1] == 'S' then return frame.args[1] end
local text = getPageContent()
local declined = false
local lang = mw.language.getContentLanguage()
for str in text:gmatch('%{%{ *[Rr]ichiesta *revisione *bozza *(%|.-%})%}') do
if str:find('%| *1? *=? *respinta *[%|%}]') then
declined = true
else
local ts = str:match('| *ts *= *(%d%d%d%d%d%d%d%d%d%d%d%d%d%d) *[%|%}]')
if ts and pcall(lang.formatDate, lang, '', ts) == true then
return 'R'
end
end
end
if declined then
return frame.args[1] == 'A' and 'A' or 'N'
end
return frame.args[1]
end
return p