La documentazione per questo modulo può essere creata in Modulo:Gastronomije/man
local getArgs = require('Module:Arguments').getArgs local cfg = mw.loadData("Modulo:Gastronomije/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 local debug = args['debug'] local debug_values = {} -- non categorizzare se in ns:0 if current_namespace ~= 0 and not debug then return '' end local errori = {} local new_categories = {} local regioni = {} local paesi = {} local categoria = args['categoria'] or '' categoria = cfg.categorie_alias[categoria] or categoria local piatto_cat = cfg.categorie[categoria] local paesi = get_list(args, 'paese', 5) local regioni = get_list(args, 'regione', 15) local province = get_list(args, 'provincia', 5) -- Creo categorie in base alla categoria del piatto if piatto_cat ~= nil then -- categoria base del piatto if piatto_cat.cat_base ~= '' then new_categories[#new_categories+1] = piatto_cat.cat_base end if piatto_cat.paese_cat ~= '' then local escludi_paesi = {} local escludi_regioni = {} -- prima parte categoria per province (o comunque suddivisione di regione) for _, provincia in ipairs(province) do if cfg.province[provincia] then new_cat_provincia = 'Cucina ' .. cfg.province[provincia].categoria if mw.title.new('Categoria:' .. new_cat_provincia).exists then -- Non la cat_base è diversa da 'Cucina ' la categoria regionale/nazionale non è parente di 'Cucina ' if piatto_cat.paese_cat == 'Cucina ' then escludi_regioni[cfg.province[provincia].regione] = true escludi_paesi[cfg.regioni[cfg.province[provincia].regione].paese] = true end new_categories[#new_categories+1] = new_cat_provincia end end end -- seconda parte categoria per regioni for _,regione in ipairs(regioni) do if cfg.regioni[regione] and not escludi_regioni[regione] then local new_cat = '' if cfg.regioni[regione].forza_preposizione then new_cat = piatto_cat.paese_cat .. cfg.regioni[regione].preposizione .. regione else new_cat = piatto_cat.paese_cat .. cfg.regioni[regione][piatto_cat.prefix] end if mw.title.new('Categoria:' .. new_cat).exists then new_categories[#new_categories+1] = new_cat escludi_paesi[cfg.regioni[regione].paese] = true end end end -- terza parte categoria per paese for _,paese in ipairs(paesi) do if not escludi_paesi[paese] then if paese == 'Internazionale' then if piatto_cat.internazionale then new_categories[#new_categories+1] = 'Piatti internazionali' end else new_categories[#new_categories+1] = piatto_cat.paese_cat .. frame:expandTemplate{ title = 'AggNaz', args = { piatto_cat.prefix , paese }} end 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.riconoscimenti_nazionalita[paesi[1]] and riconoscimento ~= 'IGP-PTN' and riconoscimento ~= 'DOP-PTN' then new_categories[#new_categories+1] = cfg.riconoscimenti[riconoscimento] .. cfg.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.regioni[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 debug and 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 Gastronomije" end local wrapped = {} if debug then for _,cat in ipairs(new_categories) do wrapped[#wrapped+1] = '[[:Categoria:' .. cat .. '|'.. cat .. ']] ' end wrapped[#wrapped+1] = '
' for _, debug_value in ipairs(debug_values) do wrapped[#wrapped+1] = debug_value end else for _,cat in ipairs(new_categories) do wrapped[#wrapped+1] = '[[Categoria:' .. cat .. ']]' end end return table.concat(wrapped) end function p.categoria(frame) local args = getArgs(frame) local categoria = args['categoria'] or '' categoria = cfg.categorie_alias[categoria] or categoria local piatto_cat = cfg.categorie[categoria] if piatto_cat ~= nil then return piatto_cat.voce end local ret = 'Categoria non riconosciuta' if mw.title.getCurrentTitle().namespace == 0 then ret = ret .. '[[Categoria:Errori di compilazione del template Gastronomije]]' end return ret end -- Ritorna la lista di categorie function p.list_categorie(frame) local tableNode = mw.html.create("table"):addClass('wikitable table-responsive '):addClass('sortable') tableNode:tag('tr') :tag('th'):wikitext('Categoria'):done() :tag('th'):wikitext('Alias'):done() :tag('th'):wikitext('Voce'):done() local cat_list = {} for cat, _ in pairs(cfg.categorie) do cat_list[#cat_list+1] = cat end table.sort(cat) for _,cat in ipairs(cat_list) do local table_row = tableNode:tag('tr') table_row:tag('td'):wikitext(cat) local alias_cat = {} for k,v in pairs(cfg.action_alias) do if v == cat then alias_cat[#alias_cat+1] = k end end table_row:tag('td'):wikitext(table.concat(alias_cat, ', ')) table_row:tag('td'):wikitext(cfg.categorie[cat].voce) end return tostring(tableNode) end function p.list_province(frame) local tableNode = mw.html.create("table"):addClass('wikitable table-responsive '):addClass('sortable') tableNode:tag('tr') :tag('th'):wikitext('Provincia'):done() :tag('th'):wikitext('Regione'):done() :tag('th'):wikitext('Categoria'):done() local prov_list = {} for cat, _ in pairs(cfg.province) do prov_list[#prov_list+1] = cat end table.sort(prov_list) for _,prov in ipairs(prov_list) do local table_row = tableNode:tag('tr') table_row:tag('td'):wikitext(prov) table_row:tag('td'):wikitext(cfg.province[prov].regione) table_row:tag('td'):wikitext('[[:Categoria:Cucina ' .. cfg.province[prov].categoria .. '|Cucina ' .. cfg.province[prov].categoria .. ']]') end return tostring(tableNode) end return p