<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://mtdb.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidataDato</id>
	<title>Modul:WikidataDato - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://mtdb.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidataDato"/>
	<link rel="alternate" type="text/html" href="https://mtdb.no/index.php?title=Modul:WikidataDato&amp;action=history"/>
	<updated>2026-05-22T11:51:08Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mtdb.no/index.php?title=Modul:WikidataDato&amp;diff=403&amp;oldid=prev</id>
		<title>Toro Andersen: Ny side: local p = {}  -- @todo remove this and use mw.dumpObject instead function dump( out ) 	if type( out ) == &#039;table&#039; then 		local s = &#039;{ &#039; 		for k,v in pairs( out ) do 			if type( k ) ~= &#039;nu…</title>
		<link rel="alternate" type="text/html" href="https://mtdb.no/index.php?title=Modul:WikidataDato&amp;diff=403&amp;oldid=prev"/>
		<updated>2018-01-26T21:45:11Z</updated>

		<summary type="html">&lt;p&gt;Ny side: local p = {}  -- @todo remove this and use mw.dumpObject instead function dump( out ) 	if type( out ) == &amp;#039;table&amp;#039; then 		local s = &amp;#039;{ &amp;#039; 		for k,v in pairs( out ) do 			if type( k ) ~= &amp;#039;nu…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- @todo remove this and use mw.dumpObject instead&lt;br /&gt;
function dump( out )&lt;br /&gt;
	if type( out ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		local s = &amp;#039;{ &amp;#039;&lt;br /&gt;
		for k,v in pairs( out ) do&lt;br /&gt;
			if type( k ) ~= &amp;#039;number&amp;#039; then k = &amp;#039;&amp;quot;&amp;#039;..k..&amp;#039;&amp;quot;&amp;#039; end&lt;br /&gt;
			s = s .. &amp;#039;[&amp;#039;..k..&amp;#039;] = &amp;#039; .. dump( v ) .. &amp;#039;,&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		return s .. &amp;#039;} &amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return tostring( out )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
local maanednavn = {&amp;#039;januar&amp;#039;, &amp;#039;februar&amp;#039;, &amp;#039;mars&amp;#039;, &amp;#039;april&amp;#039;, &amp;#039;mai&amp;#039;, &amp;#039;juni&amp;#039;, &amp;#039;juli&amp;#039;, &amp;#039;august&amp;#039;, &amp;#039;september&amp;#039;, &amp;#039;oktober&amp;#039;, &amp;#039;november&amp;#039;, &amp;#039;desember&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
function splitTimestamp(timestamp)&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
	local aar = string.sub(timestamp, 2, 5)&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
	local maande = maanednavn[tonumber(string.sub(timestamp, 7, 8))]&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
	local dag = tonumber(string.sub(timestamp, 10, 11))..&amp;#039;.&amp;#039;&lt;br /&gt;
	local fkr = &amp;#039;&amp;#039;&lt;br /&gt;
	if string.sub(timestamp, 1, 1) == &amp;#039;-&amp;#039; then&lt;br /&gt;
		fkr = &amp;#039; f.Kr.&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return aar,maande,dag,fkr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function kalender(kal)&lt;br /&gt;
	-- @todo Please use a regex and test on &amp;#039;wikidata.org/entity/Q1985727$&amp;#039; in lack of a better parsing of referred resource&lt;br /&gt;
	if kal == &amp;#039;http://www.wikidata.org/entity/Q1985727&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- @todo Please use a regex and test on &amp;#039;wikidata.org/entity/Q1985786&amp;#039; in lack of a better parsing of referred resource&lt;br /&gt;
	if kal == &amp;#039;http://www.wikidata.org/entity/Q1985786&amp;#039; then&lt;br /&gt;
		-- @todo please use uri lib or html, prefer the later and use wikitext&lt;br /&gt;
		return &amp;#039; ([[Den julianske kalenderen|juliansk]])&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return kal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand&lt;br /&gt;
-- (enten en &amp;quot;mainsnak&amp;quot; eller en &amp;quot;qualifier&amp;quot;). Funksjonen eksporteres&lt;br /&gt;
-- slik at den kan brukes av andre moduler.&lt;br /&gt;
function p.norskDatoFraClaim(claim)&lt;br /&gt;
	local value = claim.datavalue.value&lt;br /&gt;
	local presisjon = value.precision&lt;br /&gt;
	local aar,maande,dag,fkr = splitTimestamp(value.time)&lt;br /&gt;
	local utstring = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if presisjon == 11 then&lt;br /&gt;
		utstring = dag..&amp;#039; &amp;#039;..maande..&amp;#039; &amp;#039;..tonumber(aar)..&amp;#039;&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 10 then&lt;br /&gt;
		utstring = maande..&amp;#039; &amp;#039;..tonumber(aar)&amp;#039;&amp;#039;..&amp;#039;&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 9 then&lt;br /&gt;
		utstring = tonumber(aar)..&amp;#039;&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 8 then&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
		utstring = tonumber(string.sub(aar, 1, 3))..&amp;#039;0-årene&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 7 then&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
		utstring = math.floor((aar+99)/100) ..&amp;#039;. århundre&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return utstring .. kalender(value.calendarmodel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand&lt;br /&gt;
-- (enten en &amp;quot;mainsnak&amp;quot; eller en &amp;quot;qualifier&amp;quot;). Funksjonen eksporteres&lt;br /&gt;
-- slik at den kan brukes av andre moduler.&lt;br /&gt;
function p.norskDatoLenketFraClaim(claim)&lt;br /&gt;
	local value = claim.datavalue.value&lt;br /&gt;
	local presisjon = value.precision&lt;br /&gt;
	local aar,maande,dag,fkr =  splitTimestamp(value.time)&lt;br /&gt;
	local utstring = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if presisjon == 11 then&lt;br /&gt;
		-- @todo use mw.html.wikitext to buil this&lt;br /&gt;
		utstring = &amp;#039;[[&amp;#039;..dag..&amp;#039; &amp;#039;..maande..&amp;#039;]] [[&amp;#039;..tonumber(aar)..fkr..&amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 10 then&lt;br /&gt;
		-- @todo use mw.html.wikitext to buil this&lt;br /&gt;
		utstring = maande..&amp;#039; &amp;#039;..tonumber(aar)..&amp;#039;&amp;#039;..fkr&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 9 then&lt;br /&gt;
		-- @todo use mw.html.wikitext to buil this&lt;br /&gt;
		utstring = &amp;#039;[[&amp;#039;..tonumber(aar)..&amp;#039;&amp;#039;..fkr..&amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 8 then&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
		-- @todo use mw.html.wikitext to buil this&lt;br /&gt;
		utstring = &amp;#039;[[&amp;#039;..tonumber(string.sub(aar, 1, 3))..&amp;#039;0-årene&amp;#039;..fkr..&amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if presisjon == 7 then&lt;br /&gt;
	-- @todo following can return nil, please fix&lt;br /&gt;
		-- @todo use mw.html.wikitext to buil this&lt;br /&gt;
		utstring = &amp;#039;[[&amp;#039;..math.floor((aar+99)/100) ..&amp;#039;. århundre&amp;#039;..fkr..&amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- @todo use mw.text.nowiki, ie. this is without html&lt;br /&gt;
	return utstring .. kalender(value.calendarmodel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function frameargs(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	if args[1] == nil then&lt;br /&gt;
		local pFrame = frame:getParent();&lt;br /&gt;
		args = pFrame.args;&lt;br /&gt;
		for k,v in pairs( frame.args ) do&lt;br /&gt;
			args[k] = v;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args[&amp;#039;qv&amp;#039;],args[&amp;#039;pv&amp;#039;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.okProperty(prop)&lt;br /&gt;
	-- Sjekk at prop finnes og inneholder det vi trenger for å lage ok norsk dato&lt;br /&gt;
	-- @todo use snaktype instead, then several fields are implied&lt;br /&gt;
	if prop&lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;]&lt;br /&gt;
		and prop[&amp;quot;rank&amp;quot;]&lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;][&amp;quot;datavalue&amp;quot;] &lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;][&amp;quot;datavalue&amp;quot;][&amp;quot;value&amp;quot;]&lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;][&amp;quot;datavalue&amp;quot;][&amp;quot;value&amp;quot;][&amp;#039;time&amp;#039;]&lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;][&amp;quot;datavalue&amp;quot;][&amp;quot;value&amp;quot;][&amp;#039;precision&amp;#039;]&lt;br /&gt;
		and prop[&amp;#039;mainsnak&amp;#039;][&amp;quot;datavalue&amp;quot;][&amp;quot;value&amp;quot;][&amp;#039;calendarmodel&amp;#039;]&lt;br /&gt;
	then &lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.finnBesteProperty(frame)&lt;br /&gt;
	local qv,pv = frameargs(frame)&lt;br /&gt;
	local entity = mw.wikibase.getEntity(qv)&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return &lt;br /&gt;
	end&lt;br /&gt;
	if not entity[&amp;#039;claims&amp;#039;] or not entity[&amp;#039;claims&amp;#039;][pv] then&lt;br /&gt;
		return &lt;br /&gt;
	end&lt;br /&gt;
	local prop = entity[&amp;#039;claims&amp;#039;][pv]&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local oki = 0&lt;br /&gt;
	-- @todo use for i,prop in iprop(entity[&amp;#039;claims&amp;#039;][pv]), it is more readable and more effective too&lt;br /&gt;
	while i &amp;lt; #prop do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if p.okProperty(prop[i]) then&lt;br /&gt;
			local rank = prop[i][&amp;quot;rank&amp;quot;]&lt;br /&gt;
			if rank == &amp;#039;preferred&amp;#039; then&lt;br /&gt;
				return prop[i]&lt;br /&gt;
			end&lt;br /&gt;
			if rank == &amp;#039;normal&amp;#039; then&lt;br /&gt;
				if oki == 0 then&lt;br /&gt;
					oki = i&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- @todo previous comment on ipairs&lt;br /&gt;
	if oki&amp;gt;0 then&lt;br /&gt;
		return prop[oki]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.norskDatoLenket(frame)&lt;br /&gt;
	local prop = p.finnBesteProperty(frame)&lt;br /&gt;
	if not prop then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- prop er nå en ok property.&lt;br /&gt;
	-- Hvis det finnes en med rank preferred er den valgt&lt;br /&gt;
	-- Hvis ingen preferred, er den første med normal valgt.&lt;br /&gt;
	-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste&lt;br /&gt;
	return p.norskDatoLenketFraClaim(prop.mainsnak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.norskDato(frame)&lt;br /&gt;
	local prop = p.finnBesteProperty(frame)&lt;br /&gt;
	if not prop then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- prop er nå en ok property.&lt;br /&gt;
	-- Hvis det finnes en med rank preferred er den valgt&lt;br /&gt;
	-- Hvis ingen preferred, er den første med normal valgt.&lt;br /&gt;
	-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste&lt;br /&gt;
	return p.norskDatoFraClaim(prop.mainsnak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand&lt;br /&gt;
-- (enten en &amp;quot;mainsnak&amp;quot; eller en &amp;quot;qualifier&amp;quot;). Funksjonen eksporteres&lt;br /&gt;
-- slik at den kan brukes av andre moduler.&lt;br /&gt;
function p.dagOgMaanedFraClaim(claim)&lt;br /&gt;
	local timestamp = claim.datavalue.value.time&lt;br /&gt;
	local presisjon = claim.datavalue.value.precision&lt;br /&gt;
	if tonumber(presisjon) &amp;lt; 11 then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local aar, maaned, dag&lt;br /&gt;
	aar, maaned, dag = splitTimestamp(timestamp)&lt;br /&gt;
	if dag ~= nil and maaned ~= nil then&lt;br /&gt;
		return dag .. &amp;#039; &amp;#039; .. maaned&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dagOgMaaned (frame)&lt;br /&gt;
	local prop = p.finnBesteProperty(frame)&lt;br /&gt;
	if not prop then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return p.dagOgMaanedFraClaim(prop.mainsnak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand&lt;br /&gt;
-- (enten en &amp;quot;mainsnak&amp;quot; eller en &amp;quot;qualifier&amp;quot;). Funksjonen eksporteres&lt;br /&gt;
-- slik at den kan brukes av andre moduler.&lt;br /&gt;
function p.aarFraClaim(claim)&lt;br /&gt;
	local timestamp = claim.datavalue.value.time&lt;br /&gt;
	local presisjon = claim.datavalue.value.precision&lt;br /&gt;
	if tonumber(presisjon) &amp;lt; 9 then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local aar, maaned, dag, fkr&lt;br /&gt;
	aar, maaned, dag, fkr = splitTimestamp(timestamp)&lt;br /&gt;
	if aar ~= nil and fkr ~= &amp;#039; f.Kr.&amp;#039; then&lt;br /&gt;
		return string.format(&amp;#039;%u&amp;#039;, aar)&lt;br /&gt;
	elseif aar ~= nil and fkr == &amp;#039; f.Kr.&amp;#039; then&lt;br /&gt;
		return string.format(&amp;#039;%u&amp;#039;, aar) .. &amp;#039; f.Kr.&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.Aar(frame)&lt;br /&gt;
	local prop = p.finnBesteProperty(frame)&lt;br /&gt;
	if not prop then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return p.aarFraClaim(prop.mainsnak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Toro Andersen</name></author>
	</entry>
</feed>