Info Istruzioni per l'uso
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 new_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[#errori+1] = '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 #errori>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:' .. cat .. ']]'
    end
    return table.concat(wrapped)
end

return p