Redigerer
Modul:WikidataDato
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
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
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Maler som brukes på denne siden:
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:WikidataDato
(
rediger
)
Modul:WikidataDato/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon