Modulo:WikidataBiografio/provejo
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-11-07
-- ĉ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 = {}
-- komuna funkcio por Vikidatumaj eroj, kiuj enhavas kalendaran daton
function p.tempobjekto(pkodo)
local entity = mw.wikibase.getEntity()
if not entity then
return nil
end
local dato = entity:getBestStatements(pkodo)
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 naskiĝdatoj kaj mortodatoj
-- por naskiĝdato: P569
function p.naskidato()
local pkodo = "P569"
return p.tempobjekto(pkodo)
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
-- prilaboraj funkcioj por la naskiĝdato
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
-- por la mortodato: p570
function p.mortdato()
local pkodo = "P570"
return p.tempobjekto(pkodo)
end
-- prilaboraj funkcioj por la mortodato
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
-- kalkula funkcio
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 == 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
-- komuna funkcio por por Vikidatumaj eroj, kiuj povas enhavi nur unu enhavon
function p.solaobjekto(pkodo)
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local objekto = ento:getBestStatements(pkodo)
if (#objekto == 0) or (objekto[1].mainsnak.snaktype ~= "value") then
return nil
end
local x = objekto[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
-- funkcioj por naskiĝloko kaj mortoloko
function p.naskiloko()
local pkodo = "P19"
return p.solaobjekto(pkodo)
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 pkodo = "P20"
return p.solaobjekto(pkodo)
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
-- komuna funkcio por Vikidatumaj eroj, kiuj povas enhavi pli ol unu enhavon kiel liston
function p.datumobjekto(pkodo)
local ento = mw.wikibase.getEntity()
if not ento then
return nil
end
local objekto = ento:getBestStatements(pkodo)
if (#objekto == 0) or (objekto[1].mainsnak.snaktype ~= "value") then
return nil
end
local y=''
local n = #objekto
if n > 1 then
for indekso, valoro in ipairs(objekto) do
local x=mw.wikibase.label('Q' .. objekto[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= objekto[1].mainsnak.datavalue.value["numeric-id"]
y = mw.wikibase.label('Q' .. x)
end
return y
end
-- funkcio por legi okupojn el vikidatumoj (p106)
function p.okupo()
local pkodo = "P106"
return p.datumobjekto(pkodo)
end
-- funkcio por legi la sekson de persono el vikidatumoj (p21)
function p.sekso()
local pkodo = "P21"
return p.solaobjekto(pkodo)
end
-- funkcio por legi membrecon el vikidatumoj (p463)
function p.membreco()
local pkodo = "P463"
return p.datumobjekto(pkodo)
end
-- funkcio por legi geedzojn el vikidatumoj (p26)
function p.geedzoj()
local pkodo = "P26"
return p.datumobjekto(pkodo)
end
-- funkcio por legi patron el vikidatumoj (p22)
function p.patro()
local pkodo = "P22"
return p.solaobjekto(pkodo)
end
-- funkcio por legi patrinon el vikidatumoj (p25)
function p.patrino()
local pkodo = "P25"
return p.solaobjekto(pkodo)
end
-- funkcio por legi fratojn el vikidatumoj (p7)
function p.fratoj()
local pkodo = "P7"
return p.datumobjekto(pkodo)
end
-- funkcio por legi fratinojn el vikidatumoj (p9)
function p.fratinoj()
local pkodo = "P9"
return p.datumobjekto(pkodo)
end
-- funkcio por legi universitatojn el vikidatumoj (p69)
function p.universitatoj()
local pkodo = "P69"
return p.datumobjekto(pkodo)
end
-- funkcio por legi dungintojn el vikidatumoj (p108)
function p.dungintoj()
local pkodo = "P108"
return p.datumobjekto(pkodo)
end
return p