Modulo:Categoria sportivi
Aspetto
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Categoria sportivi/man (modifica · cronologia)
Sandbox: Modulo:Categoria sportivi/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Categoria sportivi/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Categoria sportivi/man (modifica · cronologia)
Sandbox: Modulo:Categoria sportivi/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Categoria sportivi/test (modifica · cronologia · Esegui)
Questo modulo serve a generare il titolo di una categoria di sportivi (giocatori o allenatori).
Esempi d'uso
Come si può notare dagli esempi seguenti, il modulo tenta di disambiguare la categoria nel modo più specifico possibile. Quando le categorie disambiguate non esistono, restituisce il titolo base della categoria.
Codice | Risultato (con wikilink) |
---|---|
{{#invoke:categoria sportivi|main|G|calcio|della Juventus F.C.|M}} |
Categoria:Calciatori della Juventus F.C. |
{{#invoke:categoria sportivi|main|G|football americano|dei New York Giants}} |
Categoria:Giocatori dei New York Giants |
{{#invoke:categoria sportivi|main|G|baseball|dei New York Giants}} |
Categoria:Giocatori dei New York Giants (baseball) |
{{#invoke:categoria sportivi|main|G|calcio a 5|della Lupe Calcio a 5|F}} |
Categoria:Giocatrici della Lupe Calcio a 5 |
{{#invoke:categoria sportivi|main|G|hockey su ghiaccio|della Società di Prova}} |
Categoria:Hockeisti su ghiaccio della Società di Prova |
{{#invoke:categoria sportivi|main|G|calcio a 5|della Società di Prova|F}} |
Categoria:Giocatrici della Società di Prova |
{{#invoke:categoria sportivi|main|A|calcio|dell'A.E.P. Īraklīs 1908}} |
Categoria:Allenatori dell'A.E.P. Īraklīs 1908 |
{{#invoke:categoria sportivi|main|A|basket|dell'A.E.P. Īraklīs 1908}} |
Categoria:Allenatori dell'A.E.P. Īraklīs 1908 (pallacanestro maschile) |
{{#invoke:categoria sportivi|main|A|pallacanestro|della Pallacanestro Palestrina}} |
Categoria:Allenatori della Pallacanestro Palestrina |
{{#invoke:categoria sportivi|main|A|pallacanestro|dell'A.O. Aigaleō}} |
Categoria:Allenatori dell'A.O. Aigaleō (pallacanestro) |
{{#invoke:categoria sportivi|main|A|calcio|della Pallavolo Femminile Matera|F}} |
Categoria:Allenatori della Pallavolo Femminile Matera |
{{#invoke:categoria sportivi|main|A|calcio|dell'A.S. Nancy-Lorraine|F}} |
Categoria:Allenatori dell'A.S. Nancy-Lorraine (femminile) |
{{#invoke:categoria sportivi|main|A|calcio|dell'I.L. Sandviken|F}} |
Categoria:Allenatori dell'I.L. Sandviken (calcio femminile) |
{{#invoke:categoria sportivi|main|A|rugby a 15|della Società di Prova}} |
Categoria:Allenatori della Società di Prova |
{{#invoke:categoria sportivi|main|S|calcio|dell'A.C. Milan|F}} |
Categoria:Stagioni dell'A.C. Milan (femminile) |
--[[
Questo modulo serve per generare il titolo di una categoria per squadra sportiva (giocatori, allenatori, stagioni). Viene usato dal Template:Band sport.
]]
local p = {}
local sport_aliases = {
['basket'] = 'pallacanestro',
['boxe'] = 'pugilato',
['rugby a XIII'] = 'rugby a 13',
['rugby a XV'] = 'rugby a 15',
['rugby league'] = 'rugby a 13',
['rugby union'] = 'rugby a 15',
['volley'] = 'pallavolo'
}
local players_names = {
['automobilismo'] = {['M'] = 'Piloti', ['F'] = 'Piloti'},
['bob'] = {['M'] = 'Bobbisti', ['F'] = 'Bobbiste'},
['calcio'] = {['M'] = 'Calciatori', ['F'] = 'Calciatrici'},
['canottaggio'] = {['M'] = 'Canottieri', ['F'] = 'Canottiere'},
['ginnastica'] = {['M'] = 'Ginnasti', ['F'] = 'Ginnaste'},
['hockey in-line'] = {['M'] = 'Hockeisti in-line', ['F'] = 'Hockeiste in-line'},
['hockey su ghiaccio'] = {['M'] = 'Hockeisti su ghiaccio', ['F'] = 'Hockeiste su ghiaccio'},
['hockey su pista'] = {['M'] = 'Hockeisti su pista', ['F'] = 'Hockeiste su pista'},
['hockey su prato'] = {['M'] = 'Hockeisti su prato', ['F'] = 'Hockeiste su prato'},
['hockey su slittino'] = {['M'] = 'Hockeisti su slittino', ['F'] = 'Hockeiste su slittino'},
['nuoto'] = {['M'] = 'Nuotatori', ['F'] = 'Nuotatrici'},
['pallacanestro'] = {['M'] = 'Cestisti', ['F'] = 'Cestiste'},
['pallanuoto'] = {['M'] = 'Pallanuotisti', ['F'] = 'Pallanuotiste'},
['pallavolo'] = {['M'] = 'Pallavolisti', ['F'] = 'Pallavoliste'},
['pugilato'] = {['M'] = 'Pugili', ['F'] = 'Pugilesse'},
['rugby a 13'] = {['M'] = 'Rugbisti a 13', ['F'] = 'Rugbiste a 13'},
['rugby a 15'] = {['M'] = 'Rugbisti a 15', ['F'] = 'Rugbiste a 15'},
['tuffi'] = {['M'] = 'Tuffatori', ['F'] = 'Tuffatrici'},
['vela'] = {['M'] = 'Velisti', ['F'] = 'Veliste'}
}
local function page_exists(target, namespace)
return mw.title.makeTitle( namespace or '', target ).exists
end
local function disambiguate(title, disambiguator)
return string.format('%s (%s)', title, disambiguator)
end
--[[
main
Questa funzione restituisce la categoria di sportivi a partire da:
*posizione ("A", "G", "S" rispettivamente per allenatore, giocatore, stagione);
*sport (es. "calcio");
*suffisso relativo alla società di appartenenza (es. "della Juventus F.C.")
*sesso dello sportivo.
Uso:
{{#invoke:categoria sportivi|main|pos|sport|società|sesso}}
]]
function p.main( frame )
local pos = frame.args[1]:upper() -- 'A' o 'G'
local sport = frame.args[2]
local club = frame.args[3]
local sex = (frame.args[4] or ''):upper() -- 'M' o 'F'
sport = sport_aliases[sport] or sport
if sex ~= 'F' then sex = 'M' end
local subject = pos == 'A' and 'Allenatori'
or pos == 'G' and (sex == 'F' and 'Giocatrici' or 'Giocatori')
or pos == 'S' and 'Stagioni'
local base_category = string.format('Categoria:%s %s', subject, club)
-- cerca eventuali disambiguazioni per la categoria
local candidate_categories = {}
local function add_candidate(x) table.insert(candidate_categories,x) end
if pos == 'G' then
if players_names[sport] then
return 'Categoria:' .. players_names[sport][sex] .. ' ' .. club
else
add_candidate(disambiguate(base_category, sport))
end
elseif pos == 'A' or pos == 'S' then
local sexAdj = sex == 'F' and 'femminile' or sex == 'M' and 'maschile'
add_candidate(disambiguate(base_category, sport .. ' ' .. sexAdj))
add_candidate(disambiguate(base_category, sexAdj))
add_candidate(disambiguate(base_category, sport))
end
-- se esiste una delle categorie disambiguate (l'ordine in cui sono state aggiunte è importante!)
-- allora ritorna quest'ultima
for _, candidate in ipairs(candidate_categories) do
if page_exists(candidate) then
return candidate
end
end
-- altrimenti restitituisci il titolo base della categoria (senza disambiguazione)
return base_category
end
return p