<!-- NON MODIFICATE DIRETTAMENTE QUESTA PAGINA - GRAZIE -->
--[[
<noinclude>__NOTOC__{{Torna a|1271}}{{ListaBio|bio=12|data=24 mag 2019|progetto=biografie}}</noinclude>
* Modulo per implementare le funzionalità di Bio
{{Lista persone per anno
* Traduce in lua:
|titolo=Nati nel 1271
* Template:Bio
|voci=12
* Template:Bio/categorie_attività
|testo=
* Template:Bio/cat
{{Div col}}
* Template:Bio/catnatimorti
*[[Enrico II di Cipro]] († [[1324]])
* Template:Bio/epoca
*[[Dino Frescobaldi]], poeta italiano
* Template:Bio/articolo
*[[Gong Di]] († [[1323]])
* Template:Bio/articolo_F
*[[Michail Jaroslavič]] († [[1318]])
* Template:Bio/link attività
*[[Teodoro III d'Armenia]] († [[1298]])
* Template:Bio/link nazionalità
*[[Varnerio di Oberwesel]], tedesco († [[1287]])
* Template:Bio/plurale_attività
*[[4 gennaio]] - [[Isabella di Aragona (1271-1336)|Isabella di Aragona]], sovrana portoghese († [[1336]])
* Template:Bio/plurale_nazionalità
*[[13 marzo]] - [[Guta d'Asburgo]] († [[1297]])
* Template:Bio/warning_A
*[[14 marzo]] - [[Stefano I di Baviera]] († [[1310]])
* Template:Bio/warning_N
*[[8 settembre]] - [[Carlo Martello d'Angiò]], sovrano († [[1295]])
* Template:Primo del mese
*[[17 settembre]] - [[Venceslao II di Boemia]] († [[1305]])
*
*[[5 novembre]] - [[Ghazan Khan]], mongolo († [[1304]])
* utilizza:
{{Div col end}}}}<noinclude>
* Template:Avviso
{{Portale|biografie}}
]]
[[Categoria:Liste di nati per anno| 3271]]
[[Categoria:Nati nel 1271| ]]
local p = {} -- per l'esportazione delle funzioni del modulo
</noinclude>
local args -- argomenti passati al template
local textTable = {} -- table per contenere la risposta da ritornare
local SPACE = " " -- HTML Entity Code per lo spazio
-- configurazione
local cfg = mw.loadData("Modulo:Sandbox/Rotpunkt/Bio/Configurazione")
local link_attivita = mw.loadData("Modulo:Sandbox/Rotpunkt/Bio/Link attività")
local link_nazionalita = mw.loadData("Modulo:Sandbox/Rotpunkt/Bio/Link nazionalità")
local plurale_attivita = mw.loadData("Modulo:Sandbox/Rotpunkt/Bio/Plurale attività")
local plurale_nazionalita = mw.loadData("Modulo:Sandbox/Rotpunkt/Bio/Plurale nazionalità")
-------------------------------------------------------------------------------
-- Funzioni di utilità
-------------------------------------------------------------------------------
-- aggiunge testo alla risposta, svolge anche la funzione di concatenatore
local function dumpText(...)
local arg = {...}
for _, val in ipairs(arg) do
textTable[#textTable + 1] = val
end
end
-- aggiunge una categoria alla risposta
local function dumpCategory(category)
dumpText("[[Categoria:", category, "]]")
end
-- aggiunge un wlink alla risposta, label è opzionale per i piped link
local function dumpWlink(page, label)
-- se page è nil chiudo comunque le parentesi
page = page or ""
if label then
dumpText("[[", page, "|", label, "]]")
else
dumpText("[[", page, "]]")
end
end
-- aggiunge una immagine alla risposta
local function dumpImage(name, size, caption)
dumpText("[[File:", name, "|thumb|", size, "px|", caption, "]]")
end
-- aggiunge l'output del [[Template:Avviso]] e una categoria di warning alla risposta
local function dumpAvviso(tipo, immagine, immagine_a_destra, testo)
local text
text = mw.getCurrentFrame():expandTemplate {
title = "Avviso",
args = {
["tipo"] = tipo,
["immagine"] = immagine,
["immagine a destra"] = immagine_a_destra,
["testo"] = testo
}
}
dumpText(text)
dumpCategory(cfg.categorie["warning"])
end
-- Traduzione in lua del [[Template:Primo del mese]]
-- se date inizia con "1 " o "1°" ritorna una nuova data che inizia per "1º", altrimenti date
local function fixFirstOfMonth(date)
date = date:gsub("^1%s", "1º ")
date = date:gsub("^1\194\176", "1º")
return date
end
-- ritorna "ed" se nextWord inizia con "e", altrimenti "e"
local function getEufonica(nextWord)
return nextWord:sub(1, 1) == "e" and "ed" or "e"
end
-------------------------------------------------------------------------------
-- Bio
-------------------------------------------------------------------------------
-- Traduzione in lua del [[Template:Bio/articolo]]
local function getArticleMan(attivita)
if cfg.articoli_maschili["uno"][attivita] then
return "uno"
elseif cfg.articoli_maschili["una"][attivita] then
return "una"
end
return "un"
end
-- Traduzione in lua del [[Template:Bio/articolo_F]]
-- aggiunge anche uno spazio nel caso non usi l'apostrofo
local function getArticleWoman(attivita)
if attivita and attivita:match("^[aeiou]") then
return "un'"
elseif cfg.articoli_femminili["un"][attivita] then
return "un" .. SPACE
end
return "una" .. SPACE
end
-- Traduzione in lua del [[Template:Bio/cat]]
-- A supporto di addAttivitaCategories, aggiunge la categoria (eventualmente con l'epoca)
local function addCat(catname, epoca1, epoca2)
local added = false
if epoca1 and mw.title.new("Categoria:" .. catname .. " " .. epoca1).exists then
dumpCategory(catname .. " " .. epoca1)
added = true
end
if epoca2 and mw.title.new("Categoria:" .. catname .. " " .. epoca2).exists then
dumpCategory(catname .. " " .. epoca2)
added = true
end
if not added then
-- se non è stata aggiunta la categoria per epoca1 e epoca2
-- aggiunge la cat. semplice, e.g. "Scrittori italiani"
dumpCategory(catname)
end
end
-- A supporto di addAttivitaCategories, ritorna il plurale dell'attività
-- se non esiste il plurale aggiunge alla risposta un warning e ritorna nil
local function getPluralA(attivita)
local plural
plural = plurale_attivita[attivita]
if not plural then
dumpAvviso(cfg.warningA.tipo, cfg.warningA.immagine, cfg.warningA.immagine_a_destra,
cfg.warningA.testo .. cfg.warningA.testo2a:gsub("$1", attivita) .. cfg.warningA.testo3)
return nil
end
return plural
end
-- A supporto di addAttivitaCategories, ritorna il plurale della nazionalità
-- se non esiste il plurale aggiunge alla risposta un warning e ritorna nil
local function getPluralN(nazionalita)
local plural
plural = plurale_nazionalita[nazionalita]
if not plural then
dumpAvviso(cfg.warningN.tipo, cfg.warningN.immagine, cfg.warningN.immagine_a_destra,
cfg.warningN.testo .. cfg.warningN.testo2a:gsub("$1", nazionalita) .. cfg.warningN.testo3)
return nil
end
return plural
end
-- Traduzione in lua del [[Template:Bio/categorie attività]] con un minimo di refactoring
-- Crea le categorie: Attività nazionalità [del XYZ secolo]
local function addAttivitaCategories()
local plurals = {} -- contiene la versione plurale dei parametri
local epoca1, epoca2
-- controllo argomenti necessari al plurale per le categorie
-- (nello stesso ordine in cui avvenivano in [[Template:Bio/categorie attività]])
if args["Nazionalità"] then
plurals["Nazionalità"] = getPluralN(args["Nazionalità"])
else
dumpAvviso(cfg.warningN.tipo, cfg.warningN.immagine, cfg.warningN.immagine_a_destra,
cfg.warningN.testo .. cfg.warningN.testo2b .. cfg.warningN.testo3)
end
if args["NazionalitàNaturalizzato"] then
plurals["NazionalitàNaturalizzato"] = getPluralN(args["NazionalitàNaturalizzato"])
end
if args["Cittadinanza"] then
plurals["Cittadinanza"] = getPluralN(args["Cittadinanza"])
end
if args["Attività"] then
plurals["Attività"] = getPluralA(args["Attività"])
else
dumpAvviso(cfg.warningA.tipo, cfg.warningA.immagine, cfg.warningA.immagine_a_destra,
cfg.warningA.testo .. cfg.warningA.testo2b .. cfg.warningA.testo3)
end
if args["Attività2"] then
plurals["Attività2"] = getPluralA(args["Attività2"])
end
if args["Attività3"] then
plurals["Attività3"] = getPluralA(args["Attività3"])
end
-- creazione categorie
epoca1 = args["Epoca"] and cfg.epoche[args["Epoca"]]
epoca2 = args["Epoca2"] and cfg.epoche[args["Epoca2"]]
for _, val in ipairs({ "Attività", "Attività2", "Attività3" }) do
if plurals[val] then
if plurals["Nazionalità"] then
addCat(plurals[val] .. " " .. plurals["Nazionalità"], epoca1, epoca2)
end
if plurals["NazionalitàNaturalizzato"] then
addCat(plurals[val] .. " " .. plurals["NazionalitàNaturalizzato"], epoca1, epoca2)
end
if plurals["Cittadinanza"] then
addCat(plurals[val] .. " " .. plurals["Cittadinanza"], epoca1, epoca2)
end
end
end
end
-- Traduzione in lua del [[Template:Bio/catnatimorti]]
-- Crea le categorie: Nati/Morti nell'anno/giorno/luogo
local function addNatiMortiCategories()
local cat1, cat2
if args["AnnoNascita"] then
cat1 = "Nati nel " .. args["AnnoNascita"]
cat2 = "Nati nell'" .. args["AnnoNascita"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
end
if args["AnnoMorte"] then
cat1 = "Morti nel " .. args["AnnoMorte"]
cat2 = "Morti nell'" .. args["AnnoMorte"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
else
dumpCategory("Persone viventi")
end
if args["GiornoMeseNascita"] then
cat1 = "Nati il " .. fixFirstOfMonth(args["GiornoMeseNascita"])
cat2 = "Nati l'" .. args["GiornoMeseNascita"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
end
if args["GiornoMeseMorte"] then
cat1 = "Morti il " .. fixFirstOfMonth(args["GiornoMeseMorte"])
cat2 = "Morti l'" .. args["GiornoMeseMorte"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
end
if args["LuogoNascitaLink"] then
cat1 = "Nati a " .. args["LuogoNascitaLink"]
cat2 = "Nati ad " .. args["LuogoNascitaLink"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
elseif args["LuogoNascita"] then
cat1 = "Nati a " .. args["LuogoNascita"]
cat2 = "Nati ad " .. args["LuogoNascita"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
end
if args["LuogoMorteLink"] then
cat1 = "Morti a " .. args["LuogoMorteLink"]
cat2 = "Morti ad " .. args["LuogoMorteLink"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
elseif args["LuogoMorte"] then
cat1 = "Morti a " .. args["LuogoMorte"]
cat2 = "Morti ad " .. args["LuogoMorte"]
if mw.title.new("Categoria:" .. cat1).exists then
dumpCategory(cat1)
elseif mw.title.new("Categoria:" .. cat2).exists then
dumpCategory(cat2)
end
end
end
-- traduzione in lua di [[Template:Bio]]
local function _bio()
local size, caption
if mw.title.getCurrentTitle().namespace == 0 and args["Categorie"] ~= "no" then
addAttivitaCategories()
addNatiMortiCategories()
dumpCategory(cfg.categorie["bot"])
end
if args["Immagine"] then
size = args["DimImmagine"] or ""
if args["Didascalia"] then
caption = args["Didascalia"]
else
caption = args["Nome"] .. " " .. args["Cognome"]
end
if args["Didascalia2"] then
caption = caption .. "<hr/>" .. args["Didascalia2"]
end
dumpImage(args["Immagine"], size, caption)
elseif args["Didascalia2"] then
-- parentesi () extra per non ritornare anche il gsub.count
dumpText( (cfg.didascalia2:gsub("$1", args["Didascalia2"])) )
end
if args["Titolo"] then
dumpText(args["Titolo"], SPACE)
end
dumpText("'''", args["Nome"])
if args["Cognome"] then
dumpText(SPACE, args["Cognome"])
end
dumpText("'''")
if args["PostCognomeVirgola"] then
dumpText(",", SPACE, args["PostCognomeVirgola"])
end
if args["PostCognome"] then
dumpText(SPACE, args["PostCognome"])
end
-- si apre la parentesi
dumpText(SPACE, "(")
if args["PreData"] then
dumpText(args["PreData"], SPACE)
end
if args["LuogoNascita"] then
if args["LuogoNascitaLink"] then
dumpWlink(args["LuogoNascitaLink"])
else
dumpWlink(args["LuogoNascita"])
end
if args["LuogoNascitaAlt"] then
dumpText(SPACE, args["LuogoNascitaAlt"])
end
dumpText(",", SPACE)
end
if args["GiornoMeseNascita"] then
if mw.title.new(args["GiornoMeseNascita"]).exists then
dumpWlink(args["GiornoMeseNascita"])
else
dumpText(args["GiornoMeseNascita"])
end
dumpText(SPACE)
end
if args["AnnoNascita"] then
if mw.title.new(args["AnnoNascita"]).exists then
dumpWlink(args["AnnoNascita"])
else
dumpText(args["AnnoNascita"])
end
else
dumpText("...")
end
if args["NoteNascita"] then
dumpText(args["NoteNascita"])
end
if args["AnnoMorte"] then
dumpText(SPACE, "–", SPACE)
if args["LuogoMorte"] then
if args["LuogoMorteLink"] then
dumpWlink(args["LuogoMorteLink"], args["LuogoMorte"])
else
dumpWlink(args["LuogoMorte"])
end
if args["LuogoMorteAlt"] then
dumpText(SPACE, args["LuogoMorteAlt"])
end
dumpText(",", SPACE)
end
if args["GiornoMeseMorte"] then
if mw.title.new(args["GiornoMeseMorte"]).exists then
dumpWlink(args["GiornoMeseMorte"])
else
dumpText(args["GiornoMeseMorte"])
end
dumpText(SPACE)
end
if args["AnnoMorte"] then
if args["AnnoMorte"] == "?" then
dumpText("...")
else
if mw.title.new(args["AnnoMorte"]).exists then
dumpWlink(args["AnnoMorte"])
else
dumpText(args["AnnoMorte"])
end
end
end
end
if args["NoteMorte"] then
dumpText(args["NoteMorte"])
end
-- si chiude la parentesi
dumpText(")")
if args["PostCognomeVirgola"] then
dumpText(",", SPACE)
end
if args["FineIncipit"] ~= "," then
dumpText(SPACE)
end
if args["FineIncipit"] and args["FineIncipit"] ~= "," then
dumpText(args["FineIncipit"])
else
if args["PreAttività"] then
dumpText(args["PreAttività"], SPACE)
else
dumpText("è", SPACE)
if args["AnnoMorte"] then
if args["Sesso"] == "M" then
dumpText("stato", SPACE)
else
dumpText("stata", SPACE)
end
end
if args["Sesso"] == "M" then
dumpText(getArticleMan(args["Attività"]), SPACE)
else
dumpText(getArticleWoman(args["Attività"]))
end
end
dumpWlink(link_attivita[args["Attività"]] or args["Attività"], args["Attività"])
if args["Attività2"] then
if args["Attività3"] or args["AttivitàAltre"] then
dumpText(",")
else
dumpText(SPACE, getEufonica(args["Attività2"]))
end
dumpText(SPACE)
dumpWlink(link_attivita[args["Attività2"]] or args["Attività2"], args["Attività2"])
end
if args["Attività3"] then
if args["AttivitàAltre"] then
dumpText(",")
else
dumpText(SPACE, getEufonica(args["Attività3"]))
end
dumpText(SPACE)
dumpWlink(link_attivita[args["Attività3"]] or args["Attività3"], args["Attività3"])
end
if args["AttivitàAltre"] then
dumpText(args["AttivitàAltre"])
end
dumpText(SPACE)
dumpWlink(link_nazionalita[args["Nazionalità"]] or args["Nazionalità"], args["Nazionalità"])
if args["Cittadinanza"] then
dumpText(SPACE, "con cittadinanza", SPACE)
dumpWlink(link_nazionalita[args["Cittadinanza"]] or args["Cittadinanza"], args["Cittadinanza"])
end
if args["NazionalitàNaturalizzato"] then
dumpText(SPACE)
dumpWlink("Naturalizzazione", (args["Sesso"] == "F" and "naturalizzata" or "naturalizzato"))
dumpText(SPACE)
dumpWlink(link_nazionalita[args["NazionalitàNaturalizzato"]] or args["NazionalitàNaturalizzato"], args["NazionalitàNaturalizzato"])
end
if args["PostNazionalità"] then
dumpText(args["PostNazionalità"])
end
end
if args["Punto"] ~= "no" then
if args["FineIncipit"] ~= "e" and
args["FineIncipit"] ~= "ed" and
args["FineIncipit"] ~= ",= " then
dumpText(".")
end
end
return table.concat(textTable)
end
function p.bio(frame)
local origArgs
-- Se chiamata mediante #invoke, usa gli argomenti passati al template invocante.
-- Altrimenti a scopo di test assume che gli argomenti siano passati direttamente
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
args = {}
for k, v in pairs(origArgs) do
if v ~= "" then
args[k] = v
end
end
return _bio()
end
return p
|