Modul:WikidataDato: Forskjell mellom sideversjoner

Fra Wikisida.no
Hopp til navigering Hopp til søk
mIngen redigeringsforklaring
Ingen redigeringsforklaring

Sideversjonen fra 22. sep. 2015 kl. 21:18

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 function norskDato(timestamp, presisjon)
	local maanednavn = {'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'}
	aar = string.sub(timestamp, 2, 5)
	maande = maanednavn[tonumber(string.sub(timestamp, 7, 8))]
	dag = string.sub(timestamp, 10, 11)..'.'
	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 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