Modulo:Pn
Aspetto
La documentazione per questo modulo può essere creata in Modulo:Pn/man
local getArgs = require('Modulo:Arguments').getArgs
local args = getArgs(frame)
local titolo = mw.title.getCurrentTitle().subpageText
local pRegex = "^[b|n|q|s|v|w|voy]" -- Regex per i progetti accettati
prog_etichetta = { -- testo da visualizzare nel link
b = "testi",
n = "news",
q = "citazioni",
s = "opere",
v = "corsi",
w = "approfondimento",
voy = "itinerari",
}
prog_img = { -- titolo dell'immagine per progetto (senza la parte "-logo.ext")
b = "Wikibooks",
n = "Wikinews",
q = "Wikiquote",
s = "Wikisource",
v = "Wikiversity",
w = "Wikipedia",
voy = "Wikivoyage",
}
progetti = { -- per adesso non serve ma in futuro potrebbe essere motivo di update
prog_etichetta = {},
prog_img = {},
}
-- Funzione per confrontare una regex con il parametro passato
local function pPattern (par)
return string.match ( pRegex , par)
end
-- FUNZIONE PER CATEGORIZZARE IN CASO DI APPENDICE NON ESISTENTE
local function categorizza(pagina,lingua)
if mw.title.new(pagina).exists == false then
return string.format('[[Category:%s]]', 'Appendici in '.. lingua:lower() ..' da scrivere')
else
return ''
end
end
--[[ FUNZIONE PER GESTIRE CATEGORIZZAZIONE E MESSAGGIO DI ERRORE
(LE VARIE CONDIZIONI NECESSARIE AL FUNZIONAMENTO SONO SPECIFICATE ALL'INTERNO
DELLA FUNZIONE Errore(), QUESTA FUNZIONE GESTISCE SOLTANTO IL RISULTATO) ]]--
local function ErroreMSG (ErrParametro)
local ErrMessaggio = ' <strong class="error">Parametro "<u>'.. ErrParametro ..'</u>" non riconosciuto</strong>'
local ErrCategoria = '[[Category:Template Pn con parametri errati]]'
return ErrMessaggio .. '' .. ErrCategoria
end
-- FUNZIONE PER GESTIRE LA SCELTA DELL'EVENTUALE MESSAGGIO DI ERRORE PER
-- "CODICE PROGETTO ERRATO"
local function Errore (frame)
local args = getArgs(frame)
local tErr = ''
for i, j in pairs(args) do
-- MESSAGGIO DI ERRORE (E CATEGORIZZAZIONE) PER CODICE PROGETTO ERRATO
if (i ~= pPattern (i) and i ~= 'lin' and i ~= 'c' and j ~= pPattern (j) and j ~= 'lin' and j ~= 'c') then
if type(i) ~= 'number' then
tErr = ErroreMSG(i)
else
tErr = ErroreMSG(j)
end
end
end
return tErr
end
-- FUNZIONE PER GESTIRE IL TESTO E IL LINK AL PROGETTO WMF
local function LinkProgetto(frame)
local args = getArgs(frame)
local tProg = ''
for i, j in pairs(args) do
-- Valore specificato per il parametro
if type(i) ~= 'number' and i ~= 'c' or args['lin'] ~= nil then
local img = (mw.ustring.gsub(i, '^[%a]+', prog_img))
local etichetta = (mw.ustring.gsub(i, '^[%a]+', prog_etichetta))
if i == pPattern (i) then -- Testo per un valore "pagina - progetto" diverso da quello di default
tProg = " ([[File:".. img .."-logo.svg|20px|".. img .."]] '''[["..i..":"..j.."|".. etichetta .."]]''')"
end
end
-- Valore NON specificato per il parametro
if j ~= nil and j ~= 'c' or args['lin'] ~= nil then
local img = (mw.ustring.gsub(j, '^[%a]+', prog_img))
local etichetta = (mw.ustring.gsub(j, '^[%a]+', prog_etichetta))
if j == pPattern (j) then -- Testo per un valore "pagina - progetto" uguale a quello di default
tProg = " ([[File:".. img .."-logo.svg|20px|".. img .."]] '''[["..j..":"..titolo.."|".. etichetta .."]]''')"
end
end
end
return tProg
end
-- FUNZIONE PER GESTIRE IL TESTO E IL LINK ALLA CONIUGAZIONE
local function LinkConiugazione(frame)
local args = getArgs(frame)
local coniugazione = ''
local cat_coniugazione = ''
local tCong = ''
local SwitchLang = mw.language.fetchLanguageName( (args['c'] or args['lin'] or 'it'), 'it' )
--[[ controlla che la funzione "mw.language.fetchLanguageName" non dia un
parametro vuoto. in caso affermativo vuol dire che il codice ISO
della lingua non è stato riconosciuto e quindi lo script salta del tutto
la visualizzazione del link alla coniugazione e va direttamente al messaggio
di errore con relativa categoria--]]
for i, j in pairs(args) do
-- Controlla se è stato specificato il parametro "c"…
if i == 'c' or j == 'c' or args['c'] ~= nil then
-- … e che se è stato specificato la lingua non sia quella di default
if args['lin'] ~= nil or args['c'] ~= nil then
lingua = SwitchLang:gsub("^%l", string.upper)
else
lingua = 'Italiano'
end
link_coniugazione = 'Appendice:Coniugazioni/'..lingua..'/'.. titolo
tCong = ' ([['..link_coniugazione..'|vai alla coniugazione]])'..categorizza(link_coniugazione,lingua)
end
end
return tCong
end
local p = {}
--[[
Funzione per creare il testo; Funziona assemblando il titolo con le due funzioni locali:
1) LinkProgetto
2) LinkConiugazione
3) Errore
--]]
function p.pn(frame)
local args = getArgs(frame)
lProg = LinkProgetto(frame)
lCong = LinkConiugazione(frame)
Err = Errore(frame)
if lProg ~= nil then
tProg = lProg
end
if Err ~= nil then
tErr = Err
end
if lCong ~= nil then
tCong = lCong
end
return "'''"..titolo.."'''<small>" .. tProg .. "" .. tCong .. "</small>" .. tErr
end
return p