<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://www.drugwiki.net/w/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata</id>
	<title>Modul:Wikidata - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://www.drugwiki.net/w/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata"/>
	<link rel="alternate" type="text/html" href="https://www.drugwiki.net/w/index.php?title=Modul:Wikidata&amp;action=history"/>
	<updated>2026-10-30T12:09:43Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.drugwiki.net/w/index.php?title=Modul:Wikidata&amp;diff=4465&amp;oldid=prev</id>
		<title>Sysop: 1 version importerades</title>
		<link rel="alternate" type="text/html" href="https://www.drugwiki.net/w/index.php?title=Modul:Wikidata&amp;diff=4465&amp;oldid=prev"/>
		<updated>2025-10-31T11:58:05Z</updated>

		<summary type="html">&lt;p&gt;1 version importerades&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 31 oktober 2025 kl. 11.58&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;sv&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen skillnad)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key drugwiki_drugwikise:diff:1.41:old-4464:rev-4465 --&gt;
&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>
	</entry>
	<entry>
		<id>https://www.drugwiki.net/w/index.php?title=Modul:Wikidata&amp;diff=4464&amp;oldid=prev</id>
		<title>sv&gt;Nirmos: Ändrade skrivskyddsinställningar för &quot;Modul:Wikidata&quot;: används på 149 471 sidor ([Redigera=Tillåt endast etablerade användare och administratörer] (på obestämd tid) [Flytta=Tillåt endast etablerade användare och administratörer] (på obestämd tid))</title>
		<link rel="alternate" type="text/html" href="https://www.drugwiki.net/w/index.php?title=Modul:Wikidata&amp;diff=4464&amp;oldid=prev"/>
		<updated>2025-01-12T02:11:27Z</updated>

		<summary type="html">&lt;p&gt;Ändrade skrivskyddsinställningar för &amp;quot;&lt;a href=&quot;/droger/Modul:Wikidata&quot; title=&quot;Modul:Wikidata&quot;&gt;Modul:Wikidata&lt;/a&gt;&amp;quot;: används på 149 471 sidor ([Redigera=Tillåt endast etablerade användare och administratörer] (på obestämd tid) [Flytta=Tillåt endast etablerade användare och administratörer] (på obestämd tid))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Den ordning fallback language hämtas, om svensk label saknas. Engelska först, därefter bokmål, danska, etc...&lt;br /&gt;
local fallback = {&amp;#039;en&amp;#039;, &amp;#039;nb&amp;#039;, &amp;#039;da&amp;#039;, &amp;#039;nn&amp;#039;, &amp;#039;de&amp;#039;, &amp;#039;fr&amp;#039;, &amp;#039;es&amp;#039;, &amp;#039;it&amp;#039;, &amp;#039;pt&amp;#039;}&lt;br /&gt;
local i18n = {&lt;br /&gt;
    [&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;property-param-not-provided&amp;quot;] = &amp;quot;Property parameter not provided.&amp;quot;,&lt;br /&gt;
        [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Entity not found.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-claim-type&amp;quot;] = &amp;quot;Unknown claim type.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-snak-type&amp;quot;] = &amp;quot;Unknown snak type.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-datatype&amp;quot;] = &amp;quot;Unknown datatype.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-entity-type&amp;quot;] = &amp;quot;Unknown entity type.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-value-module&amp;quot;] = &amp;quot;You must set both value-module and value-function parameters.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-module-not-found&amp;quot;] = &amp;quot;The module pointed by value-module not found.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-function-not-found&amp;quot;] = &amp;quot;The function pointed by value-function not found.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;somevalue&amp;quot;] = &amp;quot;&amp;#039;&amp;#039;unknown value&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
    [&amp;quot;novalue&amp;quot;] = &amp;quot;&amp;#039;&amp;#039;no value&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local sortingproperties = {&amp;#039;P585&amp;#039;,&amp;#039;P571&amp;#039;,&amp;#039;P580&amp;#039;,&amp;#039;P569&amp;#039;,&amp;#039;P582&amp;#039;,&amp;#039;P570&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
