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 cfg = mw.loadData("Modulo:Gastronomia/Configurazione")
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 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 cfg.categorie[categoria] == nil then
        errori[#errori+1] = 'Categoria non riconosciuta o non esistente'
    else
        local piatto_cat = cfg.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 = ''
                        if cfg.regioni_fuori_standard[regione] then
                            new_cat = piatto_cat.paese_cat .. cfg.regioni_fuori_standard[regione]
                        else
                            new_cat = piatto_cat.paese_cat .. frame:expandTemplate{ title = 'AggNaz', args = { piatto_cat.prefix , regione }}
                        end
                        if mw.title.new('Categoria:' .. 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+1] = 'Piatti internazionali'
                else
                    new_categories[#new_categories+1] = piatto_cat.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 cfg.riconoscimenti[riconoscimento] then
            new_categories[#new_categories+1] = cfg.riconoscimenti[riconoscimento]
        elseif riconoscimento == 'PAT' then
            if #regioni > 0 then
                for _, regione in ipairs(regioni) do
                    if cfg.prefissi_regioni[regione] then
                        new_categories[#new_categories+1] = 'Prodotti agroalimentari tradizionali' .. cfg.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