Modulo:Trattato
Vai alla navigazione
Vai alla ricerca
local Date = require('Modulo:Data').Date
local getArgs = require('Module:Arguments').getArgs
local numero_romano = require('Module:Numero romano').main
local get_nome = require( "Modulo:Lingue").get_nome
local p = {}
local function cat_lingue(args)
local function add_lingua(lingua, lingue)
local nome_lingua,_ = get_nome(lingua)
if nome_lingua ~= '' then
lingue[#lingue+1] = mw.ustring.format("Categoria:Trattati internazionali in %s", nome_lingua)
return true
end
return false
end
local lingue = {}
local pos = 1
local lingua_sconosciuta = false
if args.Lingua then
if not add_lingua(args.Lingua, lingue) then
lingua_sconosciuta = true
end
pos = 2
end
while true do
local lingua = args['Lingua' .. tostring(pos)]
if lingua then
if not add_lingua(lingua, lingue) then
lingua_sconosciuta = true
end
else
break
end
pos = pos +1
end
if lingua_sconosciuta then
lingue[#lingue+1] = "Categoria:Errori di compilazione del template Trattato"
end
return lingue
end
local function cat_anno(args)
local data_firma = args['Data firma']
if not data_firma then return '' end
data_firma = mw.ustring.gsub(data_firma, '%[', '')
data_firma = mw.ustring.gsub(data_firma, '%]', '')
local avanti_cristo = 0
data_firma, avanti_cristo = mw.ustring.gsub(data_firma, " ?a%.C%.$", "")
local _, _, anno_firma = mw.ustring.find(data_firma, "(%d+)$")
if anno_firma == nil then return '' end
anno_firma = tonumber(anno_firma)
local categoria_start = '[[Categoria:Trattati internazionali '
local preposizione = "del "
if (avanti_cristo == 0 and anno_firma < 1800) or avanti_cristo == 1 then
local century = numero_romano({math.floor( (anno_firma+99)/100 )})
if century == "VIII" or century == "XI" then preposizione = "dell'" end
if avanti_cristo == 1 then
return mw.ustring.format("Categoria:Trattati internazionali %s%s secolo a.C.", preposizione, century)
else
return mw.ustring.format("Categoria:Trattati internazionali %s%s secolo", preposizione, century)
end
end
local decennio_firma = math.floor(anno_firma/10)*10
return mw.ustring.format("Categoria:Trattati internazionali degli anni %d", decennio_firma)
end
function p.categorie(frame)
local args = getArgs(frame, {wrappers='Template:Trattato'})
local current_namespace = mw.title.getCurrentTitle().namespace
local debug = args.debug or false
-- disattiva la categorizzazione automatica fuori da ns0
if current_namespace ~= 0 and not debug then return '' end
local forza_categorie = args['forza categorie']
if forza_categorie then return forza_categorie end
local cat_list = cat_lingue(args)
local cat_anno = cat_anno(args)
if cat_anno then
cat_list[#cat_list+1] = cat_anno
end
if cat_anno == '' then return '' end
for pos,categoria in ipairs(cat_list) do
if debug then
cat_list[pos] = mw.ustring.format("[[:%s]]", categoria)
else
cat_list[pos] = mw.ustring.format("[[%s]]", categoria)
end
end
return table.concat(cat_list, '')
end
return p