Modul:ResolveEntityId
Použití
Funguje podobně jako mw.wikibase.resolvePropertyId, ale pro Wikidata položky (entity) místo vlastností (properties).
Vrátí id položky pro zadaný název (propojené stránky na Wikipedii) nebo id. To dovoluje používat místní název pro příslušnou položku namísto toho, aby všude bylo nutné uvádět id. Pokud pro zadaný název či id nebyla nalezena žádná položka, nebo pokud je název nejednoznačný, je vrácena hodnota nil.
Při pokusu najít id k názvu jsou prohledávány pouze stránky na české Wikipedii propojené s Wikidaty. Pokud stránka na Wikipedii existuje, ale neexistuje odpovídající propojení na Wikidata, je vrácena hodnota nil.
Volání z modulu (_id)
Příklady volání z modulu:
Kód | Výsledek |
---|---|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('Q42')
|
id = Q42
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('Q0')
|
id = nil
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('Q404')
|
id = Q404
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('Q151384451555')
|
id = nil
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('Douglas Adams')
|
id = Q42
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('TotoNeníExistujícíPoložkaWikidat')
|
id = nil
|
local resolveEntity = require( "Modul:ResolveEntityId" )
id = resolveEntity._id('TotoNeníExistujícíPoložkaWikidat', 'Wikidata ID nenalezeno!')
|
id = 'Wikidata ID nenalezeno!'
|
Volání ze šablony (entityid)
Následující výraz vrátí id položky (nebo nil
pokud ID neexistuje):
{{#invoke:ResolveEntityId|entityid|id}}
Následující výraz vrátí id položky (nebo alternativní text pokud ID neexistuje):
{{#invoke:ResolveEntityId|entityid|id|alternativní text pokud id je nil}}
local p = {}
function p._entityid(_,id,alt)
-- backwards compatibility for deprecated _entityid function
return p._id(id,alt)
end
function p._id(id,alt)
if type(id) == 'string' then
id = mw.ustring.upper(mw.ustring.sub(id,1,1))..mw.ustring.sub(id,2)
if mw.ustring.match(id,'^Q%d+$') then
-- id is in the proper format for a Wikidata entity
if mw.wikibase.isValidEntityId(id) then
-- id is valid
id = mw.wikibase.getEntity(id)
if id then
-- entity exists
return id.id
end
end
else
id = mw.wikibase.getEntityIdForTitle(id)
if id then
-- id is a title that matches a Wikidata entity
local instanceOf = mw.wikibase.getBestStatements(id, 'P31')[1] --instance of
if instanceOf and instanceOf.mainsnak.datavalue.value.id ~= 'Q4167410' then
-- not disambiguation
return mw.wikibase.getEntity(id).id
elseif instanceOf == nil then
-- id is a title, but is missing an instance-of value
return mw.wikibase.getEntity(id).id
end
end
end
end
return alt or nil
end
function p.entityid(frame)
return p._id(frame.args[1], frame.args[2])
end
return p