Modulo:Gastronomia
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Gastronomia/man (modifica · cronologia)
Sandbox: Modulo:Gastronomia/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Gastronomia/test (modifica · cronologia · esegui)
Modulo per svolgere le catalogazioni automatiche per le voci contententi il template {{Gastronomia}}. Le impostazioni si trovano in Modulo:Gastronomia/Configurazione.
local getArgs = require('Module:Arguments').getArgs
local p = {}
function get_list(args, base_name, max)
local name_list = {}
name_list[1] = args[base_name]
local counter = 2
for counter = 2, max do
name_list[counter] = args[base_name .. tostring(counter)]
end
return name_list
end
function p.autocat(frame)
local categorie = {
['antipasto'] = { cat_base = 'Antipasti', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['primo'] = { cat_base = 'Primi piatti', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['secondo'] = { cat_base = 'Secondi piatti', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['contorno'] = { cat_base = 'Contorni', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['salsa'] = { cat_base = 'Salse', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['condimento'] = { cat_base = 'Condimenti', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['unico'] = { cat_base = 'Piatti unici', paese_cat = 'Cucina', prefix = 'fs', internazionale = false, regioni = false },
['dessert'] = { cat_base = '', paese_cat = 'Dolci', prefix = 'mp', internazionale = false, regioni = false },
['formaggio'] = { cat_base = '', paese_cat = 'Cucina', prefix = 'mp', internazionale = false, regioni = true },
}
local riconoscimenti = {
['DOP']= 'Prodotti DOP',
['GU']= 'Prodotti DOP',
['BOB']= 'Prodotti DOP',
['POP']= 'Prodotti DOP',
['ΠΟΠ']= 'Prodotti DOP',
['SAN']= 'Prodotti DOP',
['PDO']= 'Prodotti DOP',
['CNP']= 'Prodotti DOP',
['SUB']= 'Prodotti DOP',
['OEM']= 'Prodotti DOP',
['AOP']= 'Prodotti DOP',
['AOC']= 'Prodotti DOP',
['STG']= 'Prodotti STG',
['GGA']= 'Prodotti IGP',
['IGP']= 'Prodotti IGP',
['BGB']= 'Prodotti IGP',
['PGE']= 'Prodotti IGP',
['ΠΓΕ']= 'Prodotti IGP',
['SMM']= 'Prodotti IGP',
['PGI']= 'Prodotti IGP',
['BGA']= 'Prodotti IGP',
['COG']= 'Prodotti IGP',
['SGB']= 'Prodotti IGP',
['OFJ']= 'Prodotti IGP',
['IG'] = 'Prodotti IG',
['DOP-PTN']= 'Prodotti DOP-PTN',
}
local prefissi_regioni = {
['Basilicata'] = 'della ',
['Calabria'] = 'della ',
['Campania'] = 'della ',
['Liguria'] = 'della ',
['Lombardia'] = 'della ',
['Puglia'] = 'della ',
['Sicilia'] = 'della ',
['Sardegna'] = 'della ',
['Toscana'] = 'della ',
["Valle d'Aosta"] = 'della ',
['Marche'] = 'delle ',
['Friuli-Venezia Giulia'] = 'del ',
['Lazio'] = 'del ',
['Molise'] = 'del ',
['Piemonte'] = 'del ',
['Trentino-Alto Adige'] = 'del ',
['Veneto'] = 'del ',
['Abruzzo'] = "dell'",
['Emilia-Romagna'] = "dell'",
['Umbria'] = "dell'"
}
local args = getArgs(frame)
local current_page = mw.title.getCurrentTitle()
local current_namespace = current_page.namespace
-- non categorizzare se in ns:0
if current_namespace ~= 0 then
return ''
end
local errori = {}
local ne_categories = {}
local categoria = args[categoria]
local regioni = {}
local paesi = {}
-- Creo categorie in base alla categoria del piatto
if categoria == nil or categorie[categoria] == nil then
errori[#errori+1] = 'Categoria non riconosciuta o non esistente'
else
local piatto_cat = categorie[categoria]
if piatto_cat.cat_base ~= '' then
new_categories[#new_categories+1] = piatto_cat.cat_base
end
local paesi = get_list(args, 'paese', 5)
for _,paese in ipairs(paesi) do
local found_regione = false
if paese == 'Italia'and piatto_cat.regioni then
regioni = get_list(args, 'regione', 15)
if #regioni > 0 then
for _, regione in ipairs(regioni) do
-- check se esiste categoria e aggiungi gruppo e setta found_regione a true
local new_cat = piatto_cat.paese_cat .. frame:expandTemplate{ title = 'AggNaz', args = { piatto_cat.prefix , regione }}
if mw.title.new(new_cat).exists then
new_categories[#new_categories+1] = new_cat
found_regione = true
end
end
end
end
-- paese diverso da 'Italia' oppure non ha trovato una regione
if not found_regione then
if piatto_cat.internazionale and paese == 'Internazionale' then
new_categories[#new_categories+a] = 'Piatti internazionali'
else
new_categories[#new_categories+1] = categorie[categoria].paese_cat .. frame:expandTemplate{ title = 'AggNaz', args = { piatto_cat.prefix , paese }}
end
end
end
end
local riconoscimento = args['riconoscimento']
if riconoscimento then
riconoscimento = mw.ustring.lower(riconoscimento)
if riconoscimenti[riconoscimento] then
new_categories[#new_categories+1] = riconoscimenti[riconoscimento]
elseif riconoscimento == 'PAT' then
if #regioni > 0 then
for _, regione in ipairs(regioni) do
if prefissi_regioni[regione] then
new_categories[#new_categories+1] = 'Prodotti agroalimentari tradizionali' .. prefissi_regioni[regione] .. regione
else
new_categories[#new_categories+1] = 'Prodotti agroalimentari tradizionali italiani'
end
end
else
new_categories[#new_categories+1] = 'Prodotti agroalimentari tradizionali italiani'
end
else
errori[#errore] = 'Riconoscimento non trovato'
end
end
-- categoria di errore per immagini assenti
if not args(immagine) then
new_categories[#new_categories+1] = 'Immagini richieste - cucina'
end
-- wrap in [[ .. ]] le categorie
if #errors>0 then
new_categories[#new_categories+1] = "Errori di compilazione del template Gastronomia"
end
local wrapped = {}
for _,cat in ipairs(new_categories) do
wrapped[#wrapped+1] = '[[Categoria:' .. new_categories .. ']]'
end
return table.concat(wrapped)
end
return p