پودمان:Wikibase
توضیحات پودمان[ایجاد]
در صورت تمایل یک صفحهٔ توضیحات برای این پودمان اسکریبونتو ایجاد کنید. ویرایشگران میتوانند در صفحات تمرین (ایجاد | آینه) و آزمایشی (ایجاد) این پودمان را آزمایش کنند. لطفاً ردهها را به زیرصفحهٔ /توضیحات بیافزایید. زیرصفحههای این پودمان. |
-- Module:Wikibase
function getId( id )
if not mw.wikibase then
return "wikibase module not found"
end
if id then return id end
entity = mw.wikibase.getEntityObject()
if not entity then return nil end
return entity.id
end
-- Returns the link corresponding to the code provided.
function sitelink(dbname)
if dbname==nil or dbname=='' then
return ''
end
local sl = mw.wikibase.getEntityObject()
if sl and sl.sitelinks[dbname] then
return sl.sitelinks[dbname].title
end
return ''
end
-- Returns the corresponding geographical coordinates of the item
function coords(typ,fallback)
if fallback~=nil and fallback~='' and string.match(fallback, '^<%!%-%-.*%-%->$')==nil then
return fallback
end
local item = mw.wikibase.getEntityObject()
if item~=nil and item.claims~=nil then
local coords = item.claims.P625
if coords~=nil and coords[1]~=nil and coords[2]==nil then
return coords[1].mainsnak.datavalue.value[typ]
end
end
return ''
end
-- Returns the most updated info from a series of statements
function updated(item,prop,frame)
if item~=nil then
local claims = item.claims
if claims~=nil and claims[prop]~=nil then
for index,claim in pairs(claims[prop]) do
local qual = claim.qualifiers
if qual==nil or qual.P582==nil then
-- P582 è la data di fine, significa che non è il valore attuale
local val = claim.mainsnak.datavalue.value
if val['numeric-id']~=nil then
local id = 'Q'..val['numeric-id']
local sl = mw.wikibase.sitelink(id)
local lb = mw.wikibase.label(id)
if sl~=nil and sl~='' then
return frame:preprocess('[['..sl..'|'..lb..']]')
end
return lb
end
return val
end
end
end
end
return ''
end
local p = {}
-- Returns the ID number of the data item linked to the current page.
function p.id(frame)
id = getId(frame.args[1])
if id == nil then
return "(no element found)"
end
return id
end
-- Returns the ID number of the data item linked to the current page in the form of a link to Wikidata.
function p.idLink(frame)
id = getId(frame.args[1])
if id == nil then
return "(no element found)"
end
return "[[d:" .. id .. "|" .. string.upper(id) .. "]]"
end
-- Returns the label of the data item.
function p.label(frame)
id = getId(frame.args[1])
if id == nil then
return "(no element found)"
end
return mw.wikibase.label( id )
end
-- Returns the local page of the data item provided.
function p.page(frame)
id = getId(frame.args[1])
if id == nil then
return "(no element found)"
end
return mw.wikibase.sitelink( id )
end
-- Returns the link corresponding to the code provided.
function p.sitelink(frame)
return sitelink(frame.args.dbname or frame.args[1])
end
-- Returns the corresponding link to Wikipedia in English.
function p.enwikilink(frame)
if frame.args[1]~=nil and frame.args[1]~='' then
return frame.args[1]
end
local sl = sitelink('enwiki')
if sl~=nil and sl~='' then
return sl
end
local t = mw.title.getCurrentTitle().text
if t~=nil and t~='' then
return t
end
return ''
end
-- Returns the Commons category of the data item.
function p.commonslink(frame)
if frame.args[1]~=nil and frame.args[1]~='' then
return 'Category:'..frame.args[1]
end
local item = mw.wikibase.getEntityObject()
if item~=nil and item.claims~=nil then
local cat = item.claims.P373
if cat~=nil and cat[1]~=nil and cat[2]==nil and cat[1].mainsnak.datavalue.value~=nil then
return 'Category:'..(cat[1].mainsnak.datavalue.value)
end
end
local t = mw.title.getCurrentTitle().text
if t~=nil and t~='' then
return 'Category:'..t
end
return ''
end
-- Returns the name of the capital or main city.
function p.capital(frame)
if frame.args[1]~=nil and frame.args[1]~='' then
return frame.args[1]
end
local item = mw.wikibase.getEntityObject()
return updated(item,'P36',frame)
end
function p.capoluogo(frame)
return p.capital(frame)
end
function p.valuta(frame)
if frame.args[1]~=nil and frame.args[1]~='' then
return frame.args[1]
end
local item = mw.wikibase.getEntityObject()
return updated(item,'P38',frame)
end
function p.flag(frame)
if frame.args[1]~=nil and frame.args[1]~='' then
return frame.args[1]
end
local item = mw.wikibase.getEntityObject()
return updated(item,'P41',frame)
end
-- Restituisce l'etichetta dell'elemento rappresentante la bandiera relativa all'elemento dell'articolo
function p.bandiera_titolo(frame)
local item = mw.wikibase.getEntityObject()
if item~=nil then
local claims = item.claims
if claims~=nil and claims.P163~=nil and claims.P163[1]~=nil and claims.P163[2]==nil then
return mw.wikibase.label('Q'..claims.P163[1].mainsnak.datavalue.value['numeric-id'])
end
end
return mw.title.getCurrentTitle().text..' - Bandiera'
end
-- Restituisce la latitudine corrispondente all'articolo.
function p.latitude(frame)
return coords('latitude',frame.args[1])
end
-- Restituisce la longitudine corrispondente all'articolo.
function p.longitude(frame)
return coords('longitude',frame.args[1])
end
function p.disambig(frame)
local item = mw.wikibase.getEntityObject()
if item~=nil and item.descriptions~=nil then
local desc = item.descriptions.en
if desc~=nil and desc.value~=nil and desc.value:lower():find('disambiguation page')~=nil then
return true
end
end
return false
end
function p.instanceof(arg)
arg = tonumber(arg.args[1] or arg)
if item and item.claims and item.claims.P31 then
local claims = item.claims.P31
for index, claim in pairs(claims) do
if claim.mainsnak and claim.mainsnak.datavalue then
local val = claim.mainsnak.datavalue.value
if val and val['numeric-id'] and arg == val['numeric-id'] then
return true
end
end
end
end
return false
end
function p.relatedsites(frame)
id = getId(frame.args[1])
entity = mw.wikibase.getEntityObject(id)
out = '<div id="relatedsites" style="display: none;">'
if entity ~= nil then
if entity.claims ~= nil then
local comcat = entity.claims.P373
if comcat ~= nil and comcat[1] ~= nil and comcat[2] == nil and comcat[1].mainsnak.datavalue.value ~= nil then
out = out .. '<span data-dbname="comcat" data-val="' .. comcat[1].mainsnak.datavalue.value .. '"> </span>'
end
end
if entity.sitelinks['enwiki'] ~= nil then
out = out .. '<span data-dbname="enwiki" data-val="' .. entity.sitelinks['enwiki'].title .. '"> </span>'
end
if entity.sitelinks['fawiki'] ~= nil then
out = out .. '<span data-dbname="fawiki" data-val="' .. entity.sitelinks['fawiki'].title .. '"> </span>'
end
end
out = out .. '</div>'
return out
end
return p