Modulo:Biografio/provejo
[antaŭrigardi] [redakti] [historio] [renovigi]
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 Biografio, 2020-04-14
-- ĉi tiu modulo celas aranĝi la ŝablonon {{informkesto biografio}}, kiu konsistas el tri partoj:
-- enkonduka frazo
-- kategorioj
-- informkesto
local datoj = require("Modulo:Datoj")
local wikidata = require("Modulo:Wikidata") -- bonvolu atenti, ke temas pri du malsamaj moduloj!
local wikidatoj = require("Modulo:WikidataBiografio") -- bonvolu atenti, ke temas pri du malsamaj moduloj!
local listoj = require("Modulo:Listutil")
local bildoj = require("Modulo:InfoboxImage/provejo")
local informkesto = require("Modulo:Informkesto")
local ligiloj = require ("Modulo:Linkutil")
-- helpaj funkcioj sen ŝablonoj
local function aldonulinion (c1, c2, wd)
local tabellinio = tabelo:tag("tr")
local chelo1 = tabellinio:tag("td")
:wikitext("'''" .. c1 .. "'''")
:done()
if wd == "jes" then
local chelo2 = tabellinio:tag("td")
:addClass("wikidata-content")
:wikitext(c2)
:done()
:newline()
else
local chelo2 = tabellinio:tag("td")
:wikitext(c2)
:done()
:newline()
end
end
-- rearanĝas la okupojn, traŝovante la unuopajn erojn tra alia helpa funkcio, se estas pli ol unu
-- alie faru kiel ĉe "okupo", "okupo2" kaj "okupo3"
-- "chu" stiras, ĉu la rekunigitaj listeroj jam estu traktataj de la modulo Listutil aŭ ne
local function okupoanalizo(okupoj,chu)
local o = ""
local n = listoj._count(",",okupoj)
if n > 1 then
local strings = mw.text.split(okupoj, ",", plain)
for k,v in pairs(strings) do
local listero = ""
if ligiloj._chuligilo1(v) then
listero = "[[" .. v .. "]]"
else
listero = v
end
if k > 1 then
o = o .. "," .. listero
else
o = listero
end
end
if chu ~="ne" then
o = listoj._list(",",o,"jes","kaj")
end
else
-- analizo, ĉu jam estas ligilo. se jes, ŝanĝu nenion.
if ligiloj._chuligilo1(okupoj) then
o = "[[" .. okupoj .. "]]"
else
o = okupoj
end
end
return o
end
local function okupokategorio (shtato, okupo,t)
if shtato ~= "" and shtato ~= nil then
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate{
title="Informkesto biografio/Kategorio",
args={
shtato,
okupo
}
}
if t ~="" then
r = mw.ustring.gsub(r,"%[%[Kategorio:","[[:Kategorio:")
end
return r
else
return ""
end
end
local function shtatadjektivo (shtato)
local frame = mw.getCurrentFrame()
local st = frame:expandTemplate{
title = "Informkesto biografio/Ŝtatlisto",
args = {
shtato,
}
}
return st
end
local function vivtempo (naskjaro, mortjaro,t)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate{
title="Vivtempo",
args = {}
}
if t ~="" then
n = mw.ustring.gsub(n,"%[%[Kategorio:","[[:Kategorio:")
end
return n
end
local function etmajuskloj (teksto)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="etmajuskloj",
args = {
teksto
}
}
return n
end
local function monato (m)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="monato",
args = {
m
}
}
return n
end
local function paghenamebase ()
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="PAGENAMEBASE",
}
return n
end
local p = {}
function p.enkonduko ( frame )
-- This function builds the infobox used by the {{informkesto biografio}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {wrappers = "Ŝablono:Informkesto biografio"})
-- nomoj
local antaunomo = args["Antaŭnomo"] or ""
local familinomo = args["Familinomo"] or ""
local postnomo = args["Postnomo"] or ""
local prononco = args["Prononco"] or ""
local postfamilinomo = args["PostFamilinomo"] or ""
local aliajlingvoj = args["AliajLingvoj"] or ""
local veranomo = args["VeraNomo"] or ""
-- datoj
local nasktago = args["NaskiĝTago"] or ""
local naskmonato = args["NaskiĝMonato"] or ""
local naskjaro = args["NaskiĝJaro"] or ""
local naskodato = args["Naskiĝdato"] or args["Dato de naskiĝo"] or ""
local naskloko = args["NaskiĝLoko"] or args["Loko de naskiĝo"] or ""
local nasklokoligilo = args["NaskiĝLokoLigilo"] or ""
local morttago = args["MortTago"] or ""
local mortmonato = args["MortMonato"] or ""
local mortjaro = args["MortJaro"] or ""
local mortodato = args["Mortodato"] or args["Mortdato"] or args["Dato de morto"] or ""
local mortloko = args["MortLoko"] or args["Loko de morto"] or ""
local mortlokoligilo = args["MortLokoLigilo"] or ""
-- okupoj
local antauokupo = args["AntaŭOkupo"] or ""
local okupoj = args["Okupoj"] or ""
local okupo = args["Okupo"] or ""
local okupo2 = args["Okupo2"] or ""
local okupo3 = args["Okupo3"] or ""
local aliajokupoj = args["AliajOkupoj"] or ""
local postokupo = args["PostOkupo"] or ""
-- lokaj aferoj
local shtato = args["Ŝtato"] or ""
-- ceteraj variabloj
local r = ""
local estas = "estas"
local spaco = " "
-- noma parto
local nomo = "'''"
if antaunomo ~= "" then
nomo = nomo .. antaunomo .. spaco
end
if familinomo ~= "" then
nomo = nomo .. '<span style="text-transform:uppercase">' .. familinomo .. "</span>"
end
if postnomo ~= "" then
nomo = nomo .. spaco .. postnomo
end
nomo = nomo .. "'''"
r = r .. nomo
-- stira variablo por la sekvaj informoj kaj la funkcia bloko pri naskiĝo kaj morto
local jamkrampo = false
-- transdoni prononcindikon al la rilata ŝablono
if prononco ~= "" then
local p = frame:expandTemplate{
title = "prononco",
args = {
prononco,
}
}
r = r .. spaco .. "(" .. p
jamkrampo = true
end
if postfamilinomo ~= "" then
local k = ""
if jamkrampo == false then
k = "("
jamkrampo = true
else
k = ", "
end
r = r .. spaco .. k .. postfamilinomo
end
if aliajlingvoj ~= "" then
local k = ""
if jamkrampo == false then
k = "("
jamkrampo = true
else
k = ", "
end
r = r .. spaco .. k .. aliajlingvoj
end
-- data parto
local n = "" -- pri naskiĝo
local m = "" -- pri morto
local d = "" -- pri la tuta dataro
local v = "" -- vera nomo kun indiko pri tio
-- naskiĝa parto de la skripto
if nasktago ~= "" and naskmonato ~= "" then
local naskdato = datoj._daton(nasktago, naskmonato, naskjaro)
n = "naskiĝis la " .. naskdato
elseif naskjaro ~= "" then
if naskjaro == "?" then
n = "naskiĝdato nekonata"
else
local testo = tonumber(naskjaro)
if type(testo) == "number" then
n = "naskiĝis en [[" .. naskjaro .. "]]"
else
n = "naskiĝis " .. naskjaro
end
end
elseif nasktago == "" and naskmonato == "" and naskjaro == "" then
if naskodato ~= "" then
n = "naskiĝis la " .. naskodato
else
-- rigardu al Vikidatumoj
local naskdato = wikidatoj.naskidato()
if naskdato ~= nil then
-- n = "naskiĝis " .. wikidatoj.Nteksto()
n = "naskiĝis " .. datoj.Nteksto()
end
end
end
if naskloko ~= "" then
local komo = ""
-- se jam estas enhavo, interŝovu komon
if n ~= "" then
komo = ", "
else
komo = "naskiĝis "
end
if nasklokoligilo ~= "" then
naskloko = "[[" .. nasklokoligilo .. "|" .. naskloko .. "]]"
else
local l = listoj._count(",",naskloko)
if l > 1 then
naskloko = listoj._list(",",naskloko, "jes", "span", ",", "", "", "", 0, "")
else
naskloko = "[[" .. naskloko .. "]]"
end
end
n = n .. komo .. "en " .. naskloko
-- jen skripto pri tio en wikidatumoj
else
naskloko = wikidatoj.naskiloko()
if naskloko == nil then
naskloko = ""
else
naskloko = "[[" .. naskloko .. "]]"
n = n .. ", " .. "en " .. naskloko
end
end
-- parto pri la mortodatoj de la skripto
if morttago ~= "" and mortmonato ~= "" then
local mortdato = datoj._daton(morttago, mortmonato, mortjaro)
m = spaco .. "mortis la " .. mortdato
estas = "estis"
elseif mortjaro ~= "" then
if mortjaro == "?" then
m = spaco .. "mortodato nekonata"
else
local testo = tonumber(mortjaro)
if type(testo) == "number" then
m = spaco .. "mortis en [[" .. mortjaro .. "]]"
else
m = spaco .. "mortis " .. mortjaro
end
end
estas = "estis"
elseif morttago == "" and mortmonato == "" and mortjaro == "" then
if mortodato ~= "" then
m = spaco .. "mortis la " .. mortodato
else
-- rigardu al Vikidatumoj
local mortdato = wikidatoj.mortdato()
if mortdato ~= nil then
-- if la homo mortis, aŭ oni konas lian datmorton aŭ oni ne konas ĝin
if mortdato ~= "nekonata" then
m = spaco .. "mortis " .. datoj.Mteksto()
elseif mortdato == "nekonata" then
m = spaco .. "mortis je nekonata dato"
end
estas = "estis"
end
end
end
if mortloko ~= "" then
local komo = ""
-- se jam estas enhavo, interŝovu komon
if n ~= "" then
komo = ", "
else
komo = "mortis "
end
if mortlokoligilo ~= "" then
mortloko = "[[" .. mortlokoligilo .. "|" .. mortloko .. "]]"
else
local l = listoj._count(",",mortloko)
if l > 1 then
mortloko = listoj._list(",",mortloko, "jes", "span", ",", "", "", "", 0, "")
else
mortloko = "[[" .. mortloko .. "]]"
end
end
m = m .. komo .. "en " .. mortloko
-- jen skripto pri tio en wikidatumoj
else
mortloko = wikidatoj.mortloko()
if mortloko == nil then
mortloko = ""
else
mortloko = "[[" .. mortloko .. "]]"
m = m .. ", " .. "en " .. mortloko
end
end
if veranomo ~= "" then
v = "; vera nomo " .. veranomo
end
-- kunmetado de la informoj pri la naskiĝo kaj morto, se tiaj datoj estas ie difinitaj
-- se ekzistas informoj pri prononco, postfamilinomo aŭ aliajlingvoj, tiam la enkonduka krampo
-- jam estas tie kaj ĉi tie devas esti punktokomo
local k = "; "
if jamkrampo == false then
k = "("
jamkrampo = true
end
if n ~= "" and m ~= "" then
d = spaco .. k .. n .. "," .. m .. v .. ") "
elseif n ~= "" and m == "" then
d = spaco .. k .. n .. v .. ") "
elseif n == "" and m ~= "" then
d = spaco .. k .. "naskiĝdato nekonata; " .. m .. v .. ") "
elseif n == "" and m == "" then
d = spaco .. k .. "naskiĝdato nekonata" .. v .. ") "
end
-- aldono al la eldonota signoĉeno
r = r .. d
-- fina krampo estu aranĝata, se informoj pri naskiĝo kaj morto forestas, sed estas io pri
-- prononco, postfamilinomo aŭ aliajlingvoj
if d == "" and jamkrampo == true then
r = r .. ") "
end
-- aldono al la eldonota signoĉeno
if antauokupo ~= "" then
r = r .. antauokupo .. spaco
else
r = r .. " " .. estas
end
-- ŝtato kaj la rilata adjektivo per ŝablono
local s = " [[" .. shtato .. "|"
local st = shtatadjektivo(shtato)
r = r .. s .. st .. "]] "
-- okupoj
local o = ""
if okupoj ~="" then
if aliajokupoj ~= "" then
okupoj = okupoj .. "," .. aliajokupoj
end
o = okupoanalizo(okupoj)
elseif okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
local okupoj = ""
if okupo ~="" then
if ligiloj._chuligilo1(okupo) then
okupoj = "[[" .. okupo .. "]]"
else
okupoj = okupo
end
end
if okupo2 ~="" then
local o2 = okupo2
if ligiloj._chuligilo1(okupo2) then
o2 = "[[" .. o2 .. "]]"
end
okupoj = okupoj .. "," .. o2
end
if okupo3 ~="" then
local o3 = okupo3
if ligiloj._chuligilo1(okupo3) then
o3 = "[[" .. o3 .. "]]"
end
okupoj = okupoj .. "," .. o3
end
if aliajokupoj ~="" then
local o_a = okupoanalizo(aliajokupoj,"ne")
okupoj = okupoj .. "," .. o_a
end
if okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
o = listoj._list(",",okupoj,"jes","kaj")
end
else
-- okupoj el Vikidatumoj
local wdo = wikidatoj.okupo()
if wdo ~= nil then
o = listoj._list(",",wdo,"jes","kaj")
end
end
r = r .. o
-- io metata post la okupoj
if postokupo ~= "" then
r = r .. postokupo
end
return r
end
--
function p.kategorio (frame)
-- This function builds the infobox used by the {{informkesto biografio}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {wrappers = "Ŝablono:Informkesto biografio"})
-- nomoj
local antaunomo = args["Antaŭnomo"] or ""
local familinomo = args["Familinomo"] or ""
local postnomo = args["Postnomo"] or ""
local prononco = args["Prononco"] or ""
local postfamilinomo = args["PostFamilinomo"] or ""
local aliajlingvoj = args["AliajLingvoj"] or ""
local veranomo = args["VeraNomo"] or ""
-- datoj
local nasktago = args["NaskiĝTago"] or ""
local naskmonato = args["NaskiĝMonato"] or ""
local naskjaro = args["NaskiĝJaro"] or ""
local naskodato = args["Naskiĝdato"] or args["Dato de naskiĝo"] or ""
local naskloko = args["NaskiĝLoko"] or args["Loko de naksiĝo"] or ""
local morttago = args["MortTago"] or ""
local mortmonato = args["MortMonato"] or ""
local mortjaro = args["MortJaro"] or ""
local mortodato = args["Mortodato"] or args["Mortdato"] or args["Dato de morto"] or ""
local mortloko = args["MortLoko"] or args["Loko de morto"] or ""
-- okupoj
local antauokupo = args["AntaŭOkupo"] or ""
local okupoj = args["Okupoj"] or ""
local okupo = args["Okupo"] or ""
local okupo2 = args["Okupo2"] or ""
local okupo3 = args["Okupo3"] or ""
local aliajokupoj = args["AliajOkupoj"] or ""
local postokupo = args["PostOkupo"] or ""
-- lokaj aferoj
local shtato = args["Ŝtato"] or ""
-- por la kategorioj
local ordigilo = args["Ordigo"] or ""
local ordigu = args["Ordigu"] or ""
local test = args["Testo"] or ""
-- ceteraj variabloj
local r = ""
local okat = ""
local spaco = " "
local t = ""
if test == "yes" or test == "jes" then
t = ":"
end
-- kategorioj pri okupoj
if okupoj ~= "" then
local n = listoj._count(",", okupoj)
if n > 1 then
strings = mw.text.split(okupoj, ",", plain)
for k,v in pairs(strings) do
v = ligiloj._delink(v)
local okat1 = okupokategorio(shtato,v,t)
okat = okat .. okat1
end
else
okupoj = ligiloj._delink(okupoj)
local okat1 = okupokategorio(shtato,okupoj,t)
okat = okat .. okat1
end
end
if okupo ~="" then
okupo = ligiloj._delink(okupo)
local okat1 = okupokategorio(shtato,okupo,t)
okat = okat .. okat1
end
if okupo2 ~="" then
okupo2 = ligiloj._delink(okupo2)
local okat1 = okupokategorio(shtato,okupo2,t)
okat = okat .. okat1
end
if okupo3 ~="" then
okupo3 = ligiloj._delink(okupo3)
local okat1 = okupokategorio(shtato,okupo3,t)
okat = okat .. okat1
end
-- Kategorioj pri okupoj el Vikidatumoj, se nenio alia ĉeestas
if okupoj == "" and okupo == "" and okupo2 == "" and okupo3 == "" then
local wdo = wikidatoj.okupo()
if wdo ~= nil then
local n = listoj._count(",", wdo)
if n > 1 then
strings = mw.text.split(wdo, ",", plain)
for k,v in pairs(strings) do
local okat1 = okupokategorio(shtato,v,t)
okat = okat .. okat1
end
else
local okat1 = okupokategorio(shtato,wdo,t)
okat = okat .. okat1
end
end
end
-- transpreno de informoj pri la sekso de persono el vikidatumoj
local sekso = wikidatoj.sekso()
if sekso ~= nil then
if sekso == "vira" then
okat = okat .. okat .. "[[" .. t .. "Kategorio:Viroj]]"
elseif sekso == "ina" then
okat = okat .. okat .. "[[" .. t .. "Kategorio:Virinoj]]"
end
end
-- aldono al la eldonenda signoĉeno
r = r .. okat
-- ordigo
--{{DEFAULTSORT:{{ucfirst:{{#if:{{{Ordigo|}}}|{{{Ordigo}}}|{{#if:{{{Familinomo|}}}|{{{Familinomo}}} ,{{{Antaŭnomo}}}|{{{Antaŭnomo}}}}}}}}}}}
local ordigo = ""
if ordigilo ~="" then
local ordigilo = mw.ustring.upper(mw.ustring.sub(ordigilo, 1, 1)) .. mw.ustring.sub(ordigilo, 2) -- anstataŭaĵo de {{ucfirst:
ordigo = ordigo .. ordigilo
else
if familinomo ~= "" then
ordigo = ordigo .. familinomo .. spaco .. "," .. antaunomo
else
ordigo = ordigo .. antaunomo
end
end
-- ĝi okazu nur, se la koncerna variablo ne malŝaltas tion
if ordigu ~= "ne" then
ordigo = frame:callParserFunction{ name = "DEFAULTSORT", args = ordigo }
else
-- se ne okazu ordigo laŭ iu ordigilo, forĵetu tion, por ke tio ne subite aperu kiel normala teksto
ordigo = ""
end
-- aldono al la eldonenda signoĉeno
r = r .. ordigo
-- dataj kategorioj
if naskjaro ~= "" then
local n = vivtempo(naskjaro,mortjaro,t)
-- aldono al la eldonenda signoĉeno
r = r .. n
elseif naskodato ~= "" and mortodato ~= "" then
local n = vivtempo(naskodato, mortodato, t)
r = r .. n
elseif naskodato ~= "" and mortodato == "" then
local n = vivtempo(naskodato, "", t)
r = r .. n
elseif naskodato == "" and mortodato ~= "" then
local n = vivtempo("NEKONATA",mortodato,t)
r = r .. n
else
local n = wikidatoj.naskidato()
if n ~= nil then
local n = wikidatoj.Njaro()
local m = wikidatoj.Mjaro()
if wikidatoj.mortdato() == "nekonata" then m="NEKONATA" end
local k = vivtempo(n,m,t)
--local k = ""
-- aldono al la eldonenda signoĉeno
r = r .. k
end
end
return r
end
local function kesteroj(nomo, trajto)
if trajto == 'ĉelo' then
tabelo:wikitext('<tr><td colspan="2" style="padding:0"><div>\n')
tabelo:wikitext('{| style="width:23em"\n')
tabelo:wikitext('|-\n')
end
--tabelo:wikitext('\n<nowiki/>\n')
tabelo:wikitext('\n\n')
tabelo:wikitext(nomo)
if trajto == 'ĉelo' then
tabelo:wikitext('\n\n|}\n')
tabelo:wikitext('\n</div></td></tr>')
end
end
-- funkcio por la informkesta parto, iom post iom kompletigota
function p.informkesto (frame)
-- This function builds the infobox used by the {{informkesto biografio}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {wrappers = "Ŝablono:Informkesto biografio"})
-- nomoj
local antaunomo = args["Antaŭnomo"] or ""
local familinomo = args["Familinomo"] or ""
local postnomo = args["Postnomo"] or ""
local prononco = args["Prononco"] or ""
local postfamilinomo = args["PostFamilinomo"] or ""
local aliajlingvoj = args["AliajLingvoj"] or ""
local veranomo = args["VeraNomo"] or ""
local nomoj = args["Nomoj"] or "" -- por nestigo pri nomoj
local trajto_nomoj = args["Trajto por nomoj"] -- stira variablo por "nomoj"
-- bildo resp. dosiero
local dosiero = args["Dosiero"] or ""
local tipodosiero = args["TipoDosiero"] or ""
local dosieragrandeco = args["Dosiera grandeco"] or ""
local subteksto = args["Subteksto"] or ""
-- datoj
local nasktago = args["NaskiĝTago"] or ""
local naskmonato = args["NaskiĝMonato"] or ""
local naskjaro = args["NaskiĝJaro"] or ""
local naskodato = args["Naskiĝdato"] or args["Dato de naskiĝo"] or ""
local naskloko = args["NaskiĝLoko"] or args["Loko de naskiĝo"] or ""
local nasklokoligilo = args["NaskiĝLokoLigilo"] or ""
local morttago = args["MortTago"] or ""
local mortmonato = args["MortMonato"] or ""
local mortjaro = args["MortJaro"] or ""
local mortodato = args["Mortodato"] or args["Mortdato"] or args["Dato de morto"] or ""
local mortloko = args["MortLoko"] or args["Loko de morto"] or ""
local mortlokoligilo = args["MortLokoLigilo"] or ""
local mortokialo = args["Mortokialo"] or args["Kialo de morto"] or ""
-- okupoj
local antauokupo = args["AntaŭOkupo"] or ""
local okupoj = args["Okupoj"] or ""
local okupo = args["Okupo"] or ""
local okupo2 = args["Okupo2"] or ""
local okupo3 = args["Okupo3"] or ""
local aliajokupoj = args["AliajOkupoj"] or ""
local postokupo = args["PostOkupo"] or ""
-- lokaj aferoj
local shtato = args["Ŝtato"] or ""
-- iom por nestigo je la fino
local kesteroj2 = args["Kesteroj"] or "" -- por nestigo de alia ŝablono aŭ informkesto
local trajto_kesteroj2 = args["Trajto por kesteroj"] -- stira variablo por "Kesteroj"
-- formatoj
local fono = args["Fono"] or ""
if fono == "" then
-- ĉi tie prefere estu difinata la sama koloro kiel en {{informkesto homoj}} por la tiea kaplinio kaj piedlinio
-- laŭ ĵusa diskuto sur [[Ŝablono-Diskuto:Informkesto_homoj]] pri la koloroj, 20151013
fono = "#DDDDFF"
end
-- ceteraj variabloj
local r = ""
local spaco = " "
local fn1 = '<span style="text-transform:uppercase">'
local fn2 = "</span>"
local br = "<br/>"
-- komenco de la tabelo
-- la variablo "tabelo" ne povas esti local, ĉar alie ĝia uzo en subŝablono ne funkcias
tabelo = mw.html.create("table")
:addClass("infobox vcard")
:css("width","23em")
:css("-moz-box-shadow", "4px 4px 4px #ccc")
:css("-webkit-box-shadow", "4px 4px 4px #ccc")
:css("box-shadow", "4px 4px 4px #ccc")
:newline()
-- kaplinio
local tabelkapo = tabelo:tag("tr")
-- kaplinia ĉelo
local kapchelo = tabelkapo:tag("th")
:addClass("kaplinio persono fn")
:attr("colspan","3")
:css("color","#000")
:css("background-color",fono)
:css("text-align","center")
-- nomoj
local n = ""
if antaunomo ~="" then
n = antaunomo .. spaco
end
if familinomo ~="" then
n = n .. fn1 .. familinomo .. fn2
end
if postnomo ~= "" then
n = n .. br .. spaco .. postnomo
end
-- meto de la nomoj en la kapĉelon
kapchelo:wikitext (n)
:done()
:newline()
if nomoj ~= "" and nomoj ~= nil then
kesteroj(nomoj, trajto_nomoj)
end
-- parto por la tabela korpo
-- bilda parto
-- colspan="2" style="font-size:smaller;text-align: center"
if dosiero ~= "" then
local bildo = tabelo:tag("tr")
local bildchelo = bildo:tag("td")
:attr("colspan","2")
:css("font-size","smaller")
:css("text-align","center")
-- {{#invoke:InfoboxImage|InfoboxImage|image={{{Dosiero|}}}|ending={{{TipoDosiero|}}}|endingdefault=jpg|size={{{Dosiera grandeco|}}}|sizedefault=220px|alt={{{Subteksto|{{{Antaŭnomo|}}}}}}|suppressplaceholder=yes}}
local alt = antaunomo
local n = antaunomo .. " " .. etmajuskloj(familinomo)
if subteksto ~= "" then
alt = subteksto
n = subteksto
end
local b = bildoj._InfoboxImage(dosiero, tipodosiero, "jpg", dosieragrandeco, "", "220px", alt, "", "", "", "", "", "", "", "yes")
-- {{{Subteksto|{{{Antaŭnomo}}} {{etmajuskloj|{{{Familinomo}}}}}}}}}}
if n ~= "" then
b = b .. "<div>" .. n .. "</div>"
end
bildchelo:wikitext(b)
end
-- personaj informoj
local subtitolo1 = tabelo:tag("tr")
local titol1chelo = subtitolo1:tag("th")
:css("background-color","#ddd")
:css("text-align","center")
:attr("colspan","2")
:wikitext("Persona informo")
:done()
:newline()
--! {{#if:{{{VeraNomo|}}}|Plumnomo|Nomo}}
--| {{#if:{{{Antaŭnomo|}}}|{{{Antaŭnomo}}} |}}{{etmajuskloj|{{{Familinomo|}}}}}{{#if:{{{Postnomo|}}}| {{{Postnomo}}}|}}
local n1 = "Nomo"
local n2 = ""
if veranomo ~= "" then
n1 = "Plumnomo"
end
if antaunomo ~= "" then
n2 = antaunomo .. spaco
end
if familinomo ~= "" then
n2 = n2 .. etmajuskloj(familinomo)
end
if postnomo ~= "" then
n2 = n2 .. spaco .. postnomo
end
-- unua tabellinio por nomoj
tabelo:newline()
aldonulinion (n1, n2)
-- dua tabellinio por nomoj
if veranomo ~= "" then
local n1 = "Vera nomo"
local n2 = veranomo
tabelo:newline()
aldonulinion (n1, n2)
end
-- naskiĝjaro
local n1 = "Dato de naskiĝo"
if naskjaro ~= "" then
local testo = tonumber(naskjaro)
local n2 = ""
if type(testo) == "number" then
n2 = datoj._dato(nasktago,naskmonato,naskjaro)
else
n2 = naskjaro
end
aldonulinion (n1, n2)
elseif naskodato ~= "" then
n2 = naskodato
aldonulinion (n1, n2)
else
local naskdato = wikidatoj.naskidato()
if naskdato ~= nil then
-- n2 = wikidatoj.Nkesto()
n2 = datoj.Nkesto()
local wdl = wikidata._pageId() -- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P569|[+]]]</span>
if wdl ~= nil then
n2 = n2 .. ' <span class="el_wd">[[:d:' .. wdl .. "#P569|[#]]]</span>"
end
local wd = "jes"
aldonulinion (n1, n2, wd)
end
end
-- nakiĝloko
local n1 = "Loko de naskiĝo"
if naskloko ~= "" then
if nasklokoligilo ~= "" then
n2 = "[[" .. nasklokoligilo .. "|" .. naskloko .. "]]"
else
local l = listoj._count(",",naskloko)
if l > 1 then
n2 = listoj._list(",",naskloko, "jes", "span", ",", "", "", "", 0, "")
else
n2 = "[[" .. naskloko .. "]]"
end
end
aldonulinion (n1, n2)
else
local nl = wikidatoj.NlokTeksto()
if nl ~= nil then
n2 = nl
local wdl = wikidata._pageId() -- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P19|[+]]]</span>
if wdl ~= nil then
n2 = n2 .. ' <span class="el_wd">[[:d:' .. wdl .. "#P19|[#]]]</span>"
end
local wd = "jes"
aldonulinion (n1, n2, wd)
end
end
-- mortjaro
local m1 = "Dato de morto"
if mortjaro ~= "" then
local testo = tonumber(mortjaro)
local m2 = ""
if type(testo) == "number" then
m2 = datoj._dato(morttago,mortmonato,mortjaro)
else
m2 = mortjaro
end
aldonulinion (m1, m2)
elseif mortodato ~= "" then
m2 = mortodato
aldonulinion (m1, m2)
else
local mortdato = wikidatoj.mortdato()
if mortdato ~= nil then
-- m2 = wikidatoj.Mkesto()
m2 = datoj.Mkesto()
if wikidatoj.mortdato() == "nekonata" then m2="nekonata" end
local wdl = wikidata._pageId() -- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P570|[+]]]</span>
if wdl ~= nil then
m2 = m2 .. ' <span class="el_wd">[[:d:' .. wdl .. "#P570|[#]]]</span>"
end
local wd = "jes"
aldonulinion (m1, m2, wd)
end
end
-- mortloko
local m1 = "Loko de morto"
if mortloko ~= "" then
if mortlokoligilo ~= "" then
m2 = "[[" .. mortlokoligilo .. "|" .. mortloko .. "]]"
else
local l = listoj._count(",",mortloko)
if l > 1 then
m2 = listoj._list(",",mortloko, "jes", "span", ",", "", "", "", 0, "")
else
m2 = "[[" .. mortloko .. "]]"
end
end
aldonulinion (m1, m2)
else
local ml = wikidatoj.MlokTeksto()
if ml ~= nil then
m2 = ml
local wdl = wikidata._pageId() -- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P20|[+]]]</span>
if wdl ~= nil then
m2 = m2 .. ' <span class="el_wd">[[:d:' .. wdl .. "#P20|[#]]]</span>"
end
local wd = "jes"
aldonulinion (m1, m2, wd)
end
end
if mortokialo ~= "" then
aldonulinion("Mortokialo", mortokialo)
else
local mk = wikidata.claim({args={'P509',id=wd} })
if mk ~= "" and mk ~= nil then
aldonulinion("Mortokialo", mk)
end
end
-- okupoj
local o = ""
local n = 1 -- nombro de okupoj, ĉar de tio dependas la teksto en la tabelo
local wd = "" -- indikilo por vikidatuma deveno, uzata malsupre
if okupoj ~="" then
if aliajokupoj ~= "" then
okupoj = okupoj .. "," .. aliajokupoj
end
n = listoj._count(",",okupoj)
o = okupoanalizo(okupoj)
elseif okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
local okupoj = ""
if okupo ~="" then
local o1 = okupo
if ligiloj._chuligilo1(okupo) then
o1 = "[[" .. o1 .. "]]"
end
okupoj = o1
end
if okupo2 ~="" then
local o2 = okupo2
if ligiloj._chuligilo1(okupo2) then
o2 = "[[" .. o2 .. "]]"
end
okupoj = okupoj .. "," .. o2
end
if okupo3 ~="" then
local o3 = okupo3
if ligiloj._chuligilo1(okupo3) then
o3 = "[[" .. o3 .. "]]"
end
okupoj = okupoj .. "," .. o3
end
if aliajokupoj ~="" then
local o_a = okupoanalizo(aliajokupoj,"ne")
okupoj = okupoj .. "," .. o_a
end
if okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
n = listoj._count(",",okupoj)
if n > 1 then
o = listoj._list(",",okupoj,"jes","kaj","","jes") -- disiga signo, ĉitiea variablo, modo, limsigno (ĉikaze ne uzata), linisalto
else
o = okupoj
end
end
else
-- okupoj el Vikidatumoj
local wdo = wikidatoj.okupo()
if wdo ~= nil then
n = listoj._count(",",wdo)
o = listoj._list(",",wdo,"jes","kaj","","jes")
wd = "jes" -- ne estu "local" ĉi tie, ĉar alie ne funkcios ekster ĉi tiu else-bloko
end
end
-- metado en tabelajn ĉelojn
local o1 = "Okupoj"
if o ~= "" then
if n == 1 or n == "1" then
o1 = "Okupo"
end
local o2 = o
if wd == "jes" then
local wdl = wikidata._pageId() -- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P106|[+]]]</span>
if wdl ~= nil then
o2 = o2 .. ' <span class="el_wd">[[:d:' .. wdl .. "#P106|[#]]]</span>"
end
aldonulinion(o1, o2,wd)
else
aldonulinion(o1, o2)
end
end
-- aĝo
local a = ""
-- {{{Familinomo|}}}, {{#if:{{{Antaŭnomo|}}}| {{{Antaŭnomo}}}|}}{{#if:{{{Postnomo|}}}| {{{Postnomo}}}|}}}}
local ordigo = familinomo .. ", "
if antaunomo ~= "" then
ordigo = ordigo .. spaco .. antaunomo
end
if postnomo ~= "" then
ordigo = ordigo .. spaco .. postnomo
end
-- se la nomoj ne estas difinitaj, malplenigu la ordigan ŝlosilon
if ordigo == ", " then
ordigo = ""
end
local v = true -- ĉu viva?
if naskjaro ~= "" and mortjaro ~="" then
-- naskiĝdato
local nj = naskjaro
local nm = "januaro"
if naskmonato ~= "" then
nm = naskmonato
end
local nm = monato(nm)
local nt = "1"
if nasktago ~= "" then
nt = nasktago
end
-- mortodato
local mj = mortjaro
local mm = "januaro"
if mortmonato ~= "" then
mm = mortmonato
end
local mm = monato(mm)
local mt = "1"
if morttago ~= "" then
mt = morttago
end
--a = agho (nj,nm,nt,mj,mm,mt,ordigo)
-- la funkcio prefere estu en la modulo Datoj kaj tial estas nun enplektita de tie
a = datoj._agho(nt,nm,nj,mt,mm,mj,"","",ordigo)
v = false
elseif naskjaro ~= "" and mortjaro == "" then
-- naskiĝdato
local nj = naskjaro
local nm = "januaro"
if naskmonato ~= "" then
nm = naskmonato
end
local nm = monato(nm)
local nt = "1"
if nasktago ~= "" then
nt = nasktago
end
--a = agho (nj,nm,nt,"","","",ordigo)
-- nun la funkcio troviĝas en la modulo Datoj, ĉar tio estas pli taŭga modulo por ĝi
a = datoj._agho(nt,nm,nj,"","","","","",ordigo)
else
a = wikidatoj.agho()
local test = wikidatoj.vivanta()
if test == 1 then
v = false
end
if a == nil then
a = ""
end
end
-- aldono al la tabelo
local a1 = "Aĝo"
if a ~= "" then
if v == false then
a1 = "Aĝo je morto"
end
local a2 = a
aldonulinion (a1, a2)
end
if kesteroj2 ~= "" and kesteroj2 ~= nil then
kesteroj(kesteroj2, trajto_kesteroj2)
end
-- ligilo al portalo, laŭ {{Informkesto homoj}}
-- ! colspan="2" style="margin:0;padding:1px;border:solid #aaa 1px;background:#fff;
-- font-size:90%;text-align:center"| '''[[Portalo:Homoj|<span style="color:#000;background:#f9f9f9">Portalo pri Homoj</span>]]'''
local portalo = '[[Portalo:Homoj|<span style="color:#000;background:#f9f9f9">Portalo pri Homoj</span>]]'
portalo = "'''" .. portalo .. "'''" -- la grasigo estu aparta, ĉar alie Lua traktas tion kiel eraron
local portallinio = tabelo:tag("tr")
local portalchelo = portallinio:tag("th")
:attr("colspan","2")
:css("margin","0")
:css("padding","1px")
:css("border","solid #aaa 1px")
:css("background","#fff")
:css("font-size","90%")
:css("text-align","center")
:wikitext(portalo)
-- ŝanĝu ŝablonon
-- {{ŝanĝu ŝablonon|ŝablono=Informkesto biografio}}
local shablono="Informkesto biografio"
local t = informkesto._ligilaro (shablono,fono,"","","","","linio")
tabelo:newline()
:wikitext(t)
:newline()
:done()
r = tostring(tabelo)
return r
end
return p