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)
        local regioni = get_list(args, 'regione', 15)
        local escludi_paesi = {}
        -- gestisco la categorizzazione per regioni
        if piatto_cat.regioni then
            for _, regione in ipairs(regioni) do
                local new_cat = ''
                if cfg.regioni[regione] then
                    if cfg.regioni[regione].use_preposizione ~= '' then
                        new_cat = piatto_cat.paese_cat .. cfg.regioni[regione].preposizine .. regione
                    else
                        new_cat = piatto_cat.paese_cat .. cfg.regioni[regione][piatto_cat.prefix]
                    end
                end
                if mw.title.new('Categoria:' .. new_cat).exists then
                    new_categories[#new_categories+1] = new_cat
                    escludi_paesi[#escludi_paesi+1] = cfg.regioni[regione].paese
                end
            end
        end
        for _,paese in ipairs(paesi) do
            -- se non è già inserita in una categoria regionale per quel paese creo la categoria per paese
            if not escludi_paesi[paese] 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.upper(riconoscimento)
        if cfg.riconoscimenti[riconoscimento] then
            if #paesi == 1 and cfg.config.riconoscimenti_nazionalita[paesi[1]] then
                new_categorie[#new_categories+1] =   cfg.riconoscimenti[riconoscimento] .. cfg.config.riconoscimenti_nazionalita[paesi[1]]
            else
                new_categories[#new_categories+1] = cfg.riconoscimenti[riconoscimento]
            end
        elseif riconoscimento == 'PAT' then
            local regione_found = false
            if #regioni > 0 then
                for _, regione in ipairs(regioni) do
                    if cfg.regioni[regione] and cfg.regioni[regione].paese == 'Italia' then
                        new_categories[#new_categories+1] = 'Prodotti agroalimentari tradizionali' .. cfg.regione[regione].preposizione .. regione
                        regione_found = true
                    end
                end
            end
            if not regione_found then
                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 = {}
    if args.debug then
        for _,cat in ipairs(new_categories) do
            wrapped[#wrapped+1] =  '[[:Categoria:' .. cat .. ']]'
        end
    else
        for _,cat in ipairs(new_categories) do
            wrapped[#wrapped+1] =  '[[Categoria:' .. cat .. ']]'
        end
    end
    return table.concat(wrapped)
end

return p