function getqualifierbysortingproperty(claim, sortingproperty)&lt;br /&gt;
	for k, v in pairs(sortingproperty) do&lt;br /&gt;
		if claim.qualifiers and claim.qualifiers[v] and claim.qualifiers[v][1].snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
			return claim.qualifiers[v][1].datavalue.value.time &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getDate(claim, options)&lt;br /&gt;
	local sortingproperty = sortingproperties&lt;br /&gt;
	if type(options.sortingproperty) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		sortingproperty = options.sortingproperty&lt;br /&gt;
	elseif type(options.sortingproperty) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		sortingproperty = {options.sortingproperty}&lt;br /&gt;
	end&lt;br /&gt;
	return getqualifierbysortingproperty(claim, sortingproperty) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function comparedates(a, b) &lt;br /&gt;
	if a and b then&lt;br /&gt;
		return a &amp;gt; b&lt;br /&gt;
	elseif a then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sortbyqualifier(claims, options)&lt;br /&gt;
	&lt;br /&gt;
	table.sort(claims, function(a,b)&lt;br /&gt;
		local timeA = getDate(a, options)&lt;br /&gt;
		local timeB = getDate(b, options)&lt;br /&gt;
		if options.sortbytime == &amp;#039;inverted&amp;#039; then&lt;br /&gt;
			return comparedates(timeB, timeA)&lt;br /&gt;
		else&lt;br /&gt;
			return comparedates(timeA, timeB)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	)&lt;br /&gt;
	return claims&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getLabelFromFallBack( id ) &lt;br /&gt;
	local entity = getEntityFromId( id )&lt;br /&gt;
 	for k, v in pairs(fallback) do&lt;br /&gt;
		if entity.labels[v] then&lt;br /&gt;
			return {value = entity.labels[v].value, language = entity.labels[v].language}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Om inget fallback-språk finns av de i variabeln ovan, så används det först definierade i objektet&lt;br /&gt;
	if entity.labels then &lt;br /&gt;
		for v, k in pairs(entity.labels) do&lt;br /&gt;
			return {value = k.value, language = k.language}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return {value = &amp;#039;-&amp;#039;, language = &amp;#039;&amp;#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getEntityFromId( id )&lt;br /&gt;
	if id then &lt;br /&gt;
		return mw.wikibase.getEntityObject( id )&lt;br /&gt;
	else&lt;br /&gt;
		return mw.wikibase.getEntityObject() &lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function getEntityIdFromValue( value )&lt;br /&gt;
    if value[&amp;#039;entity-type&amp;#039;] == &amp;#039;item&amp;#039; then&lt;br /&gt;
        return &amp;#039;Q&amp;#039; .. value[&amp;#039;numeric-id&amp;#039;]&lt;br /&gt;
    elseif value[&amp;#039;entity-type&amp;#039;] == &amp;#039;property&amp;#039; then&lt;br /&gt;
        return &amp;#039;P&amp;#039; .. value[&amp;#039;numeric-id&amp;#039;]&lt;br /&gt;
    else&lt;br /&gt;
        return formatError( &amp;#039;unknown-entity-type&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatError( key )&lt;br /&gt;
    return &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. i18n.errors[key] .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function formatStatements( options, ref )&lt;br /&gt;
   	local formattedStatements = {}&lt;br /&gt;
   	local claims = {}&lt;br /&gt;
   	if not options.property then&lt;br /&gt;
       	return formatError( &amp;#039;property-param-not-provided&amp;#039; )&lt;br /&gt;
   	end&lt;br /&gt;
&lt;br /&gt;
    if type(ref) == &amp;#039;table&amp;#039; then -- för de fall där funktionen anropas och alla claims redan finns i en tabell&lt;br /&gt;
		claims = ref[options.property]&lt;br /&gt;
	else&lt;br /&gt;
 &lt;br /&gt;
    	--Get entity&lt;br /&gt;
    	local entity = nil&lt;br /&gt;
    	if options.entity and type( options.entity ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        	entity = options.entity&lt;br /&gt;
    	else&lt;br /&gt;
        	entity = getEntityFromId( options.entityId )&lt;br /&gt;
    	end&lt;br /&gt;
 &lt;br /&gt;
    	if not entity then&lt;br /&gt;
        	return &amp;#039;&amp;#039; --TODO error?&lt;br /&gt;
    	end&lt;br /&gt;
 &lt;br /&gt;
    	if not entity.claims or not entity.claims[options.property:upper()] then&lt;br /&gt;
        	return &amp;#039;&amp;#039; --TODO error?&lt;br /&gt;
    	end&lt;br /&gt;
 &lt;br /&gt;
    	--Format statement and concat them cleanly&lt;br /&gt;
		if options.rank == &amp;#039;best&amp;#039; or not options.rank then &lt;br /&gt;
			claims = entity:getBestStatements( options.property:upper() )&lt;br /&gt;
		elseif options.rank == &amp;#039;valid&amp;#039; then&lt;br /&gt;
			for i, statement in pairs( entity.claims[options.property:upper()] ) do&lt;br /&gt;
	    		if statement.rank == &amp;#039;preferred&amp;#039; or statement.rank == &amp;#039;normal&amp;#039; then&lt;br /&gt;
    				table.insert( claims, statement )&lt;br /&gt;
    			end&lt;br /&gt;
			end&lt;br /&gt;
		elseif options.rank == &amp;#039;all&amp;#039; then&lt;br /&gt;
			for i, statement in pairs( entity.claims[options.property:upper()] ) do&lt;br /&gt;
				table.insert( claims, statement )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			for i, statement in pairs( entity.claims[options.property:upper()] ) do&lt;br /&gt;
				if statement.rank == options.rank then&lt;br /&gt;
					table.insert( claims, statement )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.avoidqualifier then&lt;br /&gt;
			local claims2 = {}&lt;br /&gt;
			for i, statement in pairs( claims ) do	&lt;br /&gt;
				if not statement.qualifiers or not statement.qualifiers[options.avoidqualifier:upper()] then&lt;br /&gt;
					table.insert( claims2, statement)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			claims = claims2&lt;br /&gt;
		end&lt;br /&gt;
		--om det finns vissa statements som har en qualifier som säger &amp;quot;språk = svenska&amp;quot;, ta bara med dessa&lt;br /&gt;
		if not options.langpref or options.langpref == &amp;#039;&amp;#039; then&lt;br /&gt;
			local claims2 = {}&lt;br /&gt;
			for i, statement in pairs( claims ) do&lt;br /&gt;
				if statement.qualifiers and statement.qualifiers.P407 then&lt;br /&gt;
					for k, v in pairs( statement.qualifiers.P407 ) do&lt;br /&gt;
						if v.snaktype == &amp;#039;value&amp;#039; and v.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 9027 then -- Q9027 = &amp;#039;svenska&amp;#039;&lt;br /&gt;
							table.insert( claims2, statement )&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #claims2 &amp;gt; 0 then&lt;br /&gt;
				claims = claims2&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.sortbytime == &amp;#039;chronological&amp;#039; or options.sortbytime == &amp;#039;inverted&amp;#039; then&lt;br /&gt;
			claims = sortbyqualifier(claims, options)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.enbarten and options.enbarten ~= &amp;#039;&amp;#039; and #claims &amp;gt; 1 then&lt;br /&gt;
		claims = {claims[1]}&lt;br /&gt;
	end&lt;br /&gt;
	if claims then&lt;br /&gt;
		for i, statement in pairs( claims ) do	&lt;br /&gt;
			local s = formatStatement( statement, options ) &lt;br /&gt;
			if s == &amp;#039;&amp;#039; then s = nil end&lt;br /&gt;
			if type(ref) == &amp;#039;table&amp;#039; or (options.noref and options.noref ~=&amp;#039;&amp;#039;) then --Inte leta efter referenser om själva anropet görs från en referens&lt;br /&gt;
				table.insert( formattedStatements, s )&lt;br /&gt;
			else&lt;br /&gt;
				local t = &amp;#039;&amp;#039;--formatReferences( statement, options )&lt;br /&gt;
				table.insert( formattedStatements, s .. t )	&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.listToText( formattedStatements, options.separator, options.conjunction )&lt;br /&gt;
end&lt;br /&gt;
function formatReferences( statement, options )&lt;br /&gt;
	local reference = {}&lt;br /&gt;
	if statement.references then&lt;br /&gt;
		local cite = require(&amp;#039;Modul:Cite&amp;#039;)&lt;br /&gt;
		for i, ref in pairs(statement.references) do&lt;br /&gt;
			local items, s = {}, nil&lt;br /&gt;
			if ref.snaks then&lt;br /&gt;
				if ref.snaks.P248 then&lt;br /&gt;
					for j, prop in pairs(ref.snaks.P248) do&lt;br /&gt;
						table.insert(items, &amp;#039;Q&amp;#039; .. prop.datavalue.value[&amp;#039;numeric-id&amp;#039;])&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				s = cite.citeitem( items, ref.snaks, options ) &lt;br /&gt;
				if s == &amp;#039;&amp;#039; or not s then&lt;br /&gt;
					s = &amp;#039;Källangivelsen på Wikidata använder propertys som inte känns igen av Modul:Cite&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(reference, mw.getCurrentFrame():extensionTag( &amp;#039;ref&amp;#039;, s, {name = ref.hash} ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(reference)&lt;br /&gt;
end&lt;br /&gt;
function formatStatement( statement, options )&lt;br /&gt;
    if statement.type == &amp;#039;statement&amp;#039; then&lt;br /&gt;
		return formatSnak( statement.mainsnak, options ).value &lt;br /&gt;
	elseif not statement.type then&lt;br /&gt;
		return formatSnak( statement, options ).value --reference and qualifier&lt;br /&gt;
    end&lt;br /&gt;
	return formatError( &amp;#039;unknown-claim-type&amp;#039; )&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatSnak( snak, options )&lt;br /&gt;
    if snak.snaktype == &amp;#039;somevalue&amp;#039; then&lt;br /&gt;
        return {value =  i18n[&amp;#039;somevalue&amp;#039;]}&lt;br /&gt;
    elseif snak.snaktype == &amp;#039;novalue&amp;#039; then&lt;br /&gt;
        return {value = i18n[&amp;#039;novalue&amp;#039;]}&lt;br /&gt;
    elseif snak.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
        return {value = formatDatavalue( snak.datavalue, options, snak.datatype ).value}&lt;br /&gt;
    else&lt;br /&gt;
        return {value = formatError( &amp;#039;unknown-snak-type&amp;#039; )}&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatDatavalue( datavalue, options, datatype )&lt;br /&gt;
    --Use the customize handler if provided&lt;br /&gt;
    if options[&amp;#039;value-module&amp;#039;] or options[&amp;#039;value-function&amp;#039;] then&lt;br /&gt;
        if not options[&amp;#039;value-module&amp;#039;] or not options[&amp;#039;value-function&amp;#039;] then&lt;br /&gt;
            return {value = formatError( &amp;#039;unknown-value-module&amp;#039; )}&lt;br /&gt;
        end&lt;br /&gt;
        local formatter = require (&amp;#039;Module:&amp;#039; .. options[&amp;#039;value-module&amp;#039;])&lt;br /&gt;
        if not formatter then&lt;br /&gt;
            return {value = formatError( &amp;#039;value-module-not-found&amp;#039; )}&lt;br /&gt;
        end&lt;br /&gt;
        local fun = formatter[options[&amp;#039;value-function&amp;#039;]]&lt;br /&gt;
        if not fun then&lt;br /&gt;
            return {value = formatError( &amp;#039;value-function-not-found&amp;#039; )}&lt;br /&gt;
        end&lt;br /&gt;
        return {value = fun( datavalue.value, options )}&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    --Default formatters&lt;br /&gt;
    if datatype == &amp;#039;wikibase-item&amp;#039; then&lt;br /&gt;
        return {value = formatEntityId( getEntityIdFromValue( datavalue.value ), options ).value}&lt;br /&gt;
        &lt;br /&gt;
    elseif datatype == &amp;#039;string&amp;#039; or datatype == &amp;#039;commonsMedia&amp;#039; then&lt;br /&gt;
        if options.pattern and options.pattern ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        	if options.pattern == &amp;quot;auktoritetsdata&amp;quot; then&lt;br /&gt;
        		local patter = formatStatements( {property = &amp;quot;P1630&amp;quot;, entityId = options.property, enbarten = &amp;#039;true&amp;#039;, noref = &amp;#039;true&amp;#039; })&lt;br /&gt;
        		return {value = formatFromPattern( datavalue.value, {pattern = patter} )}&lt;br /&gt;
        	elseif options.pattern == &amp;quot;auktoritetsdata2&amp;quot; or options.pattern == &amp;#039;auktoritetsdata3&amp;#039; then&lt;br /&gt;
        		local patter = formatStatements( {property = &amp;quot;P1630&amp;quot;, entityId = options.property, enbarten = &amp;#039;true&amp;#039;, noref = &amp;#039;true&amp;#039; })&lt;br /&gt;
        		return {value = &amp;#039;[&amp;#039; .. formatFromPattern( datavalue.value, {pattern = patter} ) .. &amp;#039; &amp;#039; .. datavalue.value .. &amp;#039;]&amp;#039; } &lt;br /&gt;
        	else&lt;br /&gt;
            	return {value = formatFromPattern( datavalue.value, options )}&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            return {value = datavalue.value}&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
    elseif datatype == &amp;#039;time&amp;#039; then&lt;br /&gt;
        local Time = require &amp;#039;Module:Time&amp;#039;&lt;br /&gt;
        return {value = Time.newFromWikidataValue( datavalue.value ):toHtml()}&lt;br /&gt;
        &lt;br /&gt;
    elseif datatype == &amp;#039;globe-coordinate&amp;#039; then&lt;br /&gt;
        local GlobeCoordinate = require &amp;#039;Module:GlobeCoordinate&amp;#039;&lt;br /&gt;
        return {value = GlobeCoordinate.newFromWikidataValue( datavalue.value ):toHtml()}&lt;br /&gt;
    &lt;br /&gt;
	elseif datatype == &amp;#039;quantity&amp;#039; then &lt;br /&gt;
		local amount, unit, cat = datavalue.value.amount, datavalue.value.unit, nil&lt;br /&gt;
		if unit then&lt;br /&gt;
			unit = unit:match(&amp;#039;Q%d+&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local formatera = require(&amp;#039;Modul:Math&amp;#039;)&lt;br /&gt;
		local number = formatera.newFromWikidataValue(datavalue.value)&lt;br /&gt;
&lt;br /&gt;
		local unitraw = unit&lt;br /&gt;
		if unit then&lt;br /&gt;
			-- Kontrollerar om det finns någon förkortning för denna &amp;#039;unit&amp;#039;&lt;br /&gt;
			local lab = options.label or formatStatements({property = &amp;#039;P558&amp;#039;, entityId = unit, enbarten = &amp;#039;true&amp;#039;, langpref = options.langpref, noref = &amp;#039;true&amp;#039;})&lt;br /&gt;
			if lab and ( not options.nounitshort or options.nounitshort == &amp;#039;&amp;#039; )  then&lt;br /&gt;
				local s = formatEntityId( unit, {label = lab, nolink = (options.nounitlink or options.nolink) })&lt;br /&gt;
				unit = s.value&lt;br /&gt;
				cat = s.cat&lt;br /&gt;
			else -- om det inte finns en förkortning&lt;br /&gt;
				local s = formatEntityId( unit, {nolink = options.nounitlink})&lt;br /&gt;
				unit = s.value&lt;br /&gt;
				cat = s.cat&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return {value = number .. &amp;#039; &amp;#039; .. (unit or &amp;#039;&amp;#039;), amount = amount, unit = unit, unitraw = unitraw, cat = cat}&lt;br /&gt;
		&lt;br /&gt;
	elseif datatype == &amp;#039;url&amp;#039; then&lt;br /&gt;
		if options.label and options.label ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			return {value = &amp;#039;[&amp;#039; .. datavalue.value .. &amp;#039; &amp;#039; .. options.label .. &amp;#039;]&amp;#039;}&lt;br /&gt;
		else&lt;br /&gt;
			return {value = datavalue.value}&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	elseif datavalue.type == &amp;#039;monolingualtext&amp;#039; then&lt;br /&gt;
		return {value = mw.text.tag(&amp;#039;span&amp;#039;, {title = mw.language.fetchLanguageName(datavalue.value.language, &amp;#039;sv&amp;#039;)}, datavalue.value.text)}&lt;br /&gt;
		&lt;br /&gt;
    else&lt;br /&gt;
        return {value = formatError( &amp;#039;unknown-datatype&amp;#039; )}&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatEntityId( entityId, options )&lt;br /&gt;
	local label = options.label or mw.wikibase.label( entityId )&lt;br /&gt;
	if label == &amp;#039;&amp;#039; then&lt;br /&gt;
		label = mw.wikibase.label( entityId ) or nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    local link = mw.wikibase.sitelink( entityId )&lt;br /&gt;
    if link and (not options.nolink or options.nolink == &amp;#039;&amp;#039;) then&lt;br /&gt;
        if label and label ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            return {value = &amp;#039;[[:&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039; }&lt;br /&gt;
        else&lt;br /&gt;
            return {value = &amp;#039;[[:&amp;#039; .. link .. &amp;#039;]]&amp;#039; }&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
    	if label then&lt;br /&gt;
    		return {value = label}&lt;br /&gt;
    	else&lt;br /&gt;
    		local s = getLabelFromFallBack( entityId )&lt;br /&gt;
    		local l = mw.language.fetchLanguageName(s.language, &amp;#039;sv&amp;#039;)&lt;br /&gt;
    		if not l or l == &amp;#039;&amp;#039; then&lt;br /&gt;
    			l = &amp;#039;okänt språk&amp;#039;&lt;br /&gt;
    		end&lt;br /&gt;
    		if s then&lt;br /&gt;
    			return {value = mw.text.tag(&amp;#039;span&amp;#039;, {title = l}, s.value), cat = &amp;#039;med labels på &amp;#039; .. l }&lt;br /&gt;
    		end&lt;br /&gt;
    	end&lt;br /&gt;
    	return {value = entityId, cat = &amp;#039;som har labels med Qid&amp;#039;}&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatFromPattern( str, options )&lt;br /&gt;
    return mw.ustring.gsub( options.pattern, &amp;#039;$1&amp;#039;, str ) .. &amp;#039;&amp;#039; --Hack to get only the first result of the function&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
function p.formatStatements( frame, key )&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
 &lt;br /&gt;
    --If a value if already set, use it&lt;br /&gt;
    if args.value and args.value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        return args.value&lt;br /&gt;
    end&lt;br /&gt;
    return formatStatements( frame.args, key )&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function p.formatStatementsFromLua( options, key )&lt;br /&gt;
    --If a value if already set, use it&lt;br /&gt;
    if options.value and options.value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        return options.value&lt;br /&gt;
    end&lt;br /&gt;
    local s = formatStatements( options, key )&lt;br /&gt;
    if s == &amp;#039;&amp;#039; then&lt;br /&gt;
    	s = nil&lt;br /&gt;
    end&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
-- Return the site link (for the current site) for a given data item.&lt;br /&gt;
function p.getSiteLink( frame )&lt;br /&gt;
    if frame.args[1] == nil then&lt;br /&gt;
        entity = mw.wikibase.getEntityObject()&lt;br /&gt;
        if not entity then&lt;br /&gt;
        	entity = mw.wikibase.getEntityObject(frame.args[1])&lt;br /&gt;
        end&lt;br /&gt;
        id = entity.id&lt;br /&gt;
    else&lt;br /&gt;
        id = frame.args[1]&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return mw.wikibase.sitelink( id )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- look into entity object&lt;br /&gt;
function p.ViewSomething(frame)&lt;br /&gt;
	local f = (frame.args[1] or frame.args.id) and frame or frame:getParent()&lt;br /&gt;
	local id = f.args.id&lt;br /&gt;
	if id and (#id == 0) then&lt;br /&gt;
		id = nil&lt;br /&gt;
	end&lt;br /&gt;
	local data = mw.wikibase.getEntityObject(id)&lt;br /&gt;
	if not data then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while true do&lt;br /&gt;
		local index = f.args[i]&lt;br /&gt;
		if not index then&lt;br /&gt;
			if type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
				return mw.text.jsonEncode(data, mw.text.JSON_PRESERVE_KEYS + mw.text.JSON_PRETTY)&lt;br /&gt;
			else&lt;br /&gt;
				return tostring(data)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		data = data[index] or data[tonumber(index)]&lt;br /&gt;
		if not data then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get the TA98 (Terminologia Anatomica first edition 1998) values like &amp;#039;A01.1.00.005&amp;#039; (property P1323)&lt;br /&gt;
-- which are then linked to http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm&lt;br /&gt;
-- uses the newer mw.wikibase calls instead of directly using the snaks&lt;br /&gt;
-- formatPropertyValues returns a table with the P1323 values concatenated with &amp;quot;, &amp;quot; so we have to split them out into a table in order to construct the return string&lt;br /&gt;
p.getTAValue = function(frame)&lt;br /&gt;
	local ent = mw.wikibase.getEntityObject()&lt;br /&gt;
	local props = ent:formatPropertyValues(&amp;#039;P1323&amp;#039;)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local t = {}&lt;br /&gt;
	for k, v in pairs(props) do&lt;br /&gt;
		if k == &amp;#039;value&amp;#039; then&lt;br /&gt;
			t = mw.text.split( v, &amp;quot;, &amp;quot;)&lt;br /&gt;
			for k2, v2 in pairs(t) do&lt;br /&gt;
				out[#out + 1] = &amp;quot;[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/&amp;quot; .. string.sub(v2, 2) .. &amp;quot;%20Entity%20TA98%20EN.htm &amp;quot; .. v2 .. &amp;quot;]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	ret = table.concat(out, &amp;quot;&amp;lt;br&amp;gt; &amp;quot;)&lt;br /&gt;
	if #ret == 0 then&lt;br /&gt;
		ret = &amp;quot;Invalid TA&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>sv&gt;Nirmos</name></author>
	</entry>
</feed>