Modulo:StagioniTV/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
prova 00981
Omega Bot (discussione | contributi)
m Bot: rimuovo no globals obsoleto
 
(17 versioni intermedie di 2 utenti non mostrate)
Riga 1:
require('Modulo:No globalsstrict')
 
local wikidata = require('Modulo:Wikidata')
Riga 5:
local mNumeroRomano = require('Modulo:Numero romano')
local getArgs = require('Modulo:Arguments').getArgs
local errorCategorycategoria_errore = '[[Categoria:Errori di compilazione del template Stagioni televisiveStagioniTV]]'
errorelocal messaggio_errore = 'Template non compilato correttamente, controlla le [[Template:Stagioni televisiveStagioniTV|istruzioni]]'
local cfg = mw.loadData('Modulo:StagioniTV/Configurazione')
local p = {}
 
---- sotto-funzione per restituire l'ordinale femminile nella costruzione dei collegamenti
local function ordinalefemminile(num)
return mw.getCurrentFrame():expandTemplate {
Riga 14 ⟶ 16:
args = { num }
}
end
 
---- sotto-funzione per evitare potenziali errori restituendo il titolo del template in corsivo in presenza di "'"'
local function safe_for_italics( str )
if etichettastr and str ~= nil'' then
if str:sub(1,1) == "'" then str = "<span></span>" .. str; end
if str:sub(-1,-1) == "'" then str = str .. "<span></span>"; end
-- Remove newlines as they break italics.
str = str:gsub( '\n', ' ' );
return "''" .. str .. "''"
end
end
 
---- evitandosotto-funzione per evitare il corsivo per ilnel titolo del template se il titolo dellaquando seriesono usapresenti caratteri speciali/non latini
---- ispirata al modulo:IsLatin
local function titolo_template( sitelink, etichetta )
local titolotemplate, charval, len, pos
 
if etichetta ~= nil and etichetta ~= '' then
local corsivo = true
lenfor pos = 1, mw.ustring.len(etichetta) do
local charval = mw.ustring.codepoint(mw.ustring.sub(etichetta, pos))
if (charval >= 880 and charval < 8192) or (charval >= 8960) then
corsivo = false
break
end
end
etichetta = (corsivo and safe_for_italics(etichetta)) or etichetta
titolotemplate = stringmw.ustring.format("[[%s|<span style=\"color:white;\">%s</span>]]", sitelink, etichetta)
end
return titolotemplate
end
 
Riga 29 ⟶ 62:
local sep = '&nbsp;<b>&middot;</b>&#32;'
if cfg.idtitolo[args[1]] ~= nil then
id = cfg.idtitolo[args[1]].id
tipo = cfg.tipotitolo[args[1]].tipo or 'serie TV'
etichettanome = cfg.etichettatitolo[args[1]].nome
nomepreposizione = cfg.nometitolo[args[1]].preposizione or 'di'
preposizionestagioni = cfg.preposizionetitolo[args[1]].stagioni
etichetta = cfg.titolo[args[1]].etichetta or wikidata._getLabel({ cfg.titolo[args[1]].id, 'it'})
sitelink = cfg.sitelink[args[1]]
sitelink = cfg.titolo[args[1]].sitelink or mw.wikibase.sitelink( cfg.titolo[args[1]].id )
stagioni = cfg.stagioni[args[1]]
else
 
Riga 76 ⟶ 109:
stagioni = wikidata._getProperty({ 'P2437', n = 1, from = id, formatting = 'raw' })
else
errore = messaggio_errore
errore = 'Template non compilato correttamente, controlla le [[Template:Stagioni televisive|istruzioni]]'
end
 
-- Questa parte del codice genere i collegamenti alle singole edizioni/stagioni e la relativa categoria
if not etichetta or not sitelink or not stagioni or not tipo then
errore = messaggio_errore
errore = 'Template non compilato correttamente, controlla le [[Template:Stagioni televisive|istruzioni]]'
else
Riga 121 ⟶ 154:
 
---- qui vengono generati i link alle stagioni/edizioni e la categoria appropriata
if not etichettanome or not sitelinkpreposizione or not stagioni or not tipo then
errore = messaggio_errore
errore = 'Template non compilato correttamente, controlla le [[Template:Stagioni televisive|istruzioni]]'
else
for i = 1, stagioni do
-- prevede un massimo di 80 stagioni per evitare eventuali timeout causati da vandalismi su Wikidata
if i > 80 then categoria = categoria_errore break end
local ordinaleF = ordinalefemminile(i)
Riga 141 ⟶ 176:
end
local label = args.formato == 'numeri romani' and mNumeroRomano.main({ i }) or (args.formato == 'forma breve' and string.format('%dª', i) or string.format('%s %s', lang:ucfirst(ordinaleF)i, stagioneoedizione))
table.insert(tbl, string.format('[[%s|%s]]', target, label))
Riga 167 ⟶ 202:
end
local speciali = (args[2] == 's' or args[3] == 's' or args[4] == 's') and sep..string.format('[[Episodi speciali %s %s|Episodi speciali]]', preposizione, nome)..(catsp or '')
links = mw.text.listToText(tbl, sep, sep) .. (speciali or '') .. (categoria or catsp or '')
end
 
Riga 183 ⟶ 218:
end
 
---- evitando il corsivo per il titolo del template se il titolo della serie usa caratteri speciali/non latini
local titolotemplate, charval, len, pos
if etichetta ~= nil then
len = mw.ustring.len(etichetta)
pos = 1
while ( pos <= len ) do
charval = mw.ustring.codepoint(mw.ustring.sub(etichetta, pos))
if charval>=370 and charval<2000 then
titolotemplate = string.format("[[%s|<span style=\"color:white;\">%s</span>]]", sitelink, etichetta)
elseif charval>=2100 and charval~=8364 then
titolotemplate = string.format("[[%s|<span style=\"color:white;\">%s</span>]]", sitelink, etichetta)
else
titolotemplate = string.format("[[%s|<span style=\"color:white;\">''%s''</span>]]", sitelink, etichetta)
end
pos = pos + 1;
end
end
---- se sono presenti più di una stagione/edizione genera il navbox, altrimenti solo la categoria
---- se è richiesto solo l'elenco dei collegamenti genera solo i link, utile per l'inclusione in altri template
if not id or not etichetta or not stagioni or not tipo then
template = mw.title.getCurrentTitle().namespace == 0 and errorCategorycategoria_errore or nil
elseif args[2] == 'elenco' then
template = links
Riga 213 ⟶ 228:
else
template = navbox._navbox({
name = 'Stagioni televisiveStagioniTV',
title = titolotemplatetitolo_template(sitelink, etichetta),
titlestyle = sfondo,
image = string.format("[[File:Blue pencil.svg |frameless |12px |alt=Modifica su Wikidata|link=https://www.wikidata.org/wiki/%s#P2437|Modifica su Wikidata]]", id),
imagestyle = 'width:5%;',
list1 = links
})