Modulo:Fuso orario/sandbox: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
aggiornato alla versione corrente |
+controllo P131, modifiche minori |
||
Riga 16:
local title = mw.title.new(name)
return title and title.exists
local function makeSequence(tbl)
for item, _ in pairs(tbl) do
table.insert(ret, item)
end
Line 31 ⟶ 39:
local function formatTimezones(items)
local formattedItems = {}
for
table.insert(formattedItems, string.format('[[%s]]', mw.wikibase.sitelink(item)))
end
Line 43 ⟶ 51:
local function checkTimezone(item)
local ret = cfg.validTimezones[item] and item or nil▼
▲ local ret
▲ ret = cfg.validTimezones[item] and item or nil
-- se non è tra i validTimezones verifica la proprietà "considerato essere uguale a (P460)"
Line 66 ⟶ 72:
return ret
end
-- Se ci sono più fusi orari e non è uno Stato è necessario leggere P131 (unità amministrativa in cui è situato)
local function checkAdminEntity(timezones, args)
local country = mWikidata._getProperty({ 'P17', from = args.from, formatting = 'raw', n = 1 })
-- Spagna
if country == 'Q29' then
-- P131 (unità amministrativa in cui è situato) non contiene Q5813 (isole Canarie)
timezones = mWikidata._indexOf({ 'P131', 'Q5813', from = args.from }) == -1 and { 'Q6655' } or { 'Q6574' }
end
return timezones
end
local function getTimezones(args)
local ret = {}
-- ricerca la proprietà fuso orario (P421)
Line 91 ⟶ 107:
item = checkTimezone(item)
if item then
-- chiave = boolean, per
ret[item] = true
end
Line 98 ⟶ 113:
end
-- trasforma in una più semplice sequence
return ret, numTimezones▼
ret = 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
end
Line 112 ⟶ 135:
end
elseif wdval then
cat = 'Fuso orario letto da Wikidata'
end
return string.format('[[Categoria:%s]]', cat)
Line 119 ⟶ 142:
-- Per l'utilizzo da altro modulo
function p._main(args)
local userval, wdval, cat
▲ local cat = {}
-- valore utente
Line 133 ⟶ 155:
-- valore letto da Wikidata
local timezones
if
▲ end
wdval = formatTimezones(timezones)
end
Line 144 ⟶ 163:
if mw.title.getCurrentTitle().namespace == 0 then
if not userval and not wdval and args.cat then
elseif userval or (wdval and #timezones <= 1) then
▲ end
end
end
return (userval or wdval or '') ..
end
|