Modulo:Eruçión
Câa
La documentazione per questo modulo può essere creata in Modulo:Eruçión/man
--[[
* Modulo che ritorna le informazioni presenti su Wikidata riguardo alla eruzione
* più recente di un vulcano, come l'indice VEI o la data di inizio dell'eruzione.
]]
require('Modulo:No globals')
local mWikidata = require('Modulo:Wikidata')
-- Q-number validi come "istanza di" per un vulcano
local volcanoIds = { 'Q8072', 'Q159954', 'Q169358', 'Q190869', 'Q212057', 'Q332614',
'Q674775', 'Q1197120', 'Q1200524', 'Q1491559', 'Q17171019' }
-- Q-number validi come "istanza di" per una eruzione
local eruptionIds = { 'Q7692360', 'Q611880', 'Q747501', 'Q1060842', 'Q1199175',
'Q1639789', 'Q2546109', 'Q2703194', 'Q5943937' }
-- Item da correggere su Wikidata
local trackingCategory = '[[Categoria:Vulcani con proprietà P793 errata su Wikidata]]'
-- Numero massimo di item da analizzare per evento chiave (P793)
local maxItemsP793 = 50
local p = {}
local function getLatestEruption(from)
local latestEruption, ids, cat
volcanoIds.from = from
if not mWikidata._instanceOf(volcanoIds) then
return nil
end
ids = mWikidata._getProperty( { 'P793', formatting = 'raw', from = from }, true ) or {}
if #ids > maxItemsP793 then
return nil
end
for _, entityId in ipairs(ids) do
if entityId == 'Q7692360' then
cat = trackingCategory
else
eruptionIds.from = entityId
if mWikidata._instanceOf(eruptionIds) then
local eruption = {
rawStart = mWikidata._getProperty( { 'P580', n = 1, formatting = 'raw', from = entityId } ),
start = mWikidata._getProperty( { 'P580', n = 1, from = entityId } ),
VEI = mWikidata._getProperty( { 'P1903', n = 1, formatting = 'raw', from = entityId } )
}
if eruption.rawStart and (not latestEruption or eruption.rawStart > latestEruption.rawStart) then
latestEruption = eruption
end
end
end
end
return latestEruption, cat
end
function p.data(frame)
local latestEruption, cat = getLatestEruption(frame.args[1])
return (latestEruption and latestEruption.start or '') .. (cat or '')
end
function p.VEI(frame)
local latestEruption, cat = getLatestEruption(frame.args[1])
return ((latestEruption and latestEruption.VEI) and latestEruption.VEI or '') .. (cat or '')
end
return p