Modulo:Bio/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
didascalia dal parametro Pseudonimo quando la voce è intitolata allo pseudonimo
rimosse funzioni Wikidata inutilizzate, sostituita getEntity, commenti
Riga 8:
require("Module:No globals")
 
-- Variabili globali
local args -- argomenti passati al template
local errorTable = {} -- table per contenere gli errori
local attivitaParams = { "Attività", "Attività2", "Attività3" }
local nazionalitaParams = { "Nazionalità", "NazionalitàNaturalizzato", "Cittadinanza" }
local cfg = mw.loadData("Modulo:Bio/Configurazione")
local mString = require("Modulo:String")
local mWikidata = require("Modulo:Wikidata")
local cfg = mw.loadData("Modulo:Bio/Configurazione")
local args -- argomenti passati al template
local args
local errorTable = {} -- table per contenere gli errori
local errorTable = {}
-- nomi dei parametri per l'attività e la nazionalità
local attivitaParams = { "Attività", "Attività2", "Attività3" }
local nazionalitaParams = { "Nazionalità", "NazionalitàNaturalizzato", "Cittadinanza" }
 
-- =============================================================================
-------------------------------------------------------------------------------
-- Funzioni di utilità
-- =============================================================================
-------------------------------------------------------------------------------
 
-- Aggiunge l'output del [[Template:Avviso]] e una categoria di warning a errorTable
Line 53 ⟶ 55:
end
 
-- Se date inizia con "1 " o "1°" ritornarestituisce una nuova data che inizia per "1º", altrimenti date
local function fixFirstOfMonth(date)
date = date:gsub("^1%s", "1º ")
Line 60 ⟶ 62:
end
 
-- RitornaRestituisce "ed" se nextWord inizia con "e", altrimenti "e"
local function getEufonica(nextWord)
return nextWord:sub(1, 1) == "e" and "ed" or "e"
end
 
-- RitornaRestituisce true se uno degli argomenti del modulo specificati (params) ha almeno
-- un valore tra quelli indicati (values), altrimenti false
local function argsSearch(params, values)
Line 72 ⟶ 74:
for _, value in ipairs(values) do
if args[param] == value then
ret =return true
break
end
end
end
return retfalse
end
 
-- Parsifica un TimeValue di Wikidata e ne ritorna "giornomese, anno"
local function parseWikidataTimeValue(property)
local timestamp, precision, year, month, day, daymonth
 
timestamp = mWikidata._getProperty( { property, n = 1, formatting = "raw" } )
precision = mWikidata._getProperty( { property, n = 1, time = "precision" } )
if timestamp and precision then
year, month, day = timestamp:match("(%d+)%-(%d%d)%-(%d%d).+")
if precision == 11 then
month = mw.getLanguage("it"):formatDate("F", tonumber(year) .. "-" .. month .. "-" .. day)
daymonth = tonumber(day) .. " " .. month
end
if precision == 9 or precision == 11 then
year = tonumber(year) .. (timestamp:sub(1, 1) == "-" and " a.C." or "")
end
end
 
return daymonth, year
end
 
-- Cerca alcuni parametri se mancanti su Wikidata
local function checkWikidata()
local daymonth, year
-- GiornoMeseNascita e AnnoNascita
if not args.GiornoMeseNascita or not args.AnnoNascita then
daymonth, year = parseWikidataTimeValue("P569")
args.GiornoMeseNascita = args.GiornoMeseNascita or daymonth
args.AnnoNascita = args.AnnoNascita or year
end
-- GiornoMeseMorte e AnnoMorte
if not args.GiornoMeseMorte or not args.AnnoMorte then
daymonth, year = parseWikidataTimeValue("P570")
args.GiornoMeseMorte = args.GiornoMeseMorte or daymonth
args.AnnoMorte = args.AnnoMorte or year
end
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- classe ArgsParser
-- =============================================================================
-------------------------------------------------------------------------------
 
local ArgsParser = {}
Line 130 ⟶ 94:
 
