Modul:WikidataDato: Forskjell mellom sideversjoner
Hopp til navigering
Hopp til søk
+metode for å finne beste property |
Finn en god property å bruke |
||
| Linje 90: | Linje 90: | ||
local entity = mw.wikibase.getEntity(qv) | local entity = mw.wikibase.getEntity(qv) | ||
if not entity then | if not entity then | ||
return | return | ||
end | end | ||
if not entity['claims'] or not entity['claims'][pv] then | if not entity['claims'] or not entity['claims'][pv] then | ||
return | return | ||
end | end | ||
local prop = entity['claims'][pv] | local prop = entity['claims'][pv] | ||
| Linje 116: | Linje 116: | ||
function p.norskDatoLenket(frame) | function p.norskDatoLenket(frame) | ||
local | local prop = p.finnBesteProperty(frame) | ||
if not prop then | |||
if not | |||
return "" | return "" | ||
end | end | ||
if not | if not prop['mainsnak']["datavalue"] | ||
or not prop['mainsnak']["datavalue"]["value"]["precision"] | |||
or not | |||
then | then | ||
return "" | return "" | ||
end | end | ||
local presisjon = | local presisjon = prop['mainsnak']["datavalue"]["value"]["precision"] | ||
local timestamp = | local timestamp = prop['mainsnak']["datavalue"]["value"]["time"] | ||
local kal = | local kal = prop['mainsnak']["datavalue"]["value"]["calendarmodel"] | ||
return norskDatoLenket(timestamp, presisjon) | return norskDatoLenket(timestamp, presisjon) | ||
end | end | ||
Sideversjonen fra 24. sep. 2015 kl. 19:08
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
function kalender(kal)
if kal == 'http://www.wikidata.org/entity/Q1985727' then
return ''
end
if kal == 'http://www.wikidata.org/entity/Q1985786' then
return ' ([[Den julianske kalenderen|juliansk]])'
end
return kal
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
if presisjon == 7 then
utstring = tonumber(string.sub(aar,1, 2))..'. århundre'
end
return utstring
end
local function norskDatoLenket(timestamp, presisjon)
local aar,maande,dag = splitTimestamp(timestamp)
if presisjon == 11 then
return '[['..dag..' '..maande..']] [['..aar..']]'
end
if presisjon == 10 then
return maande..' '..aar
end
if presisjon == 9 then
return '[['..aar..']]'
end
if presisjon == 7 then
return '[['..tonumber(string.sub(aar,1, 2))..'. århundre]]'
end
return ''
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.finnBesteProperty(frame)
local qv,pv = frameargs(frame)
local entity = mw.wikibase.getEntity(qv)
if not entity then
return
end
if not entity['claims'] or not entity['claims'][pv] then
return
end
local prop = entity['claims'][pv]
local i = 0
local oki = 0
while i < #prop do
i = i + 1
local rank = prop[i]["rank"]
if rank == 'preferred' then
return prop[i]
end
if rank == 'normal' then
if oki == 0 then
oki = i
end
end
end
if oki>0 then
return prop[oki]
end
end
function p.norskDatoLenket(frame)
local prop = p.finnBesteProperty(frame)
if not prop then
return ""
end
if not prop['mainsnak']["datavalue"]
or not prop['mainsnak']["datavalue"]["value"]["precision"]
then
return ""
end
local presisjon = prop['mainsnak']["datavalue"]["value"]["precision"]
local timestamp = prop['mainsnak']["datavalue"]["value"]["time"]
local kal = prop['mainsnak']["datavalue"]["value"]["calendarmodel"]
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"]
local kal = entity['claims'][pv][1]['mainsnak']["datavalue"]["value"]["calendarmodel"]
return norskDato(timestamp, presisjon) .. kalender(kal)
end
return p