Modulo:WikidataBiografio
Aspekto
[antaŭrigardi] [redakti] [historio] [renovigi]
Dokumentado
Ŝablona programado | Diskutoj | Lua | Testoj | Subpaĝoj | |||
---|---|---|---|---|---|---|---|
Modulo | Esperanto | English
|
Modulo: | Dokumentado |
Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.) |
|
-- modulo WikidataBiografio, 2015-10-29
-- ĉefaj aŭtoroj: Pino~eowiki kaj Tlustulimu
-- Jen kombinata modulo el la antaŭa [[Modulo:WikidataDato]] kaj [[Modulo:WikidataLoko]].
-- Ĝi konservas nur la historion de la unua, ĉar kombino malfacilus.
local p = {}
-- funkcioj por naskiĝdatoj kaj mortodatoj
function p.naskidato()
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local dato = entity:getBestStatements( 'P569' )
if (#dato == 0) or (dato[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = dato[1].mainsnak.datavalue.value.time
return x
end
-- funkcioj por precizeco de naskiĝdatoj
function p.Nprecizeco()
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local dato = entity:getBestStatements( 'P569' )
if (#dato == 0) or (dato[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = dato[1].mainsnak.datavalue.value.precision
return x
end
function p.Njaro()
local x = p.naskidato()
if x== nil then return nil else
x=string.sub(x,1,5)
x=tonumber(x)
return x
end
end
function p.Nmonato()
local x = p.naskidato()
if x == nil then return nil end
x=string.sub(x,7,8)
if x=='00' then x = '' end
if x=='01' then x = 'januaro' end
if x=='02' then x = 'februaro' end
if x=='03' then x = 'marto' end
if x=='04' then x = 'aprilo' end
if x=='05' then x = 'majo' end
if x=='06' then x = 'junio' end
if x=='07' then x = 'julio' end
if x=='08' then x = 'aŭgusto' end
if x=='09' then x = 'septembro' end
if x=='10' then x = 'oktobro' end
if x=='11' then x = 'novembro' end
if x=='12' then x = 'decembro' end
return x
end
function p.Ntago()
local x = p.naskidato()
if x == nil then return nil end
x=mw.text.trim(string.sub(x,10,11))
if string.sub(x,1,1)=='0' then x= string.sub(x,2,2) end
if x=='0' then x= '' end
return x
end
function p.mortdato()
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local dato = entity:getBestStatements( 'P570' )
local x=''
if (#dato == 0) then
return nil
end
if (dato[1].mainsnak.snaktype == "somevalue") then x = "nekonata" end
if x~="nekonata" then x = dato[1].mainsnak.datavalue.value.time end
return x
end
function p.Mjaro()
local x = p.mortdato()
if x == nil then return nil end
x=string.sub(x,1,5)
x=tonumber(x)
return x
end
function p.Mmonato()
local x = p.mortdato()
if x == nil then return nil end
x=string.sub(x,7,8)
if x=='00' then x = '' end
if x=='01' then x = 'januaro' end
if x=='02' then x = 'februaro' end
if x=='03' then x = 'marto' end
if x=='04' then x = 'aprilo' end
if x=='05' then x = 'majo' end
if x=='06' then x = 'junio' end
if x=='07' then x = 'julio' end
if x=='08' then x = 'aŭgusto' end
if x=='09' then x = 'septembro' end
if x=='10' then x = 'oktobro' end
if x=='11' then x = 'novembro' end
if x=='12' then x = 'decembro' end
return x
end
function p.Mtago()
local x = p.mortdato()
if x == nil then return nil end
x=mw.text.trim(string.sub(x,10,11))
if string.sub(x,1,1)=='0' then x= string.sub(x,2,2) end
if x=='0' then x= '' end
return x
end
function p.agho()
local d=p.naskidato()
if d == nil then return nil
end
local y=string.sub(d,7,8)
local z=string.sub(d,10,11)
d=os.time{year=p.Njaro(), month=y, day=z}
local f=p.mortdato()
local x = p.mortdato()
if x=='nekonata' then return 'mortdato ne konata' end
if x == nil then f=os.time() else
x=string.sub(x,7,8)
z=string.sub(d,10,11)
f=os.time{year=p.Mjaro(), month=x, day=z} end
return math.floor((f-d)/3600/24/365.25)
end
function p.vivanta()
local x = p.mortdato()
if (x == nil) then return 0 else return 1 end
end
-- funkcioj por naskiĝloko kaj mortoloko
function p.naskiloko()
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local loko = ento:getBestStatements( 'P19' )
if (#loko == 0) or (loko[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = loko[1].mainsnak.datavalue.value["numeric-id"]
-- jen kodo, kiu surbaze de la id-numero trovas la rilatan artikolon
x= mw.wikibase.label('Q' .. x)
return x
end
-- funkcio por la ligilo en ŝablonoj
function p.NlokTeksto()
local n = p.naskiloko()
local r = ""
if n ~= nil then
r = "[[" .. n .. "]]"
else
return nil
end
return r
end
function p.mortloko()
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local loko = ento:getBestStatements( 'P20' )
if (#loko == 0) or (loko[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = loko[1].mainsnak.datavalue.value["numeric-id"]
-- jen kodo, kiu surbaze de la id-numero trovas la rilatan artikolon
x= mw.wikibase.label('Q' .. x)
return x
end
-- funkcio por la ligilo en ŝablonoj
function p.MlokTeksto()
local m = p.mortloko()
local r = ""
if m ~= nil then
r = "[[" .. m .. "]]"
else
return nil
end
return r
end
-- funkcio por legi okupojn el vikidatumoj (p106)
function p.okupo()
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local okupo = ento:getBestStatements( 'P106' )
if (#okupo == 0) or (okupo[1].mainsnak.snaktype ~= "value") then
return nil
end
local y=''
local n = #okupo
if n > 1 then
for indekso, valoro in ipairs(okupo) do
local x=mw.wikibase.label('Q' .. okupo[indekso].mainsnak.datavalue.value["numeric-id"])
if x ~= nil then
if indekso == 1 then y = x else y=y .. ',' .. x end
end
end
else
local x= okupo[1].mainsnak.datavalue.value["numeric-id"]
y = mw.wikibase.label('Q' .. x)
end
return y
end
-- funkcio por legi la sekson de persono el vikidatumoj (p21)
function p.sekso()
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local sekso = ento:getBestStatements( 'P21' )
if (#sekso == 0) or (sekso[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = sekso[1].mainsnak.datavalue.value["numeric-id"]
-- jen kodo, kiu surbaze de la id-numero trovas la rilatan artikolon
x= mw.wikibase.label('Q' .. x)
return x
end
return p