Modul:WikidataDato: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
(Kommenterer ut juliansk dato. Kun når datoen er etter oktober 1582 bør juliansk skrives ut. Alle datoer før dette blir regnet for å være julianske uansett.) |
m (Én sideversjon ble importert) |
||
(30 mellomliggende versjoner av 9 brukere er ikke vist) | |||
Linje 1: | Linje 1: | ||
local p = {} |
local p = {} |
||
local refs = require 'Module: |
local refs = require 'Module:Reference score' |
||
local lang = mw.language.getContentLanguage() |
local lang = mw.language.getContentLanguage() |
||
local maanednavn = {'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'} |
local maanednavn = {'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'} |
||
⚫ | |||
local maanedlenker = {'Januar', 'Februar', 'Mars (måned)', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'} |
|||
-- tekst vi ønsker sammen med dato når det finnes en P1480 (kvalifikator for presisjonen til en påstand) |
|||
⚫ | |||
-- Hvis det forekommer ytterligere verdier i bruk, legg disse til i denne tabellen |
|||
local kildekvalitettekst = |
|||
{ |
|||
["Q5727902"] = "ca. ", -- cirka |
|||
["Q21818619"] = "I nærheten av ", -- muligens omtrentlig verdi |
|||
["Q18122778"] = "Antagelig " -- antakelig |
|||
} |
|||
local linktext = 'Rediger på Wikidata' |
|||
local linktarget = 'https://www.wikidata.org/wiki/%s?uselang=%s#%s' |
|||
local function kildekvalitet(claim) |
|||
for key,val in pairs(claim) do |
|||
return kildekvalitettekst[val.datavalue.value.id] or '[[Kategori:Kildekvalitet for dato som mangler tekst i Modul WikidataDato]]' |
|||
⚫ | |||
return '' |
|||
⚫ | |||
⚫ | |||
local aar = string.sub(timestamp, 2, 5) or '????' |
local aar = string.sub(timestamp, 2, 5) or '????' |
||
local |
local maanednummer = tonumber(string.sub(timestamp, 7, 8) or '00') |
||
local maaned = maanednavn[maanednummer] or '??' |
|||
local maanedlenke = maanedlenker[maanednummer] or '??' |
|||
local kortmaaned = maaned |
|||
⚫ | |||
kortmaaned = kortmaanednavn[tonumber(string.sub(timestamp, 7, 8) or '00')] or '??' |
|||
⚫ | |||
local dag = tonumber(string.sub(timestamp, 10, 11) or '??')..'.' |
local dag = tonumber(string.sub(timestamp, 10, 11) or '??')..'.' |
||
local fkr = '' |
local fkr = '' |
||
Linje 13: | Linje 40: | ||
fkr = ' f.Kr.' |
fkr = ' f.Kr.' |
||
end |
end |
||
return aar, |
return aar,maanedlenke,maaned,dag,fkr,kortmaaned |
||
end |
end |
||
Linje 24: | Linje 51: | ||
-- local html = mw.html.create( 'span' ) |
-- local html = mw.html.create( 'span' ) |
||
-- :wikitext( '[[Den julianske kalenderen|juliansk]]' ) |
-- :wikitext( '[[Den julianske kalenderen|juliansk]]' ) |
||
return --' ('..tostring( html )..')' |
return '' --' ('..tostring( html )..')' |
||
end |
end |
||
return mw.text.nowiki( kal ) |
return mw.text.nowiki( kal ) |
||
Linje 33: | Linje 60: | ||
-- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres |
-- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres |
||
-- slik at den kan brukes av andre moduler. |
-- slik at den kan brukes av andre moduler. |
||
function p.norskDatoFraClaim(claim) |
function p.norskDatoFraClaim(claim,forkortet) |
||
local value = claim.datavalue.value |
local value = claim.datavalue.value |
||
local presisjon = value.precision |
local presisjon = value.precision |
||
local aar, |
local aar,maanedlenke,maaned,dag,fkr,kortmaaned = splitTimestamp(value.time,forkortet) |
||
local utstring = '' |
local utstring = '' |
||
if presisjon == 11 then |
if presisjon == 11 then |
||
utstring = string.format( '%s %s %s%s', dag, |
utstring = string.format( '%s %s %s%s', dag, maaned, tonumber(aar) or aar, fkr ) |
||
elseif presisjon == 10 then |
elseif presisjon == 10 then |
||
utstring = string.format( '%s %s%s', |
utstring = string.format( '%s %s%s', maaned, tonumber(aar) or aar, fkr ) |
||
elseif presisjon == 9 then |
elseif presisjon == 9 then |
||
utstring = (tonumber(aar) or aar)..''..fkr |
utstring = (tonumber(aar) or aar)..''..fkr |
||
utstring = string.format( '%s%s', tonumber(aar) or aar, fkr ) |
utstring = string.format( '%s%s', tonumber(aar) or aar, fkr ) |
||
elseif presisjon == 8 then |
elseif presisjon == 8 then |
||
utstring = string.format( '%s-årene%s', |
utstring = string.format( '%s-årene%s', math.floor(((tonumber(aar) or 0))/10)*10, fkr ) |
||
elseif presisjon == 7 then |
elseif presisjon == 7 then |
||
utstring = string.format( '%s. århundre%s', math.floor(((tonumber(aar) or 0)+99)/100), fkr ) |
utstring = string.format( '%s. århundre%s', math.floor(((tonumber(aar) or 0)+99)/100), fkr ) |
||
Linje 58: | Linje 85: | ||
-- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres |
-- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres |
||
-- slik at den kan brukes av andre moduler. |
-- slik at den kan brukes av andre moduler. |
||
function p.norskDatoLenketFraClaim(claim) |
function p.norskDatoLenketFraClaim(claim,forkortet) |
||
local value = claim.datavalue.value |
local value = claim.datavalue.value |
||
local presisjon = value.precision |
local presisjon = value.precision |
||
local aar, |
local aar,maanedlenke,maaned,dag,fkr,kortmaaned = splitTimestamp(value.time,forkortet) |
||
local html = mw.html.create( 'span' ) |
local html = mw.html.create( 'span' ) |
||
if presisjon == 11 then |
if presisjon == 11 then |
||
-- @todo use mw.html.wikitext to |
-- @todo use mw.html.wikitext to build this |
||
html:wikitext( string.format( '[[%s %s]] [[%s%s]]', dag, |
html:wikitext( string.format( '[[%s %s|%s %s]] [[%s%s]]', dag, maaned, dag, kortmaaned, tonumber(aar) or aar, fkr ) ) |
||
end |
end |
||
if presisjon == 10 then |
if presisjon == 10 then |
||
html:wikitext( string.format( '[[%s]] [[%s%s]]', |
html:wikitext( string.format( '[[%s|%s]] [[%s%s]]', maanedlenke, maaned, tonumber(aar) or aar, fkr ) ) |
||
end |
end |
||
if presisjon == 9 then |
if presisjon == 9 then |
||
Linje 93: | Linje 120: | ||
end |
end |
||
end |
end |
||
local qid = args['qv'] or args['qid'] or nil |
|||
if qid and qid == "" then |
|||
qid = nil |
|||
⚫ | |||
local pid = args['pv'] or args['pid'] or nil |
|||
-- local forkortet = args['kort'] or pid == "P569" or pid == "P570" or nil |
|||
local forkortet = args['kort'] or nil |
|||
return qid,pid,forkortet |
|||
end |
end |
||
Linje 115: | Linje 149: | ||
function p.finnBesteProperty(frame) |
function p.finnBesteProperty(frame) |
||
local qv,pv = frameargs(frame) |
local qv,pv,forkortet = frameargs(frame) |
||
local entity = mw.wikibase.getEntity(qv) |
local entity = mw.wikibase.getEntity(qv) |
||
if not ( entity and entity.claims and entity.claims[pv] ) then |
if not ( entity and entity.claims and entity.claims[pv] ) then |
||
return nil |
return nil,nil |
||
end |
end |
||
Linje 128: | Linje 162: | ||
local rank = prop.rank or 'normal' |
local rank = prop.rank or 'normal' |
||
if rank == 'preferred' then |
if rank == 'preferred' then |
||
return prop |
return prop, pv, qv, forkortet |
||
elseif rank == 'normal' then |
elseif rank == 'normal' then |
||
if oki == 0 then |
if oki == 0 then |
||
Linje 137: | Linje 171: | ||
end |
end |
||
if oki>0 then |
if oki>0 then |
||
return props[oki] |
return props[oki], pv, qv, forkortet |
||
⚫ | |||
⚫ | |||
return nil, pv, qv, forkortet |
|||
⚫ | |||
⚫ | |||
⚫ | |||
local hits = 0 |
|||
local refs = '' |
|||
for i,v in ipairs( prop.references or {} ) do |
|||
if v.snaks and not v.snaks.P143 then |
|||
found = found or true |
|||
hits = hits + 1 |
|||
-- hash will merge similar entries |
|||
refs = refs .. frame:extensionTag( 'ref', mw.wikibase.formatValues( v.snaks ), { name = v.hash } ) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
local cats = (found and ('[['..'Category:'..'Referanse fra Lua'..']]') or '') |
|||
⚫ | |||
-- nop |
|||
elseif hits == 1 then |
|||
cats = cats .. ('[['..'Category:'..nums[hits] ..' referanse fra Lua'..']]') |
|||
elseif hits <= 12 then |
|||
cats = cats .. ('[['..'Category:'..nums[hits] ..' referanser fra Lua'..']]') |
|||
⚫ | |||
cats = cats .. ('[['..'Category:'..'Mange referanser fra Lua'..']]') |
|||
end |
end |
||
return refs .. cats |
|||
end |
end |
||
function p.norskDatoLenket(frame) |
function p.norskDatoLenket(frame) |
||
local prop = p.finnBesteProperty(frame) |
local prop,qv,pv,forkortet = p.finnBesteProperty(frame) |
||
if not prop then |
if not prop then |
||
return "" |
return "" |
||
Linje 177: | Linje 187: | ||
-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste |
-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste |
||
-- ulenket, minimerer overlenking |
-- ulenket, minimerer overlenking |
||
⚫ | |||
return p.norskDatoLenketFraClaim(prop.mainsnak) .. refs.render(frame, prop.references) --p.standardRefFormat(frame, prop) |
|||
if prop and prop.qualifiers and prop.qualifiers.P1480 then |
|||
kvalitet = kildekvalitet(prop.qualifiers.P1480) |
|||
end |
|||
local tmp = refs.render(frame, prop.references) |
|||
return kvalitet .. p.norskDatoLenketFraClaim(prop.mainsnak,forkortet) .. tmp |
|||
end |
end |
||
Linje 190: | Linje 206: | ||
-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste |
-- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste |
||
-- ulenket, minimerer overlenking |
-- ulenket, minimerer overlenking |
||
return p.norskDatoFraClaim(prop.mainsnak) -- .. refs.render(frame, prop.references) --p.standardRefFormat(frame, prop) |
|||
return p.norskDatoFraClaim(prop.mainsnak) |
|||
end |
end |
||
Linje 202: | Linje 219: | ||
return '' |
return '' |
||
end |
end |
||
local aar, maaned, dag |
local aar, maanedlenke, maaned, dag |
||
aar, maaned, dag = splitTimestamp(timestamp) |
aar, maanedlenke, maaned, dag = splitTimestamp(timestamp) |
||
if dag ~= nil and maaned ~= nil then |
if dag ~= nil and maaned ~= nil then |
||
return mw.text.nowiki( dag .. ' ' .. maaned ) |
return mw.text.nowiki( dag .. ' ' .. maaned ) |
||
Linje 228: | Linje 245: | ||
return '' |
return '' |
||
end |
end |
||
local aar, maaned, dag, fkr |
local aar, maanedlenke, maaned, dag, fkr |
||
aar, maaned, dag, fkr = splitTimestamp(timestamp) |
aar, maanedlenke, maaned, dag, fkr = splitTimestamp(timestamp) |
||
if aar ~= nil and fkr ~= ' f.Kr.' then |
if aar ~= nil and fkr ~= ' f.Kr.' then |
||
return mw.text.nowiki( string.format('%u', aar) ) |
return mw.text.nowiki( string.format('%u', aar) ) |
||
Linje 247: | Linje 264: | ||
end |
end |
||
⚫ | |||
local prop, pid, qid = p.finnBesteProperty(frame) |
|||
qid = qid or mw.wikibase.getEntityIdForCurrentPage() |
|||
if not qid or not pid then |
|||
return '' |
|||
end |
|||
local link = mw.ustring.format( linktarget, qid, lang:getCode(), pid ) |
|||
local text = '[[File:OOjs UI icon edit-ltr-progressive.svg' |
|||
.. '|frameless|text-top|10px' |
|||
.. '|alt=' .. mw.text.nowiki( linktext ) |
|||
.. '|link=' .. mw.text.nowiki( link ) |
|||
.. '|' .. mw.text.nowiki( linktext ) |
|||
.. ']]' |
|||
local html = mw.html.create( 'span' ) |
|||
:addClass( 'wb-edithandle' ) |
|||
:attr( 'data-bridge-edit-flow', 'single-best-value' ) |
|||
:wikitext( text ) |
|||
return tostring( html ) |
|||
end |
|||
return p |
return p |
Siste sideversjon per 26. feb. 2025 kl. 18:42
Formål[rediger kilde]
Å presentere datoer fra Wikidata.
Bruk i maler[rediger kilde]
Modulen brukes ved å legge inn en av:
{{#invoke:WikidataDato|norskDato|qv=Qxxx|pv=Pxxx}}
{{#invoke:WikidataDato|norskDatoLenket|qv=Qxxx|pv=Pxxx}}
i en mal.
Bruk i moduler[rediger kilde]
local WikidataDato = require( 'Module:WikidataDato' )
local entity = mw.wikibase.getEntity()
local claim = entity.claims['Pxxx'][1].mainsnak -- Kun et eksempel! I virkeligheten må man sjekke at påstanden finnes og er gyldig.
local dato = WikidataDato.norskDatoFraClaim(claim)
Eksempler[rediger kilde]
Artikkel | I artikkel | Utenfor artikkel | resultat |
---|---|---|---|
Erna Solberg | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q291644 |pv=P569}} | |
{{#invoke:WikidataDato |norskDatoLenket |pv=P569}} | {{#invoke:WikidataDato |norskDatoLenket |qv=Q291644 |pv=P569}} | ||
Lenin | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q1394 |pv=P569}} | |
{{#invoke:WikidataDato |norskDatoLenket |pv=P569}} | {{#invoke:WikidataDato |norskDatoLenket |qv=Q1394 |pv=P569}} | ||
Platon | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q859 |pv=P569}} | |
{{#invoke:WikidataDato |norskDatoLenket |pv=P569}} | {{#invoke:WikidataDato |norskDatoLenket |qv=Q859 |pv=P569}} | ||
Julien Brulé (død) | |||
Giuseppe Corsi da Celano (født) | |||
Sergej Kirdjapkin | |||
Sergej Kirdjapkin | |||
Nicole Oresme | |||
Hiempsal I | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q523301 |pv=P569}} |
Referanser[rediger kilde]
local p = {} local refs = require 'Module:Reference score' local lang = mw.language.getContentLanguage() local maanednavn = {'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'} local kortmaanednavn = {'jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'} local maanedlenker = {'Januar', 'Februar', 'Mars (måned)', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'} -- tekst vi ønsker sammen med dato når det finnes en P1480 (kvalifikator for presisjonen til en påstand) -- Hvis det forekommer ytterligere verdier i bruk, legg disse til i denne tabellen local kildekvalitettekst = { ["Q5727902"] = "ca. ", -- cirka ["Q21818619"] = "I nærheten av ", -- muligens omtrentlig verdi ["Q18122778"] = "Antagelig " -- antakelig } local linktext = 'Rediger på Wikidata' local linktarget = 'https://www.wikidata.org/wiki/%s?uselang=%s#%s' local function kildekvalitet(claim) for key,val in pairs(claim) do return kildekvalitettekst[val.datavalue.value.id] or '[[Kategori:Kildekvalitet for dato som mangler tekst i Modul WikidataDato]]' end return '' end function splitTimestamp(timestamp,forkortet) local aar = string.sub(timestamp, 2, 5) or '????' local maanednummer = tonumber(string.sub(timestamp, 7, 8) or '00') local maaned = maanednavn[maanednummer] or '??' local maanedlenke = maanedlenker[maanednummer] or '??' local kortmaaned = maaned if forkortet then kortmaaned = kortmaanednavn[tonumber(string.sub(timestamp, 7, 8) or '00')] or '??' end local dag = tonumber(string.sub(timestamp, 10, 11) or '??')..'.' local fkr = '' if string.sub(timestamp, 1, 1) == '-' then fkr = ' f.Kr.' end return aar,maanedlenke,maaned,dag,fkr,kortmaaned end function kalender(kal) if string.match (kal, 'wikidata.org/entity/Q1985727$' ) then return '' end if string.match (kal, 'wikidata.org/entity/Q1985786$' ) then --Kun når datoen er etter oktober 1582 bør juliansk skrives ut. Alle datoer før dette blir regnet for å være julianske uansett. -- local html = mw.html.create( 'span' ) -- :wikitext( '[[Den julianske kalenderen|juliansk]]' ) return '' --' ('..tostring( html )..')' end return mw.text.nowiki( kal ) end -- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand -- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres -- slik at den kan brukes av andre moduler. function p.norskDatoFraClaim(claim,forkortet) local value = claim.datavalue.value local presisjon = value.precision local aar,maanedlenke,maaned,dag,fkr,kortmaaned = splitTimestamp(value.time,forkortet) local utstring = '' if presisjon == 11 then utstring = string.format( '%s %s %s%s', dag, maaned, tonumber(aar) or aar, fkr ) elseif presisjon == 10 then utstring = string.format( '%s %s%s', maaned, tonumber(aar) or aar, fkr ) elseif presisjon == 9 then utstring = (tonumber(aar) or aar)..''..fkr utstring = string.format( '%s%s', tonumber(aar) or aar, fkr ) elseif presisjon == 8 then utstring = string.format( '%s-årene%s', math.floor(((tonumber(aar) or 0))/10)*10, fkr ) elseif presisjon == 7 then utstring = string.format( '%s. århundre%s', math.floor(((tonumber(aar) or 0)+99)/100), fkr ) end return mw.text.nowiki( utstring ).. kalender(value.calendarmodel) end -- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand -- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres -- slik at den kan brukes av andre moduler. function p.norskDatoLenketFraClaim(claim,forkortet) local value = claim.datavalue.value local presisjon = value.precision local aar,maanedlenke,maaned,dag,fkr,kortmaaned = splitTimestamp(value.time,forkortet) local html = mw.html.create( 'span' ) if presisjon == 11 then -- @todo use mw.html.wikitext to build this html:wikitext( string.format( '[[%s %s|%s %s]] [[%s%s]]', dag, maaned, dag, kortmaaned, tonumber(aar) or aar, fkr ) ) end if presisjon == 10 then html:wikitext( string.format( '[[%s|%s]] [[%s%s]]', maanedlenke, maaned, tonumber(aar) or aar, fkr ) ) end if presisjon == 9 then html:wikitext( string.format( '[[%s%s]]', tonumber(aar) or aar, fkr ) ) end if presisjon == 8 then html:wikitext( string.format( '[[%s-årene%s]]', math.floor(((tonumber(aar) or 0))/10)*10, fkr ) ) end if presisjon == 7 then html:wikitext( string.format( '[[%s. århundre%s]]', math.floor(((tonumber(aar) or 0)+99)/100), fkr ) ) end return tostring(html) .. kalender(value.calendarmodel) end local function frameargs(frame) local args = frame.args if args[1] == nil then local pFrame = frame:getParent(); args = pFrame.args; for k,v in pairs( frame.args ) do args[k] = v; end end local qid = args['qv'] or args['qid'] or nil if qid and qid == "" then qid = nil end local pid = args['pv'] or args['pid'] or nil -- local forkortet = args['kort'] or pid == "P569" or pid == "P570" or nil local forkortet = args['kort'] or nil return qid,pid,forkortet end function p.okProperty( claim ) -- Sjekk at claim finnes og inneholder det vi trenger for å lage ok norsk dato if not claim and claim.type ~= 'statement' then return nil end local mainsnak = claim.mainsnak or {} if mainsnak.snaktype ~= 'value' or mainsnak.datatype ~= 'time' then return nil end local datavalue = mainsnak.datavalue or {} local value = datavalue.value or {} return not not (value.time and value.precision and value.calendarmodel) end function p.finnBesteProperty(frame) local qv,pv,forkortet = frameargs(frame) local entity = mw.wikibase.getEntity(qv) if not ( entity and entity.claims and entity.claims[pv] ) then return nil,nil end local props = entity['claims'][pv] local oki = 0 for i,prop in ipairs(props) do if p.okProperty(prop) then local rank = prop.rank or 'normal' if rank == 'preferred' then return prop, pv, qv, forkortet elseif rank == 'normal' then if oki == 0 then oki = i end end end end if oki>0 then return props[oki], pv, qv, forkortet else return nil, pv, qv, forkortet end end function p.norskDatoLenket(frame) local prop,qv,pv,forkortet = p.finnBesteProperty(frame) if not prop then return "" end -- prop er nå en ok property. -- Hvis det finnes en med rank preferred er den valgt -- Hvis ingen preferred, er den første med normal valgt. -- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste -- ulenket, minimerer overlenking local kvalitet = '' if prop and prop.qualifiers and prop.qualifiers.P1480 then kvalitet = kildekvalitet(prop.qualifiers.P1480) end local tmp = refs.render(frame, prop.references) return kvalitet .. p.norskDatoLenketFraClaim(prop.mainsnak,forkortet) .. tmp end function p.norskDato(frame) local prop = p.finnBesteProperty(frame) if not prop then return "" end -- prop er nå en ok property. -- Hvis det finnes en med rank preferred er den valgt -- Hvis ingen preferred, er den første med normal valgt. -- Det siste er tilfeldig, men kan antas være mindre utsatt for tilfeldige endringer enn å velge den siste -- ulenket, minimerer overlenking return p.norskDatoFraClaim(prop.mainsnak) end -- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand -- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres -- slik at den kan brukes av andre moduler. function p.dagOgMaanedFraClaim(claim) local timestamp = claim.datavalue.value.time local presisjon = claim.datavalue.value.precision if tonumber(presisjon) < 11 then return '' end local aar, maanedlenke, maaned, dag aar, maanedlenke, maaned, dag = splitTimestamp(timestamp) if dag ~= nil and maaned ~= nil then return mw.text.nowiki( dag .. ' ' .. maaned ) else return '' end end function p.dagOgMaaned (frame) local prop = p.finnBesteProperty(frame) if not prop then return '' end return p.dagOgMaanedFraClaim(prop.mainsnak) end -- Denne funksjonen formaterer en norsk dato fra en Wikidata-påstand -- (enten en "mainsnak" eller en "qualifier"). Funksjonen eksporteres -- slik at den kan brukes av andre moduler. function p.aarFraClaim(claim) local timestamp = claim.datavalue.value.time local presisjon = tonumber(claim.datavalue.value.precision) or 0 if tonumber(presisjon) < 9 then return '' end local aar, maanedlenke, maaned, dag, fkr aar, maanedlenke, maaned, dag, fkr = splitTimestamp(timestamp) if aar ~= nil and fkr ~= ' f.Kr.' then return mw.text.nowiki( string.format('%u', aar) ) elseif aar ~= nil and fkr == ' f.Kr.' then return mw.text.nowiki( string.format('%u', aar) .. ' f.Kr.' ) else return '' end end function p.Aar(frame) local prop = p.finnBesteProperty(frame) if not prop then return '' end return mw.text.nowiki( p.aarFraClaim(prop.mainsnak) ) end function p.edit(frame) local prop, pid, qid = p.finnBesteProperty(frame) qid = qid or mw.wikibase.getEntityIdForCurrentPage() if not qid or not pid then return '' end local link = mw.ustring.format( linktarget, qid, lang:getCode(), pid ) local text = '[[File:OOjs UI icon edit-ltr-progressive.svg' .. '|frameless|text-top|10px' .. '|alt=' .. mw.text.nowiki( linktext ) .. '|link=' .. mw.text.nowiki( link ) .. '|' .. mw.text.nowiki( linktext ) .. ']]' local html = mw.html.create( 'span' ) :addClass( 'wb-edithandle' ) :attr( 'data-bridge-edit-flow', 'single-best-value' ) :wikitext( text ) return tostring( html ) end return p