Modulo:Fuso orario/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
aggiunto filtro su P518
Riga 74:
end
 
-- Se i claims hanno un qualifier P518 (parte coinvolta), restituisce quelli
-- Se ci sono più fusi orari e non è uno Stato è necessario leggere P131 (unità amministrativa in cui è situato)
-- il cui valore è tra i P131 dell'elemento, altrimenti quelli senza P518.
local function checkAdminEntityfilterByP518(timezonesclaims, args)
local country = mWikidata._getProperty({ 'P17', from = args.from, formatting = 'raw', n = 1 })
local inP518, noP518 = {}, {}
-- Spagna
for _, claim in ipairs(claims) do
if country == 'Q29' then
local items = mWikidata._formatQualifiers(claim, 'P518', { formatting = 'raw' }, true)
-- P131 (unità amministrativa in cui è situato) non contiene Q5813 (isole Canarie)
if #items > 0 then
timezones = mWikidata._indexOf({ 'P131', 'Q5813', from = args.from }) == -1 and { 'Q6655' } or { 'Q6574' }
for _, item in ipairs(items) do
timezones = if mWikidata._indexOf({ 'P131', 'Q5813'item, from = args.from }) ==> -10 and { 'Q6655' } or { 'Q6574' }then
table.insert(inP518, claim)
end
end
else
table.insert(noP518, claim)
end
end
return #inP518 > 0 and inP518 or noP518
return timezones
end
 
local function getTimezones(args)
local ret = {}
local country = mWikidata._getProperty( { 'P17', from = args.from, formatting = 'raw', n = 1 } )
 
-- ricerca la proprietà fuso orario (P421)
Line 94 ⟶ 103:
claims = mWikidata._getClaims('P421', { from = cfg.iso3166[args.iso3166] } ) or {}
end
-- se non presente la ricerca nell'item in nazionepaese (P17)
if #claims == 0 then
local itemclaims = mWikidata._getProperty_getClaims( { 'P17P421', from{ = args.from, formatting = 'raw',country n} =) 1or {} )
claims = mWikidata._getClaims('P421', { from = item } ) or {}
end
-- se non è uno Stato filtra i fusi orari in base a P518 (parte coinvolta), se presente
if #ret > 1 and not mWikidata._instanceOf({ 'Q6256', from = args.from }) then
-- per ora limitato alla Spagna, per una introduzione graduale
if country == 'Q29' then
claims = filterByP518(claims, args)
end
end
 
for _, claim in ipairs(claims) do
local item = mWikidata._formatStatement(claim, { formatting = 'raw' })
Line 114 ⟶ 130:
 
-- trasforma in una più semplice sequence
ret =return makeSequence(ret)
 
-- se ci sono più fusi orari e non è uno Stato è necessario leggere P131
if #ret > 1 and not mWikidata._instanceOf({ 'Q6256', from = args.from }) then
ret = checkAdminEntity(ret, args)
end
 
return ret
end