Module:Wikibase signature

This module is roughly the same as the documentation at mw:Extension:Wikibase Client/Lua. It is although not strictly the same, which makes it somewhat different from w:en:Module:Wikibase.


--- Get Wikibase items signatures
-- @license (CC-BY-SA-3.0)
-- @copyright John Erling Blad <jeblad@gmail.com>
-- @provenance https://en.wikipedia.org/w/index.php?title=Module:Wikibase&oldid=722062922

-- @var The table holding this modules exported members
local p = {}

--- get the item ID of the item linked to the current page
-- @param table frame from the call
-- @return string id of the item
function p.id(frame)
	assert( mw.wikibase, "no mw.wikibase" )
	frame = frame or mw.getCurrentFrame()
	assert( frame, "no frame" )
	
	if frame:getParent() then
		frame = frame:getParent()
	end
	
	entity = mw.wikibase.getEntityObject()
	assert( entity, "no entity" )
	return entity.id
end

--- get the label of a given item, or of the connected page
-- if no argument is provided
-- @param table frame from the call
-- @return string label from the item
function p.label(frame)
	assert( mw.wikibase, "no mw.wikibase" )
	frame = frame or mw.getCurrentFrame()
	assert( frame, "no frame" )
	
	if frame:getParent() then
		frame = frame:getParent()
	end
	
	if not frame.args[2] then
		return mw.wikibase.label( frame.args[1] )
	end
	
	entity = mw.wikibase.getEntityObject( frame.args[1] )
	assert( entity, "no entity" )
	return entity:getLabel( frame.args[2] )
end

--- get the description of a given item, or of the connected page
-- if no argument is provided
-- @param table frame from the call
-- @return string description from the item
function p.description(frame)
	assert( mw.wikibase, "no mw.wikibase" )
	frame = frame or mw.getCurrentFrame()
	assert( frame, "no frame" )
	
	if frame:getParent() then
		frame = frame:getParent()
	end
	
	if not frame.args[2] then
		return mw.wikibase.description( frame.args[1] )
	end
	
	entity = mw.wikibase.getEntityObject( frame.args[1] )
	assert( entity, "no entity" )
	return entity:getDescription( frame.args[2] )
end

--- get the local page for a given item, or of the connected page
-- if no argument is provided
-- @param table frame from the call
-- @return string page title from the item
function p.page(frame)
	assert( mw.wikibase, "no mw.wikibase" )
	frame = frame or mw.getCurrentFrame()
	assert( frame, "no frame" )
	
	if frame:getParent() then
		frame = frame:getParent()
	end
	
	if frame.args[1] and not frame.args[2] then
		return mw.wikibase.sitelink( frame.args[1] )
	end

	entity = mw.wikibase.getEntityObject( frame.args[1] )
	assert( entity, "no entity" )
	return entity:getSitelink( frame.args[2] )
end

return p