Modul:WikidataDato: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
mIngen redigeringsforklaring |
(Separer ut splitting i funksjon) |
||
Linje 17: | Linje 17: | ||
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'} |
||
function splitTimestamp(timestamp) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
if string.sub(timestamp, 1, 1) == '-' then |
|||
aar = aar..' f.kr' |
|||
⚫ | |||
return aar,maande,dag |
|||
end |
|||
local function norskDato(timestamp, presisjon) |
local function norskDato(timestamp, presisjon) |
||
aar = |
local aar,maande,dag = splitTimestamp(timestamp) |
||
⚫ | |||
⚫ | |||
if presisjon == 11 then |
if presisjon == 11 then |
||
utstring = dag..' '..maande..' '..aar |
utstring = dag..' '..maande..' '..aar |
||
Linje 30: | Linje 38: | ||
if presisjon == 9 then |
if presisjon == 9 then |
||
utstring = aar |
utstring = aar |
||
⚫ | |||
⚫ | |||
utstring = utstring..' f.kr' |
|||
end |
end |
||
return utstring |
return utstring |
Sideversjonen fra 22. sep. 2015 kl. 21:34
Formål
Å presentere datoer fra Wikidata.
Bruk i maler
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
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
Artikkel | I artikkel | Utenfor artikkel | resultat |
---|---|---|---|
Erna Solberg | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q291644 |pv=P569}} | feil i entity |
{{#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}} | feil i entity |
{{#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}} | feil i entity |
{{#invoke:WikidataDato |norskDatoLenket |pv=P569}} | {{#invoke:WikidataDato |norskDatoLenket |qv=Q859 |pv=P569}} | ||
Julien Brulé (død) | |||
Giuseppe Corsi da Celano (født) | |||
Sergej Kirdjapkin | feil i entity | ||
Sergej Kirdjapkin | |||
Nicole Oresme | |||
Hiempsal I | {{#invoke:WikidataDato |norskDato |pv=P569}} | {{#invoke:WikidataDato |norskDato |qv=Q523301 |pv=P569}} | feil i entity |
Referanser
local p = {} function dump( out ) if type( out ) == 'table' then local s = '{ ' for k,v in pairs( out ) do if type( k ) ~= 'number' then k = '"'..k..'"' end s = s .. '['..k..'] = ' .. dump( v ) .. ',' end return s .. '} ' else return tostring( out ) end end local lang = mw.language.getContentLanguage() local maanednavn = {'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'} function splitTimestamp(timestamp) local aar = tonumber(string.sub(timestamp, 2, 5)) local maande = maanednavn[tonumber(string.sub(timestamp, 7, 8))] local dag = tonumber(string.sub(timestamp, 10, 11))..'.' if string.sub(timestamp, 1, 1) == '-' then aar = aar..' f.kr' end return aar,maande,dag end local function norskDato(timestamp, presisjon) local aar,maande,dag = splitTimestamp(timestamp) if presisjon == 11 then utstring = dag..' '..maande..' '..aar end if presisjon == 10 then utstring = maande..' '..aar end if presisjon == 9 then utstring = aar end return utstring end local function norskDatoLenket(timestamp, presisjon) local success, aar = pcall(lang.formatDate, lang, 'Y', timestamp) if not success then return "" end local success, maande = pcall(lang.formatDate, lang, 'F', timestamp) if not success then return "" end local success, dag = pcall(lang.formatDate, lang, 'j.', timestamp) if not success then return "" end if presisjon == 11 then return '[['..dag..' '..maande..']] [['..aar..']]' end if presisjon == 10 then return maande..' '..aar end if presisjon == 9 then return '[['..aar..']]' end 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 return args['qv'],args['pv'] end function p.norskDatoLenket(frame) local qv,pv = frameargs(frame) local entity = mw.wikibase.getEntity(qv) if not entity then return "" end local presisjon = entity['claims'][pv][1]['mainsnak']["datavalue"]["value"]["precision"] local timestamp = entity['claims'][pv][1]['mainsnak']["datavalue"]["value"]["time"] return norskDatoLenket(timestamp, presisjon) end function p.norskDato(frame) local qv,pv = frameargs(frame) local entity = mw.wikibase.getEntity(qv) if not entity then return "feil i entity" end local presisjon = entity['claims'][pv][1]['mainsnak']["datavalue"]["value"]["precision"] local timestamp = entity['claims'][pv][1]['mainsnak']["datavalue"]["value"]["time"] return norskDato(timestamp, presisjon) end return p