-- Parsifica i parametri passati al modulo e aggiunge eventuali categorie di errore.
-- RitornaRestituisce i parametri conosciuti scartando quelli valorizzati a stringa vuota.
function ArgsParser:parse(origArgs)
local paramcfg = require("Modulo:Bio/Parametri")
Line 162 ⟶ 126:
 
-- Utilizzata da parse per controllare il valore di un parametro.
-- RitornaRestituisce true se il valore è valido altrimenti false.
function ArgsParser:_checkParamValue(value, valueTest, otherArgs)
local ret = true
Line 175 ⟶ 139:
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- classe CategoryManager
-- =============================================================================
-------------------------------------------------------------------------------
 
local CategoryManager = {}
Line 249 ⟶ 213:
 
-- Aggiunge la categoria se la pagina non ha un elemento Wikidata collegato,
-- oppure è senza proprietà o non ha la proprietà indicata.
function CategoryManager:_addCategoryWikidata(propertypropertyId, cat)
if not mWikidata._getProperty({ propertyId }) then
local entity = mw.wikibase.getEntity()
if not entity or not entity.claims or not entity.claims[property] then
self:_addCategory(cat)
end
Line 261 ⟶ 224:
function CategoryManager:_addCategoriesWikidata()
-- Per Speciale:LinkPermanente/80165551#Proposta_categoria_di_servizio_biografie_con_data_di_morte_su_Wikidata
if not args.AnnoMorte and mWikidata._getProperty( { "P570" } ) then
self:_addCategory("Voci con template Bio senza AnnoMorte ma con data di morte su Wikidata")
end
if mWikidata._instanceOf( { "Q5" } ) then
-- Per Speciale:LinkPermanente/66620402#Add_this_text_to_Template:Bio
if args["Nazionalità"] then
Line 318 ⟶ 281:
end
 
-- RitornaRestituisce il plurale dell'attività o nil se non trovato (con eventuale warning)
function CategoryManager:_getPluralAttivita(attivita)
local plural
Line 331 ⟶ 294:
end
 
-- RitornaRestituisce il plurale della nazionalità o nil se non trovato (con eventuale warning)
function CategoryManager:_getPluralNazionalita(nazionalita)
local plural
Line 344 ⟶ 307:
end
 
-- RitornaRestituisce il plurale dei parametri necessari per le categorie
function CategoryManager:_getPluralsAttivitaNazionalita()
local plurals = {}
Line 405 ⟶ 368:
end
 
-- Utilizzata da addNatiMorti, ritornarestituisce il nome della categoria
-- se titleLink o title sono nella lista di eccezioni Cat luoghi, altrimenti nil
function CategoryManager:_getCatLuoghi(titleLink, title, catPrefix)
Line 517 ⟶ 480:
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- classe Incipit
-- =============================================================================
-------------------------------------------------------------------------------
 
local Incipit = {}
Line 597 ⟶ 560:
 
 
-- RitornaRestituisce true se text (AttivitàAltre, PostNazionalità, PostCognome e FineIncipit) necessita di uno spazio iniziale
function Incipit:_needSpace(text)
return mw.ustring.match(mw.ustring.sub(text, 1, 1), "%w") ~= nil or
Line 656 ⟶ 619:
self:_addImage(args.Immagine, args.DimImmagine, caption)
elseif args.Didascalia2 then
-- parentesi () extra per non ritornarerestituire anche il gsub.count
self:_addText( (cfg.didascalia2:gsub("$1", args.Didascalia2)) )
end
Line 875 ⟶ 838:
end
 
-- =============================================================================
-------------------------------------------------------------------------------
-- Funzioni APIesportate
-- =============================================================================
-------------------------------------------------------------------------------
 
local p = {}
Line 895 ⟶ 858:
-- come avveniva nel vecchio template.
args = ArgsParser:new():parse(frame:getParent().args)
-- cerca alcuni parametri se mancanti su Wikidata
if cfg.wikidata then
checkWikidata()
end
local catTable = CategoryManager:new():getCategories()