Modulo:Biografio: Malsamoj inter versioj

[kontrolita revizio][kontrolita revizio]
Enhavo forigita Enhavo aldonita
estis erareto linio 997
eNeniu resumo de redakto
Linio 5:
-- 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")
 
-- helpaj funkcioj sen ŝablonoj
local function aldonulinion (c1, c2, wd)
local tabellinio = tabelo:tag('"tr'")
local chelo1 = tabellinio:tag('th'"td")
:wikitext("'''" .. c1 .. "'''")
:done()
if wd == "jes" then
local chelo2 = tabellinio:tag("td")
:addClass("wikidata-content")
:wikitext(c2)
:done()
:newline()
if wd == "jes" then
else
local chelo2 = tabellinio:tag('td')
local chelo2 = tabellinio:tag("td")
:addClass("wikidata-content")
:wikitext(c2)
:done()
:newline()
end
else
end
local chelo2 = tabellinio:tag('td')
:wikitext(c2)
:done()
:newline()
end
end
 
 
-- por la funkcioj "enkonduko" kaj "informkesto", ĉar tie ligiloj eble devus esti aldonata
-- komparu la funkcion "link" en la modulo Listutil
local function chuligilo (teksto)
-- analizo, ĉu jam estas ligilo. se jes, ŝanĝu nenion.
-- kodopeco el Modulo:Listutil, funcio link
local s = teksto:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
local r
if not s then
local s = teksto:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
s = teksto:match( "%[%[%s*([^%]]+)%s*%]%]" )
if not s then
end
s = teksto:match( "%[%[%s*([^%]]+)%s*%]%]" )
if not s then
end
return true
if not s then
end
r = "ligu"
return false
end
end
return r
end
 
-- el la modulo Listutil
-- delinkssenligiligas thela texttekston fromen v andkaj returnseligas [[Ulo]] or [[Artikolo|Ulo]] likekiel Ulo.
-- tio estas bezonata, ĉar ligilo en ligilo ne eblas
-- this is needed, because a link in a link is not possible
-- s - isestas ahelpa helping variablevariablo
local function delink(v)
 
s = v:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
local function delink (v)
if not s then
s = v:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
s = v:match( "%[%[%s*([^%]]+)%s*%]%]" )
if not s then
end
s = v:match( "%[%[%s*([^%]]+)%s*%]%]" )
if not s then
end
s = v
if not s then
end
s = v
return mw.text.trim(s) -- forigas spacetojn
end
end
return mw.text.trim(s) -- removes spaces
end -- delink ()
 
 
-- elvoko de diversaj helpaj ŝablonoj
local function okupoanalizo (teksto)
local frame = mw.getCurrentFrame()
local t = frame:expandTemplate{
title="Informkesto biografio/Virgenro",
args = {
teksto
}
}
local o1 = frame:expandTemplate{
title="Informkesto biografio/LigiloOkupo",
args = {
t
}
}
return o1
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 okupoanalizo2okupoanalizo(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 slistero = chuligilo(v)""
if chuligilo(v) then
local listero = ""
if s listero == "ligu[[" then.. v .. "]]"
else
local o1 = okupoanalizo(v)
listero = "[[" .. o1 .. "|" .. 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
if k > 1 elsethen
o = o .. "," .. listero
-- analizo, ĉu jam estas ligilo. se jes, ŝanĝu nenion.
else
local s = chuligilo (okupoj)
o = listero
if s == "ligu" then
end
local o1 = okupoanalizo(okupoj)
end
o = "[[" .. o1 .. "|" .. okupoj .. "]]"
if chu ~="ne" then
else
o = listoj._list(",",o,"jes","kaj")
o = okupoj
end
else
end
-- analizo, ĉu jam estas ligilo. se jes, ŝanĝu nenion.
return o
if chuligilo(okupoj) then
end
o = "[[" .. okupoj .. "]]"
 
else
local function okupogenro (teksto)
o = okupoj
local frame = mw.getCurrentFrame()
end
local r = frame:expandTemplate {
end
title="Informkesto biografio/Virgenro",
return o
args={
end
teksto
}
}
return r
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 = {
naskjaro,
mortjaro
}
}
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 changetemplate (shablono,fono)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="ŝanĝu ŝablonon2",
args = {
["ŝablono"] = shablono,
fonkoloro = fono
}
}
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 naskloko = args['"NaskiĝLoko'"] or ""
local nasklokoligilo = args['"NaskiĝLokoLigilo'"] or ""
local morttago = args['"MortTago'"] or ""
local mortmonato = args['"MortMonato'"] or ""
local mortjaro = args['"MortJaro'"] or ""
local mortloko = args['"MortLoko'"] 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 ""
 
-- 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
Linio 273 ⟶ 232:
 
-- 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
Linio 285 ⟶ 244:
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
Linio 306 ⟶ 265:
k = "("
jamkrampo = true
else
k = ", "
end
r = r .. spaco .. k .. postfamilinomo
end
if aliajlingvoj ~= "" then
Linio 316 ⟶ 275:
k = "("
jamkrampo = true
else
k = ", "
end
r = r .. spaco .. k .. aliajlingvoj
end
 
-- data parto
local n = "" -- pri naskiĝo
Linio 332 ⟶ 291:
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
Linio 356 ⟶ 315:
if n ~= "" then
komo = ", "
else
komo = "naskiĝis "
end
if nasklokoligilo ~= "" then
naskloko = "[[" .. nasklokoligilo .. "|" .. naskloko .. "]]"
Linio 365 ⟶ 324:
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
Linio 377 ⟶ 336:
else
naskloko = "[[" .. naskloko .. "]]"
n = n .. ", " .. "en " .. naskloko
end
end
Linio 385 ⟶ 344:
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
Linio 396 ⟶ 355:
end
end
estas = "estis"
elseif morttago == "" and mortmonato == "" and mortjaro == "" then
-- 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
if mortloko ~= "" then
local komo = ""
Linio 417 ⟶ 376:
else
komo = "mortis "
end
if mortlokoligilo ~= "" then
mortloko = "[[" .. mortlokoligilo .. "|" .. mortloko .. "]]"
Linio 423 ⟶ 382:
local l = listoj._count(",",mortloko)
if l > 1 then
mortloko = listoj._list(",",mortloko, "jes", "span", ",", "", "", "", 0, "")
else
mortloko = "[[" .. mortloko .. "]]"
end
end
Linio 435 ⟶ 394:
mortloko = ""
else
mortloko = "[[" .. mortloko .. "]]"
m = m .. ", " .. "en " .. mortloko
end
end
Linio 442 ⟶ 401:
if veranomo ~= "" then
v = "&#059; 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
Linio 450 ⟶ 409:
k = "("
jamkrampo = true
end
if n ~= "" and m ~= "" then
d = spaco .. k .. n .. "," .. m .. v .. ") "
Linio 459 ⟶ 418:
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
Linio 472 ⟶ 431:
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
local o = ""
if aliajokupoj ~= "" then
 
okupoj = okupoj .. "," .. aliajokupoj
if okupoj ~="" then
end
if aliajokupoj ~= "" then
o = okupoanalizo2(okupoj)
okupoj elseif okupo ~= ""okupoj or okupo2 ~=.. "," or okupo3 ~= "" or.. aliajokupoj ~= "" then
end
local okupoj = ""
o = okupoanalizo(okupoj)
if okupo ~="" then
elseif okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
local s = chuligilo (okupo)
iflocal sokupoj == "ligu" then
if okupo ~="" then
local o1 = okupoanalizo(okupo)
if chuligilo(okupo) then
okupoj = "[[" .. o1 .. "|" .. okupo .. "]]"
okupoj = "[[" .. okupo .. "]]"
else
else
okupoj = okupo
end
end
if okupo2 ~="" then
local so2 = chuligilo (okupo2)
if chuligilo(okupo2) then
local o2 = ""
if s o2 == "ligu[[" then.. o2 .. "]]"
end
o2 = okupoanalizo(okupo2)
o2okupoj = "[[" .. o2 okupoj .. "|," .. okupo2 .. "]]"o2
end
else
if okupo3 ~="" then
o2 = okupo2
local o3 = okupo3
end
if chuligilo(okupo3) then
okupoj = okupoj .. "," .. o2
o3 = "[[" .. o3 .. "]]"
end
end
if okupo3 ~="" then
okupoj = okupoj .. "," .. o3
local s = chuligilo (okupo3)
end
local o3 = ""
if saliajokupoj ~== "ligu" then
o3local o_a = okupoanalizo(okupo3aliajokupoj,"ne")
o3okupoj = "[[" .. o3 okupoj .. "|," .. okupo3 .. "]]" o_a
end
else
if okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
o3 = okupo3
o = listoj._list(",",okupoj,"jes","kaj")
end
end
okupoj = okupoj .. "," .. o3
end
if aliajokupoj ~="" then
local o_a = okupoanalizo2(aliajokupoj,"ne")
-- o_a = "[[" .. o_a .. "|" .. aliajokupoj .. "]]"
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
Linio 536 ⟶ 484:
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 naskloko = args['"NaskiĝLoko'"] or ""
local morttago = args['"MortTago'"] or ""
local mortmonato = args['"MortMonato'"] or ""
local mortjaro = args['"MortJaro'"] or ""
local mortloko = args['"MortLoko'"] 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
Linio 608 ⟶ 554:
strings = mw.text.split(okupoj, ",", plain)
for k,v in pairs(strings) do
v = delink(v)
-- eventuale poste anstataŭigenda per kodo, kiu subtenas la informon el Vikidatumoj pri la sekso de la koncerna persono
if k == 1 then
v = delink(v)
local genro = okupogenro(v)
if v == genro then
okat = okat .. "[[" .. t .. "Kategorio:Viroj]]"
else
okat = okat .. "[[" .. t .. "Kategorio:Virinoj]]"
end
end
local okat1 = okupokategorio(shtato,v,t)
okat = okat .. okat1
end
end
 
else
okupoj = delink(okupoj)
local genro = okupogenro(okupoj)
if okupoj == genro then
okat = okat .. "[[" .. t .. "Kategorio:Viroj]]"
else
okat = okat .. "[[" .. t .. "Kategorio:Virinoj]]"
end
local okat1 = okupokategorio(shtato,okupoj,t)
okat = okat .. okat1
end
end
 
if okupo ~="" then
okupo = delink(okupo)
local genrookat1 = okupogenrookupokategorio(shtato,okupo,t)
ifokat okupo= ==okat genro.. thenokat1
okat = okat .. "[[" .. t .. "Kategorio:Viroj]]"
else
okat = okat .. "[[" .. t .. "Kategorio:Virinoj]]"
end
local okat1 = okupokategorio(shtato,okupo,t)
okat = okat .. okat1
end
if okupo2 ~="" then
okupo2 = delink(okupo2)
local okat1 = okupokategorio(shtato,okupo2,t)
okat = okat .. okat1
end
if okupo3 ~="" then
okupo3 = delink(okupo3)
local okat1 = okupokategorio(shtato,okupo3,t)
okat = okat .. okat1
end
-- Kategorioj pri okupoj el Vikidatumoj, se nenio alia ĉeestas
Linio 665 ⟶ 589:
for k,v in pairs(strings) do
local okat1 = okupokategorio(shtato,v,t)
okat = okat .. okat1
end
end
 
else
local okat1 = okupokategorio(shtato,wdo,t)
okat = okat .. okat1
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
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}}}&#32;,{{{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
Linio 699 ⟶ 624:
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
else
local n = wikidatoj.naskidato()
Linio 723 ⟶ 648:
local k = vivtempo(n,m,t)
--local k = ""
-- aldono al la eldonenda signoĉeno
r = r .. k
end
end
 
return r
end
 
-- funkcio por la informkesta parto, iom post iom kompletigota
Linio 736 ⟶ 660:
-- 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 ""
 
-- 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 naskloko = args['"NaskiĝLoko'"] or ""
local nasklokoligilo = args['"NaskiĝLokoLigilo'"] or ""
local morttago = args['"MortTago'"] or ""
local mortmonato = args['"MortMonato'"] or ""
local mortjaro = args['"MortJaro'"] or ""
local mortloko = args['"MortLoko'"] 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 ""
 
-- 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
 
Linio 792 ⟶ 715:
local r = ""
local spaco = "&#32;"
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'ccc")
:css('"-webkit-box-shadow'", '"4px 4px 4px #CCC'ccc")
:css('"box-shadow'", '"4px 4px 4px #CCC'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 = ""
Linio 825 ⟶ 748:
if postnomo ~= "" then
n = n .. br .. spaco .. postnomo
end
 
-- meto de la nomoj en la kapĉelon
kapchelo:wikitext (n)
:done()
:newline()
 
-- 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
Linio 857 ⟶ 780:
bildchelo:wikitext(b)
end
 
-- personaj informoj
local subtitolo1 = tabelo:tag('"tr'")
local titol1chelo = subtitolo1:tag('"th'")
:css('"background-color'", '"#DDDDDD'ddd")
:css('"text-align'",'"center'")
:attr('"colspan'",'"2'")
:wikitext('"Persona informo'")
:done()
:newline()
 
--! {{#if:{{{VeraNomo|}}}|Plumnomo|Nomo}}
--| {{#if:{{{Antaŭnomo|}}}|{{{Antaŭnomo}}}&#32;|}}{{etmajuskloj|{{{Familinomo|}}}}}{{#if:{{{Postnomo|}}}|&#32;{{{Postnomo}}}|}}
local n1 = "Nomo"
local n2 = ""
Linio 884 ⟶ 807:
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)
Linio 904 ⟶ 827:
if type(testo) == "number" then
n2 = datoj._dato(nasktago,naskmonato,naskjaro)
else
n2 = naskjaro
end
aldonulinion (n1, n2)
else
local naskdato = wikidatoj.naskidato()
Linio 915 ⟶ 838:
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
Linio 931 ⟶ 854:
if l > 1 then
n2 = listoj._list(",",naskloko, "jes", "span", ",", "", "", "", 0, "")
else
n2 = "[[" .. naskloko .. "]]"
end
end
aldonulinion (n1, n2)
else
local nl = wikidatoj.NlokTeksto()
Linio 942 ⟶ 865:
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)
Linio 959 ⟶ 882:
m2 = mortjaro
end
aldonulinion (m1, m2)
else
local mortdato = wikidatoj.mortdato()
Linio 968 ⟶ 891:
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
Linio 983 ⟶ 906:
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()
Linio 995 ⟶ 918:
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
 
 
-- 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 = okupoanalizo2okupoanalizo(okupoj)
elseif okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
local okupoj = ""
if okupo ~="" then
local so1 = chuligilo (okupo)
if s == "ligu"chuligilo(okupo) then
local o1 = okupoanalizo(okupo) "[[" .. o1 .. "]]"
end
okupoj = "[[" .. o1 .. "|" .. okupo .. "]]"
okupoj = o1
else
end
local o1 = okupo
if okupo2 ~="" then
end
local o2 = okupo2
end
if chuligilo(okupo2 ~="") then
o2 = "[[" .. o2 .. "]]"
local s = chuligilo (okupo2)
end
local o2 = ""
if s okupoj == okupoj .. "ligu," then.. o2
end
o2 = okupoanalizo(okupo2)
if okupo3 ~="" then
o2 = "[[" .. o2 .. "|" .. okupo2 .. "]]"
local o3 = okupo3
else
if chuligilo(okupo3) then
o2 = okupo2
o3 = "[[" .. o3 .. "]]"
end
end
okupoj = okupoj .. "," .. o2
okupoj = okupoj .. "," .. o3
end
end
if okupo3 ~="" then
if aliajokupoj ~="" then
local s = chuligilo (okupo3)
local o3o_a = okupoanalizo(aliajokupoj,"ne" )
okupoj = okupoj .. "," .. o_a
if s == "ligu" then
end
o3 = okupoanalizo(okupo3)
o3if okupo ~= "[[" ..or o3okupo2 ..~= "|" ..or okupo3 ..~= "]]" or aliajokupoj ~= "" then
n = listoj._count(",",okupoj)
else
o3if n > =1 okupo3then
o = listoj._list(",",okupoj,"jes","kaj","","jes") -- disiga signo, ĉitiea variablo, modo, limsigno (ĉikaze ne uzata), linisalto
end
else
okupoj = okupoj .. "," .. o3
o = okupoj
end
end
if aliajokupoj ~="" then
end
local o_a = okupoanalizo2(aliajokupoj,"ne")
-- o_a = "[[" .. o_a .. "|" .. aliajokupoj .. "]]"
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
Linio 1 068 ⟶ 979:
wd = "jes" -- ne estu "local" ĉi tie, ĉar alie ne funkcios ekster ĉi tiu else-bloko
end
end
 
-- metado en tabelajn ĉelojn
Linio 1 080 ⟶ 991:
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|}}}|&#32;{{{Antaŭnomo}}}|}}{{#if:{{{Postnomo|}}}|&#32;{{{Postnomo}}}|}}}}
local ordigo = familinomo .. ", "
if antaunomo ~= "" then
ordigo = ordigo .. spaco .. antaunomo
Linio 1 097 ⟶ 1 008:
if postnomo ~= "" then
ordigo = ordigo .. spaco .. postnomo
end
-- se la nomoj ne estas difinitaj, malplenigu la ordigan ŝlosilon
if ordigo == ", " then
Linio 1 125 ⟶ 1 036:
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)
Linio 1 142 ⟶ 1 053:
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)
Linio 1 155 ⟶ 1 066:
end
end
 
-- aldono al la tabelo
local a1 = "Aĝo"
Linio 1 163 ⟶ 1 074:
end
local a2 = a
aldonulinion (a1, a2)
end
 
-- ligilo al portalo, laŭ {{Informkesto homoj}}
-- ! colspan="2" style="margin: 0; padding: 1px; border: solid #aaa 1px; background: #fffffffff;
-- font-size: 90%; text-align:center"| '''[[Portalo:Homoj|<span style="color:black#000; background:#f9f9f9">Portalo pri Homoj</span>]]'''
local portalo = '[[Portalo:Homoj|<span style="color:black#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}}
Linio 1 192 ⟶ 1 103:
 
r = tostring(tabelo)
return r
end
 
end
 
return p