<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikibase_signature</id>
	<title>Modul:Wikibase signature - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikibase_signature"/>
	<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Wikibase_signature&amp;action=history"/>
	<updated>2026-05-17T17:21:57Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.wikisida.no/index.php?title=Modul:Wikibase_signature&amp;diff=856&amp;oldid=prev</id>
		<title>nb&gt;Jeblad på 22. jul. 2019 kl. 14:59</title>
		<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Wikibase_signature&amp;diff=856&amp;oldid=prev"/>
		<updated>2019-07-22T14:59:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--- Get Wikibase items signatures&lt;br /&gt;
-- @license (CC-BY-SA-3.0)&lt;br /&gt;
-- @copyright John Erling Blad &amp;lt;jeblad@gmail.com&amp;gt;&lt;br /&gt;
-- @provenance https://en.wikipedia.org/w/index.php?title=Module:Wikibase&amp;amp;oldid=722062922&lt;br /&gt;
&lt;br /&gt;
local _sites = mw.loadData(&amp;#039;Modul:Wikibase signature/conf&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- @var The table holding this modules exported members&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.fetchEntity( str, group, code )&lt;br /&gt;
	str = (type( str ) == &amp;#039;string&amp;#039;) and mw.text.trim( str ) or str&lt;br /&gt;
	group = (type( group ) == &amp;#039;string&amp;#039;) and mw.text.trim( group ) or group&lt;br /&gt;
	code = (type( code ) == &amp;#039;string&amp;#039;) and mw.text.trim( code ) or code&lt;br /&gt;
	&lt;br /&gt;
	if type( str ) == &amp;#039;nil&amp;#039; or str == &amp;#039;&amp;#039; then&lt;br /&gt;
		return mw.wikibase.getEntityObject(), &amp;#039;nowiki&amp;#039;, &amp;#039;&amp;#039;, str&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if mw.ustring.find( str, &amp;quot;^[FLMPQS]%d+$&amp;quot; ) then&lt;br /&gt;
		local initial = mw.ustring.sub( str, 1, 1 )&lt;br /&gt;
		if initial == &amp;#039;Q&amp;#039; then&lt;br /&gt;
			return mw.wikibase.getEntityObject( str ), &amp;#039;wikidatawiki&amp;#039;, &amp;#039;d:&amp;#039;, str&lt;br /&gt;
		elseif initial == &amp;#039;P&amp;#039; then&lt;br /&gt;
			return mw.wikibase.getEntityObject( str ), &amp;#039;wikidatawiki&amp;#039;, &amp;#039;d:property:&amp;#039;, str&lt;br /&gt;
		else&lt;br /&gt;
			error( &amp;quot;&amp;#039;&amp;#039;Not implemented!&amp;#039;&amp;#039;&amp;quot; )&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local fullStr = str&lt;br /&gt;
	local first, last = mw.ustring.find( str, &amp;#039;^[^:]*:&amp;#039;)&lt;br /&gt;
	if first then&lt;br /&gt;
		group = mw.ustring.sub( str, first, last-1 )&lt;br /&gt;
		if _sites[group] then&lt;br /&gt;
			str = mw.ustring.sub( str, last+1 )&lt;br /&gt;
			if type( _sites[group] ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				group = _sites[group]&lt;br /&gt;
			end&lt;br /&gt;
			if type( _sites[group] ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				first, last = mw.ustring.find( str, &amp;#039;^[^:]*:&amp;#039;)&lt;br /&gt;
				if first then&lt;br /&gt;
					code = mw.ustring.sub( str, first, last-1 )&lt;br /&gt;
					if _sites[group][code] then&lt;br /&gt;
						str = mw.ustring.sub( str, last+1 )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local site = _sites[group or &amp;#039;wikipedia&amp;#039;]&lt;br /&gt;
	local siteId = (type(site) == &amp;#039;table&amp;#039; and site[code or &amp;#039;no&amp;#039;]) or site&lt;br /&gt;
&lt;br /&gt;
	local id = ( mw.ustring.find( str, &amp;quot;^[PQ]%d+$&amp;quot; ) and str )&lt;br /&gt;
		or ( str and not(siteId) and mw.wikibase.getEntityIdForTitle( str ) )&lt;br /&gt;
		or ( str and siteId and mw.wikibase.getEntityIdForTitle( str, siteId ) )&lt;br /&gt;
		or nil&lt;br /&gt;
&lt;br /&gt;
	local entity = ( id and mw.wikibase.getEntityObject( id ) )&lt;br /&gt;
		or ( not(str) and mw.wikibase.getEntityObject() )&lt;br /&gt;
		or nil&lt;br /&gt;
	&lt;br /&gt;
	local prefix = mw.ustring.sub( fullStr, 1, -(mw.ustring.len( str )+1) )&lt;br /&gt;
&lt;br /&gt;
	return entity, siteId, prefix, str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wikipedia should always have mw.wikibase, but the code can be used outside wm-wikis&lt;br /&gt;
assert( mw.wikibase, &amp;quot;can not find mw.wikibase&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
--- get the item ID of the item linked to the current page&lt;br /&gt;
-- @param table frame from the call&lt;br /&gt;
-- @return string id of the item&lt;br /&gt;
function p.id(frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local str = frame.args[1]&lt;br /&gt;
&lt;br /&gt;
	local entity = p.fetchEntity( str )&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- get the label of a given item, title, or of the connected page&lt;br /&gt;
-- if no argument is provided&lt;br /&gt;
-- @param table frame from the call&lt;br /&gt;
-- @return string label from the item&lt;br /&gt;
function p.label(frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local str = frame.args[1]&lt;br /&gt;
	local langCode = frame.args[2]&lt;br /&gt;
	&lt;br /&gt;
	local entity = p.fetchEntity( str )&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return langCode and entity:getLabel( langCode )&lt;br /&gt;
		or entity:getLabel()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- get the description of a given item, local title, or the connected page&lt;br /&gt;
-- if no argument is provided&lt;br /&gt;
-- @param table frame from the call&lt;br /&gt;
-- @return string description from the item&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local str = frame.args[1]&lt;br /&gt;
	local langCode = frame.args[2]&lt;br /&gt;
	&lt;br /&gt;
	local entity = p.fetchEntity( str )&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return langCode and entity:getDescription( langCode )&lt;br /&gt;
		or entity:getDescription()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- get the local page for a given item, local title, or the connected page&lt;br /&gt;
-- if no argument is provided&lt;br /&gt;
-- @param table frame from the call&lt;br /&gt;
-- @return string page title from the item&lt;br /&gt;
function p.page(frame)&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local str = frame.args[1]&lt;br /&gt;
	local langCode = frame.args[2]&lt;br /&gt;
	langCode = (type( langCode ) == &amp;#039;string&amp;#039;) and mw.text.trim( langCode ) or langCode&lt;br /&gt;
	langCode = langCode ~= &amp;#039;&amp;#039; and langCode or nil&lt;br /&gt;
&lt;br /&gt;
	local entity, siteId, prefix, str = p.fetchEntity( str )&lt;br /&gt;
	if entity then&lt;br /&gt;
		local title = ( siteId and ( entity and entity:getSitelink( siteId ) ) )&lt;br /&gt;
			or ( not(siteId) and ( entity and entity:getSitelink() ) )&lt;br /&gt;
			or ( (siteId == &amp;#039;wikidatawiki&amp;#039;) and (str) )&lt;br /&gt;
			or nil&lt;br /&gt;
		if title then&lt;br /&gt;
			local text = ( langCode and ( entity and entity:getLabel( langCode ) ) )&lt;br /&gt;
				or ( not(langCode) and ( entity and entity:getLabel() ) )&lt;br /&gt;
				or title&lt;br /&gt;
			return mw.ustring.format( &amp;#039;&amp;lt;span class=&amp;quot;extiw exist&amp;quot;&amp;gt;[[%s%s|%s]]&amp;lt;/span&amp;gt;&amp;#039;, prefix, title, title )&lt;br /&gt;
				..( (text ~= title) and mw.ustring.format( &amp;#039; (%s)&amp;#039;, text ) or &amp;#039;&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--local text = mw.ustring.sub( str, prefixLength+1 )&lt;br /&gt;
	return mw.ustring.format( &amp;#039;&amp;lt;span class=&amp;quot;extiw&amp;quot;&amp;gt;[[%s%s|%s]]&amp;lt;/span&amp;gt;&amp;#039;, prefix, str, str )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>nb&gt;Jeblad</name></author>
	</entry>
</feed>