Modulo:Biografio/provejo2
Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:Biografio/provejo2/dokumentado
-- modulo Biografio, 2020-04-18
-- ĉ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")
local prenubildon = require ("Modulo:Portalo").image
local informkesto = require("Modulo:Informkesto")
local ligiloj = require ("Modulo:Linkutil")
local signocheno = require("Modulo:String")
-- helpaj funkcioj
local function argumentoj(args, par)
if par ~= "" and par ~= nil then
local varianto = mw.ustring.gsub(par, "_", " ") -- ŝanĝo de _ el parametro al spaco
local varianto2 = mw.ustring.upper(par) -- ŝanĝo al majusklaj literoj
local varianto3 = mw.ustring.upper(mw.ustring.sub(par, 1, 1)) .. mw.ustring.sub(par, 2) -- nur la unua litero fariĝas majusklo
local r = args["" .. par] or args["" .. varianto] or args["" .. varianto2] or args["" .. varianto3] or ""
if r ~= "" then
return r
end
end
end
-- aldonaj parametroj por bildoj
local function bildargumentoj(args, par, parto)
if par == "bildo" or par == "dosiero" or par == "flago" or par == "blazono" or par == "mapo" or par == "foto" or par == "portreto" then
local r = ""
if parto == "priskribo" then
r = "priskribo de " .. par
elseif parto == "grandeco" then
r = "grandeco de " .. par
end
if r ~= "" then
r = argumentoj(args,r)
if r ~= "" and r ~= nil then
return r
end
end
end
end
-- Vikidatumaj helpaj funkcioj
-- transprenas vikidatuman eron, se ne temas pri bildo
local function wdparam(pk,wdid,ref)
-- analizo, ĉu pk enhavas valoron.
if pk ~= "" and pk ~= nil then
local r, r2
if ref == "auto" then
if wdid ~= "" and wdid ~= nil then
-- r = shablonoref(pk,wdid) wikidata.claim({args={pk,id=wdid,references="jes"} })
r, ref = wikidata.claim({args={pk,id=wdid,references="raw"} })
else
-- r = shablonoref(pk) wikidata.claim({args={pk,references="jes"} })
r, ref = wikidata.claim({args={pk,references="raw"} })
end
if r ~= "" and r ~= nil then
return r, ref
end
else
if wdid ~= "" and wdid ~= nil then
r = wikidata.claim({args={pk,id=wdid} })
else
r = wikidata.claim({args={pk} })
end
if r ~= "" and r ~= nil then
return r, ref
end
end
end
end
local function wdlink (id, pkodo)
-- <span class="el_wd">[[:d:{{#invoke:Wikidata|pageId}}#P374|[+]]]</span>
if pkodo ~= "" and pkodo ~= nil then
local ligilo
if id ~= "" and id ~= nil then
ligilo = id
else
ligilo = wikidata.pageId({args = {} }) or ""
end
if ligilo then
ligilo = ' <span class="el_wd">[[:d:' .. ligilo .. "#" .. pkodo .. '|[+]]]</span>'
end
return ligilo
end
end
-- por aldono de piednoto al teksto
local function notaldono(noto, param)
if noto ~= "" and noto ~= nil then
param = param .. " ''" .. noto .. "''" -- aldonas noton kursive
return param
else
return param
end
end
-- por aldono de referenco
local function refaldono(referenco, param, refnomo, refnomodua)
if (referenco ~= "" and referenco ~= nil) or (refnomo ~= "" and refnomo ~= nil) then
local r
local frame = mw.getCurrentFrame()
if referenco ~= "" and referenco ~= nil then
local strings= mw.text.split(referenco, "///", plain)
local nombro = #strings
if nombro > 1 then
for k, ref in pairs(strings) do
if refnomo ~= "" and refnomo ~= nil then
if refnomodua ~= "" and refnomodua ~= nil then
r = frame:extensionTag('ref', {name= refnomo } )
else
r = frame:extensionTag('ref', ref, {name=refnomo} )
end
param = param .. r
elseif ref ~= "" and ref ~= nil then
r = frame:extensionTag('ref', ref )
param = param .. r
end
end
return param
end
end
if refnomo ~= "" and refnomo ~= nil then
if refnomodua ~= "" and refnomodua ~= nil then
r = frame:extensionTag('ref', {name= refnomo } )
else
r = frame:extensionTag('ref', referenco, {name=refnomo} )
end
param = param .. r
return param
elseif referenco ~= "" and referenco ~= nil then
r = frame:extensionTag('ref', referenco )
param = param .. r
return param
end
else
return param
end
end
-- tabelliniaj funkcioj
-- tabela kaplinio
-- titolo - teksto por la titola linio
-- fono - fona koloro
-- v - varianto
-- wd - ĉu Vikidatuma ero?
local function tabelkapo(titolo, fono, v, wd, klaso, montrilo)
if v == "caption" then
-- por la html-etikedo "caption"
local colspan ='2'
local tabelkapo = tabelo:tag('caption')
:attr({colspan = colspan})
:css(style)
:wikitext(text)
:done()
else
-- por la html-etikedoj "tr" kaj "th"
-- kaplinio
if klaso ~= "" and klaso ~= nil and type(klaso) == "string" then
klaso = klaso
else
klaso = "kaplinio persono fn"
end
if wd == "jes" then
klaso = klaso .. " wikidata-content"
end
local tabelkapo
if montrilo ~= "" and montrilo ~= nil then
tabelkapo = tabelo:tag('tr')
:attr('title',montrilo)
:addClass('mergedtoprow')
else
tabelkapo = tabelo:tag('tr')
end
-- kaplinia ĉelo
local kapchelo = tabelkapo:tag('th')
:addClass(klaso)
:attr('colspan','2')
:css('color','#000')
:css('background-color',fono)
:css('text-align','center')
:css('font-family','Monotype Corsiva, serif')
:wikitext(titolo)
:done()
:newline()
end
end
-- tabela subtitilo
local function tabelsubtitolo(titolo, fono, montrilo)
if titolo == nil then
titolo = ""
end
local subtitolo1
if montrilo ~= "" and montrilo ~= nil then
subtitolo1 = tabelo:tag('tr')
:attr('title',montrilo)
:addClass('mergedrow')
else
subtitolo1 = tabelo:tag('tr')
end
if fono ~= "" and fono ~= nil then
local titol1chelo = subtitolo1:tag('th')
:css('background-color', fono)
:css('border-top','1px solid ' .. fono)
:css('border-bottom','1px solid ' .. fono)
:css('text-align','center')
:attr('colspan','2')
:wikitext(titolo)
:done()
:newline()
else
local titol1chelo = subtitolo1:tag('th')
:css('text-align','center')
:attr('colspan','2')
:wikitext(titolo)
:done()
:newline()
end
end
-- bilda ĉelo por unuopa bildo
local function unuopabildo(bildo, wd)
if bildo == nil then
bildo = ""
end
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local bildo1 = tabelo:tag("tr")
local bildchelo = bildo1:tag("td")
:addClass(wd)
:attr('colspan','2')
:css('font-size','smaller')
:css('text-align','center')
:css('padding','0.4em 0.2em')
:wikitext(bildo)
end
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
-- unuopa ĉelo
-- c - enhavo de la ĉelo
-- v - varianto de ĉelo
-- wd - ĉu datoj el Vikidatuma ero
local function aldonuchelon (c, v, wd, montrilo)
local t = ""
local css_klaso = "mergedrow"
if v == "titolo" then
t = "th"
elseif v == "linio" then
t = "td"
css_klaso = "mergedtoprow"
else
t = "td"
end
if montrilo == nil then
montrilo = ""
end
local tabellinio = tabelo:tag('tr')
:attr('title',montrilo)
:addClass(css_klaso)
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local chelo = tabellinio:tag(t)
:addClass(wd)
:attr('colspan','2')
:css('text-align','center')
:css('padding','0.4em 0.2em')
:wikitext(c)
:done()
:newline()
end
-- por landaj flagoj kun sekva teksto
local function flago(nomo)
if nomo == "" or nomo == nil then
return
end
local testo = ligiloj._chuligilo2(nomo)
local ligilo = ""
if testo == "ligu" then
ligilo = "[[" .. nomo .. "]]"
else
ligilo = nomo
nomo = ligiloj._delink(nomo)
end
local n = prenubildon{nomo} -- ne estu ronda krampo, ĉar estas importita funkcio
if n ~= "Portal-puzzle.svg" and n ~= nil then
n = "[[Dosiero:" .. n .. "|18px]] " .. ligilo
return n
else
return ligilo
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 (ordigo, naskjaro, mortjaro,t)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate{
title="Vivtempo",
args = {
ordigo,
naskjaro,
mortjaro
}
}
-- la alia modulo ŝajnas esti iomete "stulta" :-(
if mortjaro ~= "" and mortjaro ~= nil then
n = mw.ustring.gsub(n,"%[%[Kategorio:Vivantaj homoj%]%]","")
end
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
-- malkomponilaj funkcioj
-- formatigi numeron
function formatnum(numero)
local frame = mw.getCurrentFrame()
local n = tonumber(numero)
if n ~= nil then
local r = frame:callParserFunction( "formatnum", n )
return r
end
end
local function paghenamebase ()
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="PAGENAMEBASE",
}
return n
end
-- alvoko de informkestera ŝablono
local function kestero(teksto, etikedo, fono, shtopado)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate {
title='Ŝablono:Informkesto/+/html',
args = {
linisalto='jes',
['titola koloro']='neniu',
['koloro alt']=fono,
fono=fono,
teksto=teksto,
etikedo=etikedo,
['ŝtopado']=shtopado
}
}
return r
end
-- anstataŭu ion
local function anstatau(teksto, serchu, metu)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate {
title='Ŝablono:Anstataŭu',
args={
teksto,
serchu,
metu
}
}
return r
end
local p = {}
-- spaco por enkonduko kaj kategorioj
local function kesteroj(nomo, trajto, k)
if trajto == 'ĉelo' then
tabelo:wikitext('<tr><td colspan="2" style="padding:0"><div>\n')
if k == 'kaŝu' then
tabelo:wikitext('{| class="collapsible collapsed" style="width:23em"\n')
else
tabelo:wikitext('{| style="width:23em"\n')
end
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
-- rigardas al la Vikidatuma ero, ĉu iu havas indikon pri Esperanto en P1412.
local function chuesperanto(id)
local frame = mw.getCurrentFrame()
local r = frame:expandTemplate{
title="Ĉuesperanto",
args={
wdid=id
}
}
return r
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"})
-- analizo de la nomspaco
currentTitle = mw.title.getCurrentTitle()
local ns = currentTitle.namespace
local wdidstirilo = true
-- klaso por la tuta tabelo, aldonata post "infobox"
local klaso = args['klaso'] or args['Klaso'] or "infobox vcard"
local titolklaso = args['titolklaso'] or args['Titolklaso'] or "kaplinio persono fn"
local tipo = args[1] or ""
if tipo ~= "" then
tipo = mw.ustring.lower(tipo)
end
-- vikidatuma id
-- helpa parametro por testoj de valoroj el Vikidatumoj
local wdid
if wdidstirilo == true then
wdid = args['wd']
end
-- formatoj
local fono = args['fono'] or args['Fono'] or ""
local fono2 = args['fono2'] or args['Fono2'] or "#efefef"
if fono == "" then
fono = "#DDDDFF"
end
local testo = chuesperanto(wdid)
if testo ~= '0' then
fono = '#090'
titolklaso = "kaplinio stelo fn"
end
local shablono
-- parametro kun nomo de la ŝablono
if (args['ŝablono'] ~= "" and args['ŝablono'] ~= nil) or (args['Ŝablono'] ~= "" and args['Ŝablono'] ~= nil) then
shablono = args['ŝablono'] or args['Ŝablono']
else
shablono = "Informkesto biografio"
end
-- pliaj variabloj
local r = ""
-- ĉu io estas el Vikidatuma ero aŭ ne., ebla valoro estas "jes"
local wdj = ""
-- por la enkonduka teksto
local teksto = ''
local nasko_teksto = ''
local morto_teksto = ''
local okupo_teksto = ''
local d = ''
local vn = "" -- vera nomo kun indiko pri tio
local estas = "estas"
-- komenco de la tabelo
local titolo = args["titolo"] or args["Titolo"] or args["nomo"] or args["Nomo"] or "" -- pliaj variantoj aldoneblas
if titolo == "" then
titolo = paghenamebase ()
end
-- nomoj
local antaunomo = args["Antaŭnomo"] or args["antaŭnomo"] or ""
local familinomo = args["Familinomo"] or args["familinomo"] or ""
local postnomo = args["Postnomo"] or args["postnomo"] or ""
-- ceteraj variabloj
local r = ""
local spaco = " "
local fn1 = '<span style="text-transform:uppercase">'
local fn2 = "</span>"
local br = "<br/>"
-- nomoj
local nomo = ""
local nomo2 = "" -- por la enkonduko
if antaunomo ~="" then
nomo = antaunomo .. spaco
end
if familinomo ~="" then
nomo = nomo .. fn1 .. familinomo .. fn2
end
if postnomo ~= "" then
--ne shanghu la sinsekon de la du sekvaj linioj!
nomo2 = nomo .. spaco .. postnomo
nomo = nomo .. br .. spaco .. postnomo
end
if nomo ~= "" and nomo ~= nil then
titolo = nomo
end
if nomo2 ~= "" and nomo2 ~= nil then
titolo2 = nomo2
elseif nomo ~= "" and nomo ~= nil then
titolo2 = nomo
else
titolo2 = titolo
end
-- por la enkonduka teksto
local prononco = args["Prononco"] or ""
local postfamilinomo = args["PostFamilinomo"] or ""
local aliajlingvoj = args["AliajLingvoj"] or ""
-- datoj
local nasktago = args["NaskiĝTago"] or ""
local naskmonato = args["NaskiĝMonato"] or ""
local naskjaro = args["NaskiĝJaro"] 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 ""
-- 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 ""
-- por la kategorioj
local ordigilo = args["Ordigo"] or ""
local ordigu = args["Ordigu"] or ""
local test = args["Testo"] or ""
-- ceteraj variabloj por la kategorio
local kategorio = ""
local okat = ""
local spaco = " "
local tk = ""
if test == "yes" or test == "jes" or ns ~= 0 then
tk = ":"
end
local shtato = ''
-- el la malnova modulo
-- okupoj
local o = ""
local n = 1 -- nombro de okupoj, ĉar de tio dependas la teksto en la tabelo
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")
wdj = "jes" -- ne estu "local" ĉi tie, ĉar alie ne funkcios ekster ĉi tiu else-bloko
end
end
local va = 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
if ordigo ~= "" and ordigo ~= nil then
a = datoj._agho(nt,nm,nj,mt,mm,mj,"","",ordigo)
else
a = datoj._agho(nt,nm,nj,mt,mm,mj,"","",'')
end
va = 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
if ordigo ~= nil and ordigo ~= "" then
a = datoj._agho(nt,nm,nj,"","","","","",ordigo)
else
a = datoj._agho(nt,nm,nj,"","","","","","")
end
else
a = wikidatoj.agho()
local test = wikidatoj.vivanta()
if test == 1 then
va = false
end
if a == nil then
a = ""
end
end
-- pliaj variabloj
local portalo = false
-- ekuzi submodulojn por la informkesta strukturo
local submodulo = args['submodulo'] or args['Submodulo'] or "homo"
if args['subŝablono'] ~= "jes" and args['Subŝablono'] ~= 'jes' then
-- la variablo "tabelo" ne povas esti local, ĉar alie ĝia uzo en subŝablono ne funkcias
tabelo = mw.html.create("table")
:addClass(klaso)
:css('width','23em')
:css("font-size","89%")
:css('-moz-box-shadow', '4px 4px 4px #CCC')
:css('-webkit-box-shadow', '4px 4px 4px #CCC')
:css('box-shadow', '4px 4px 4px #CCC')
:newline()
--tabelkomenco(klaso)
-- wd poste estos aranĝata
tabelkapo(titolo, fono, "", wd, titolklaso, montrilo)
else
-- la variablo "tabelo" ne povas esti local, ĉar alie ĝia uzo en subŝablono ne funkcias
tabelo = mw.html.create()
end
-- loko por la enhavo
-- posttitola parto de la informkesto
local variabloj = 'Modulo:Biografio/' .. submodulo
local parametroj = mw.loadData(variabloj)
local listo = parametroj.linioj
local noto = parametroj.noto or ""
local referenco = parametroj.referenco or ""
if type(listo) == "table" then
-- testo
local s
local par, t, pk, pk2, a1, a2, pri, pri2, iso, lig
for k, v in pairs(listo) do
if type(v) == "table" then
par = v["parametro"]
par_a = v['parametro_a']
par_b = v['parametro_b']
par2 = v["parametro2"]
par2_a = v['parametro2_a']
par2_b = v['parametro2_b']
t = v["tipo"]
pri = v["priskribo"]
pri2 = v["priskribo2"]
pk = v["pkodo"]
pk2 = v["pkodo2"]
a1 = v["aldono1"]
a1_a = v["aldono1_a"]
a2 = v["aldono2"]
a2_a = v["aldono2_a"]
lig = v["ligilo"]
grupanoj=v["grupanoj"]
listeroj=v["listeroj"]
montrilo=v["montrilo"]
defmontrilo=v["defmontrilo"]
fonkoloro = v["fono"]
tt = v["teksto"]
-- por la finaĵo de bildo. laŭ la ĝisnuna trajto.
suf = v["sufikso"]
suf2 = v["sufikso2"]
-- por kaŝado kaj aliaj ruzaĵoj
kondicho = v["kondicho"]
-- voki la parametron el args
par = tostring(par)
-- local param = args[par] or ""
local param = argumentoj (args, par) or argumentoj(args, par_a) or argumentoj(args, par_b)
local param2
if par2 ~= "" and par2 ~= nil then
param2 = argumentoj(args,par2) or argumentoj(args, par2_a) or argumentoj(args, par2_b)
end
-- por notoj
local noto2
if noto == "_noto" then
noto2 = par .. noto -- kunigas parametrajn nomojn, ne valorojn
elseif noto == "noto por " then
noto2 = noto .. par -- kunigas parametrajn nomojn, ne valorojn
end
local notovaloro = argumentoj(args,noto2) -- transprenas la valoron el la ŝablono
-- por referencoj
local referenco2, referenco2a, referenco2b
if referenco == "_referenco" then
referenco2 = par .. referenco -- kunigas parametrajn nomojn, ne valorojn
referenco2a = referenco2 .. "_nomo"
referenco2b = referenco2 .. "_nomo-dua"
elseif referenco == "referenco por " then
referenco2 = referenco .. par -- kunigas parametrajn nomojn, ne valorojn
referenco2a = referenco2 .. "-nomo"
referenco2b = referenco2 .. "-nomo-dua"
end
local referencovaloro = argumentoj(args,referenco2) -- transprenas la valoron el la ŝablono
local referenconomo = argumentoj(args,referenco2a) -- transprenas la valoron el la ŝablono
local referenconomodua = argumentoj(args,referenco2b) -- transprenas la valoron el la ŝablono
if t == "subtitolo" then -- ankoraŭ devas resti
-------------------- SUBTITOLO ---------------------------------------------
local kon = argumentoj(args, kondicho)
if args['subŝablono'] ~= "jes" and kon ~= 'jes' then
if param ~= "" and param ~= nil then
tabelsubtitolo(param, fono, montrilo)
end
end
elseif t == 'subtitolo2' then
----------------------------------------------------------------------------
local kon = argumentoj(args, kondicho)
if param ~= "" and param ~= nil and kon ~= 'jes' then
local r = kapo_param
if a1 ~= "" and a1 ~= nil then
local nombro = tonumber(a1)
if nombro ~= nil then
for i=1, nombro do
local titolo = par .. i
local st = argumentoj(args, titolo) or ""
if st ~= "" then
r = r .. ', ' .. st
end
end
end
end
tabelsubtitolo(r,fono, montrilo)
end
elseif t == "subtitolo3" then
----------------- SUBTITOLO KUN TEKSTO -------------------------------------------------------------------------------------------
-- bonvolu atenti, ke la defaŭlta teksto estas difinata en priskribo, ne en parametro
-- parametro nur povas anstataŭigi ĝin
if pri ~= "" and pri ~= nil then
if param ~= "" and param ~= nil then
pri = param
end
if grupanoj ~= "" and grupanoj ~= nil then
local nombro = #grupanoj
-- la disiga signaro estas ///
local string = mw.text.split(grupanoj, "///", true)
-- helpa parametro por eviti pli ol unu strion
local n = 1
if shablono == "Informkesto biografio" then
fono2 = args['fono']
if fonkoloro ~= "" and fonkoloro ~= nil then
fono2 = fonkoloro
end
elseif v["koloro"] == "cheftitolo" then
fono2 = fono
end
for k, v in pairs(string) do
local testo = argumentoj(args,v)
-- aldono por Informkesto urbo kaj similaj ŝablonoj
if v == "situo sur mapo" and (testo == "" or testo == nil) then
testo = argumentoj(args,"regiono-ISO")
elseif v == "koordinatoj" and (testo == "" or testo == nil) then
lat, lon = koordargumentoj(args,"situo")
if lat and lon then
testo = "jes"
else
lat = argumentoj(args,"latitudo")
lon = argumentoj(args,"longitudo")
if lat and lon then
testo = "jes"
end
end
elseif testo == "" or testo == nil then
local chupkodo = mw.ustring.match(v,"P[0-9]*([0-9])") --analizo, ĉu estas pkodo
if chupkodo ~= nil then
testo=wdparam(v,wdid)
end
end
if testo ~= "" and testo ~= nil and n == 1 then
tabelsubtitolo(pri, fono2, montrilo)
n = n +1
end
end
end
end
elseif t == "bildo" then
---------------- BILDO ------------------------------------------------------------------------------------------------------------
-- bilda parto -- bildo estas malaperigebla per certaj valoroj
-- komunaj variabloj
local priskribo = argumentoj(args, a1) or argumentoj(args, a1_a) or bildargumentoj(args, par, "priskribo") or bildargumentoj(args, par_a, "priskribo")
local grando = argumentoj(args, a2) or argumentoj(args, a2_a) or bildargumentoj(args, par, "grandeco") or bildargumentoj(args, par_a, "grandeco")
local grupo = argumentoj(args, a3) or argumentoj(args, a3_a)
if param ~= "" and param ~= nil and param ~= "ne" and param ~= "neniu" then
local fino = argumentoj(args, suf) or argumentoj(args, suf2)
-- local bildo = bildoj.InfoboxImage({args={image=param,size=args[a2],sizedefault="frameless",center="yes", caption=args[a1]} })
local bildo = bildoj.InfoboxImage({args={image=param,size=grando,ending=fino,endingdefault='jpg',sizedefault="frameless",center="yes", caption=priskribo} })
unuopabildo(bildo)
elseif param ~= "ne" and param ~= "neniu" then
if pK ~= "" and lucky_bildo then
-- {{#invoke:Wikidata/bildoj|bildoj|priskribo de bildoj={{{priskribo de bildoj|}}}|priskribo de bildo={{{priskribo de bildoj|{{{bildo-priskribo|}}}}}}}}
-- local bildo = wikidataBildo.bildoj({args={grandeco=args[a2],["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=args[a1]} })
local bildo
if wdid ~= "" and wdid ~= nil then
bildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2,id=wdid, tabelo=args, grupo=grupo} })
else
bildo = wikidataBildo.bildoj({args={grandeco=grando,["defaŭlta grandeco"]="frameless",["priskribo de bildoj"]=priskribo,pkodo=pk, pkodo2=pk2, tabelo=args, grupo=grupo} })
end
if bildo then
unuopabildo(bildo,"jes")
end
end
end
elseif t == "teksto" or t == "numero" or t == "loĝantaro" or t == "ekde" or t == "situo" or t == 'loko' then
---------------- TEKSTO - do duĉela teksto kun priskribo aŭ unuĉela sen priskribo --------------------------------------------------------------------------
-- komuna parto de la priskribo
local a2a
if pri ~= "" then
a1a = argumentoj(args,a1) or argumentoj(args,a1_a)
if a1a ~= "" and a1a ~= nil then
pri = a1a
end
if v['sub'] == 1 then
pri = " - " .. pri
end
a2a = argumentoj(args,a2) or argumentoj(args,a2_a)
if a2a ~= "" and a2a ~= nil then
if t == "ekde" then
if a3 ~= "" and a3 ~= nil then
local a3a = argumentoj(args,a3) or argumentoj(args,a3_a)
if a3a ~= "" and a3a ~= nil then
a3a = " ĝis " .. a3a
pri = pri .. " (ekde " .. a2a .. a3a .. ")"
else
pri = pri .. " (ekde " .. a2a .. ")"
end
else
pri = pri .. " (ekde " .. a2a .. ")"
end
end
end
end
if v['kondicho'] ~= "" and v['kondicho'] ~= nil and (param == "" or param == nil) then
local kondicho = v['kondicho']
local strings = mw.text.split(kondicho, "///", plain)
for k, v in pairs(strings) do
local testo = argumentoj(args,v)
if testo ~= "" and testo ~= nil then
param = " "
break
end
end
end
-- pliaj informoj pri situo
local situo2 = ""
if situo ~= "" and situo ~= nil and t == "situo" then
local strings = mw.text.split(situo, "///", plain)
local n = 1 -- nombro de tiaj parametroj en artikolo
for k, v in pairs(strings) do
local situoinformo = argumentoj(args,a2 .. "_" .. v)
if situoinformo ~= "" and situoinformo ~= nil then
if n == 1 then
situo2 = situo2 .. situoinformo
else
situo2 = situo2 .. ", " .. situoinformo
end
n = n + 1
end
end
end
-- se parametro estas en la artikolo
if param ~= "" and param ~= nil then
-- por naskiĝloko kaj mortoloko
if t == 'loko' then
-- ligilo al artikolo malsamas al legebla ligiloteksto
local l = argumentoj(args, lig)
-- savu la nomon de loko por pli posta uzo
local l2 = param
if l ~= "" and l ~= nil then
param = "[[" .. l .. "|" .. l2 .. "]]"
else
local l = listoj._count(",",l2)
if l > 1 then
param = listoj._list(",",l2, "jes", "span", ",", "", "", "", 0, "")
else
param = "[[" .. l2 .. "]]"
end
end
-- por la enkonduka teksto
if tt == 'nasko_teksto' then
if nasko_teksto == '' then
nasko_teksto = 'naskiĝis '
end
nasko_teksto = nasko_teksto .. " en " .. param
elseif tt == 'morto_teksto' then
if morto_teksto == '' then
morto_teksto = 'mortis '
end
morto_teksto = morto_teksto .. " en " .. param
end
end
-- pliaj variantoj
if tt == 'vn' then
vn = "; vera nomo " .. param
elseif tt == 'ŝtato' then
local testo = ligiloj._chuligilo2(param)
if testo == 'ligu' then
shtato = param
param = '[[' .. param .. ']]'
else
shtato = ligiloj._delink(param)
end
end
if t == "numero" or t == "loĝantaro" then -- se estas numero aŭ nombro de loĝantoj, laŭ la subŝablona tabelo, tiam formatigu tiel
local n = tonumber(param)
if n ~= nil then
param = formatnum(param)
else
nenumero = true -- aktivigas zorgigan kategorion
end
end
if a2a ~= "" and a2a ~= nil then
if t == "loĝantaro" then
param = param .. " <small>(" .. a2a .. ")</small>"
elseif t ~= "situo" then
if v["prefikso"] ~= "" and v["prefikso"] ~= nil then
a2a = v["prefikso"] .. a2a
end
param = param .. " (" .. a2a .. ")"
end
end
if situo2 ~= "" then
param = param .. ", " .. situo2
end
param = notaldono(notovaloro,param, a2)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
if pri ~= "" and pri ~= nil then
aldonulinion(pri,param, "", "", montrilo)
else
aldonuchelon(param, "", "", montrilo)
end
else
-- ĉu vikidatuma ero ekzistas
local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
if wd ~= "" and wd ~= nil and wd ~= 'sen valoro' and wd ~= "nekonata valoro" then
local ligilo = wdlink (wdid, pk) or ""
if t == "numero" or t == "loĝantaro" then
wd = formatnum(wd) or wd
end
if tt == 'nasko_teksto' then
nasko_teksto = nasko_teksto .. ' en [[' .. wd .. ']]'
elseif tt == 'morto_teksto' then
morto_teksto = morto_teksto .. ' en [[' .. wd .. ']]'
end
wd = notaldono(notovaloro,wd, a2)
wd = refaldono(referencovaloro,wd, referenconomo, referenconomodua)
wd = wd .. ligilo
if t == "loĝantaro" then
-- {{#invoke:Wikidata|claim|P1082|id=Q64|qualifier=P585}}
local wda2
-- Veruko por ne afisxi K.E.
if wdid ~= "" and wdid ~= nil then
wda2 = wikidata.claim({args={pk,qualifier=pk2,id=wdid} })
else
wda2 = wikidata.claim({args={pk,qualifier=pk2} })
end
if wda2 ~= "" and wda2 ~= nil then
-- forigi K.E. el la teksto, sed ankaŭ la antaŭa spaco estu forigita
wda2 = mw.ustring.gsub( wda2, " K%.E%.", "")
wd = wd .. " <small>(" .. wda2 .. ")</small>"
end
-- fino de la veruko
else
if a2a ~= "" and a2a ~= nil then
wd = wd .. " (" .. a2a .. ")"
end
end
-- wd = notaldono(noto,par, wd, args,a2,pk,wdid)
if pri ~= "" and pri ~= nil then
aldonulinion(pri,wd,"jes", "",montrilo)
else
aldonuchelon(wd,"", "jes", montrilo)
end
end
end
elseif t == "teksto1" then
---------------- TEKSTO1 - do unuĉela teksto kun priskribo -------------------------------------------------------------------------
-- komuna parto kun priskribo
local p = pri or ""
if p ~= "" then
p = "<b>" .. p .. "</b>: "
end
-- se parametro estas en artikolo
if param ~= "" and param ~= nil then
local p2 = p .. param
p2 = notaldono(notovaloro,p2)
p2 = refaldono(referencovaloro,p2, referenconomo, referenconomodua)
aldonuchelon(p2,"", "", montrilo)
else
-- ĉu estas vikidatuma ero
local wd, referencovaloro = wdparam(pk,wdid,referencovaloro)
if wd ~="" and wd ~= nil then
local ligilo = wdlink (wdid, pk) or ""
local p2 = p .. wd
p2 = notaldono(notovaloro,p2)
p2 = refaldono(referencovaloro,p2, referenconomo, referenconomodua)
p2 = p2 .. ligilo
aldonuchelon(p2,"","jes", montrilo)
end
end
elseif t == "portalo" then
---------------- PORTALO - rilata portalo -------------------------------------------------------------------------
if param ~= "" and param ~= nil then
local bildo = "[[Dosiero:Portal.svg|15px]]"
param = " <b>[[Portalo:" .. param .. "|" .. param .. "]]</b>"
local p2 = bildo .. param
aldonuchelon(p2, "", "", montrilo)
portalo = true
end
elseif t == "listo" then
---------------- LISTO --------------------------------------------------------------------------------------------------------------
-- Listecaj parametroj
if param ~= "" and param ~= nil then
local c1 = pri
local f = false -- ne pluralo
local div = false -- neniu faldado
local nombro = 15
if listeroj ~= "" and listeroj ~= nil then
local l = tonumber(listeroj)
if l ~= nil then
nombro = l
end
end
local n = 1
local chuflago
if a3 ~= "" and a3 ~= nil then
chuflago=argumentoj(args,a3)
end
if chuflago ~= "" and chuflago ~= nil then
param = flago(param)
end
-- analizo, ĉu jam estas ligilo en la listero. se ne, aldonu ĝin.
local testo = ligiloj._chuligilo2(param)
if testo == "ligu" then
param = "[[" .. param .. "]]"
end
if v["prefikso"] ~= "" and v["prefikso"] ~= nil and a2 ~= "" and a2 ~= nil then
local a2a = argumentoj(args,a2)
if a2a ~= "" and a2a ~= nil then
a2a = v["prefikso"] .. a2a
param = param .. " (" .. a2a .. ")"
end
end
param = notaldono(notovaloro,param)
param = refaldono(referencovaloro,param, referenconomo, referenconomodua)
for i=1, nombro do
local c2 = args["" .. v["parametro"] .. i] or ""
if c2 ~= "" and c2 ~= nil then
if chuflago ~= "" and chuflago ~= nil then
c2 = flago(c2)
else
-- analizo, ĉu jam estas ligilo en la listero. se ne, aldonu ĝin.
local testo = ligiloj._chuligilo2(c2)
if testo == "ligu" then
c2 = "[[" .. c2 .. "]]"
end
end
local noto2
if noto == "_noto" then
noto2 = par .. i .. noto
elseif noto == "noto por " then
noto2 = noto .. par .. i
end
local notovaloro = argumentoj(args,noto2)
local referenco2, referenco2a, referenco2b
if referenco == "_referenco" then
referenco2 = par .. i .. referenco
referenco2a = referenco2 .. "_nomo"
referenco2b = referenco2 .. "_nomo-dua"
elseif referenco == "referenco por " then
referenco2 = referenco .. par .. i
referenco2a = referenco2 .. "-nomo"
referenco2b = referenco2 .. "-nomo-dua"
end
local referencovaloro = argumentoj(args,referenco2)
local referenconomo = argumentoj(args,referenco2a)
local referenconomodua = argumentoj(args,referenco2b)
c2 = notaldono(notovaloro,c2)
c2 = refaldono(referencovaloro,c2,referenconomo,referenconomodua)
param = param .. ";;;" .. c2
f = true
n = n + 1
end
end
if n > 1 then
local chufaldi = argumentoj(args,a2)
local chufaldiN = tonumber(chufaldi)
if chufaldiN == 1 or chufaldi == "faldo" then
param = n .. ";;;" .. param
div = true
end
end
if f == true and pri2 ~= "" and pri2 ~= nil then
c1 = pri2
end
if a1 ~= "" and a1 ~= nil then
-- c1 = argumentoj(args, a1)
local c1a = args["" .. a1]
if c1a ~= "" and c1a ~= nil then
c1 = c1a
end
end
local c2
if div == true then
c2 = listoj._list(";;;",param,"ne","faldebla","","jes")
else
-- (delimiter, text, x, mode, sep, w, kind, spaces, spaces1, spaces2)
c2 = listoj._list(";;;",param,"ne","span",",","jes","","",0)
end
aldonulinion(c1,c2,"", "",montrilo)
else
local wd
if wdid ~= "" and wdid ~= nil then
wd = wikidata.claim({args={pk,list=";;;",id=wdid} })
else
wd = wikidata.claim({args={pk,list=";;;"} })
end
if wd ~= "" and wd ~= nil and wd ~= 'sen valoro' and wd ~= 'nekonata valoro' then
local nombro = listoj._count(";;;",wd)
local chufaldi = argumentoj(args,a2)
local chufaldiN = tonumber(chufaldi)
local ligilo = wdlink (wdid,pk) or ""
local c2
if chufaldiN == 1 or chufaldi == "faldo" then
wd = nombro .. ligilo .. ";;;" .. wd
c2 = listoj._list(";;;",wd,"jes","faldebla","","jes")
else
wd = wd .. ligilo
-- (delimiter, text, x, mode, sep, w, kind, spaces, spaces1, spaces2)
c2 = listoj._list(";;;",wd,"jes","span",",","jes","","",0)
end
aldonulinion(pri,c2,"jes", "",montrilo)
end
end
elseif t == "dato" then
----------------- DATO -----------------------------------------------------------------------
if param ~= "" and param ~= nil then
local c1 = pri or "Dato"
local c2
local c1a = argumentoj(args, a1) or argumentoj(args, a1_a) or ""
if c1a ~= "" then
c1 = c1a
end
-- aldonulinion(c1,param)
-- testo, ĉu temas pri numero. se jes, supozeble iu transdonis la nuran jaron
local testo = tonumber(param)
if type(testo) == 'number' then
-- por la enkonduka teksto
if tt == "nasko_teksto" then
nasko_teksto= 'naskiĝis en ' .. datoj._daton("","",param)
elseif tt == 'morto_teksto' then
morto_teksto = 'mortis en ' .. datoj._daton("","",param)
estas = 'estis'
end
param = datoj._dato("","",param)
else
local s = anstatau(param, '-', '')
local testo = tonumber(s)
if type(testo) =='number' then
-- por la enkonduka teksto
if tt == "nasko_teksto" then
nasko_teksto= 'naskiĝis la ' .. datoj._daton(param,"","")
elseif tt == 'morto_teksto' then
morto_teksto = 'mortis la ' .. datoj._daton(param,"","")
estas = 'estis'
end
param = datoj._dato(param,'','')
end
end
c2 = notaldono(notovaloro,param, a2)
c2 = refaldono(referencovaloro,c2, referenconomo, referenconomodua)
aldonulinion(c1,c2,wd,"",montrilo)
end
elseif t == 'faldokomenco' then
------------------------------------------------------------------------------------------------
if param == 'jes' or param == '1' then
local faldo = kestero(pri,'+',fono2,'0.4em 0.2em')
-- aldonuchelon(faldo)
--tabelo = tabelo .. faldo
tabelo:wikitext(faldo)
end
elseif t == 'faldofino' then
--------------------------------------------------------------------------------------------------
if param == 'jes' or param == '1' then
local faldo = kestero('','*')
-- aldonuchelon(faldo)
--tabelo = tabelo .. faldo
tabelo:wikitext(faldo)
end
elseif t == 'aldono' then
---------------------------------------------------------------------------------------------------
local kon = argumentoj(args, kondicho)
if param ~= '' and param ~= nil and kon ~= 'jes' then
local trajto = argumentoj(args,a1)
local k = v["aldono2"]
kesteroj(param, trajto, k)
end
elseif t == 'okupo' then
----------------------------------------------------------------------------------------------------
-- el la malnova modulo
-- metado en tabelajn ĉelojn
local o1 = "Okupoj"
if o ~= "" then
if n == 1 or n == "1" then
o1 = "Okupo"
end
local o2 = o
if wdj == "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)
okupo_teksto = o2
else
aldonulinion(o1, o2)
okupo_teksto = o2
end
end
elseif t == 'nasko' or t == 'naskiĝo' then
------------------------------------------------------------------------------
-- naskiĝjaro
local n1 = "Dato de naskiĝo"
if naskjaro ~= "" then
local testo = tonumber(naskjaro)
local n2 = ""
local n3 = ''
if type(testo) == "number" then
-- por la informkesto
n2 = datoj._dato(nasktago,naskmonato,naskjaro)
-- por la enkonduka teksto
n3 = datoj._daton(nasktago,naskmonato,naskjaro)
else
n2 = naskjaro
n3 = naskjaro
end
aldonulinion (n1, n2)
-- por la enkonduka teksto
if nasktago ~= '' and naskmonato ~= '' then
nasko_teksto = 'naskiĝis la ' .. n3
else
if naskjaro == '?' then
nasko_teksto = 'naskiĝdato nekonata'
else
local testo = tonumber(naskjaro)
if type(testo) == 'number' then
nasko_teksto = "naskiĝis en [[" .. naskjaro .. "]]"
else
nasko_teksto = "naskiĝis " .. naskjaro
end
end
end
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)
nasko_teksto = "naskiĝis " .. datoj.Nteksto()
naskodato = naskdato
end
end
elseif t == 'morto' then
--------------------------------------------------------------------------------------
-- mortjaro
local m1 = "Dato de morto"
if mortjaro ~= "" then
local testo = tonumber(mortjaro)
local m2 = ""
local m3 = ""
if type(testo) == "number" then
m2 = datoj._dato(morttago,mortmonato,mortjaro)
-- por la enkondika teksto
m3 = datoj._daton(morttago,mortmonato,mortjaro)
else
m2 = mortjaro
m3 = mortjaro
end
aldonulinion (m1, m2)
-- por la enkondika teksto
estas = "estis"
if morttago ~= '' and mortmonato ~= '' then
morto_teksto = 'mortis la ' .. m3
else
if mortjaro == '?' then
morto_teksto = 'mortodato nekonata'
else
local testo = tonumber(mortjaro)
if type(testo) == 'number' then
morto_teksto = "mortis en [[" .. mortjaro .. "]]"
else
morto_teksto = "mortis " .. mortjaro
end
end
end
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)
morto_teksto = "mortis " .. datoj.Mteksto()
mortodato = mortdato
estas = 'estis'
end
end
elseif t == 'aĝo' then
---------------------------------------------------------------------------------
-- aldono al la tabelo
local a1 = "Aĝo"
if a ~= "" then
if va == false then
a1 = "Aĝo je morto"
end
local a2 = a
aldonulinion (a1, a2)
end
elseif t == 'nomo' then
--------------------------------------------------------------------------------
if antaunomo ~= "" or familinomo ~= "" or titolo ~= "" then
local c1 = 'Nomo'
local c2
local k = v["kondicho"]
local k2 = v["kondicho2"]
local rezulto = v["rezulto"]
local k_a = argumentoj(args, k) or ""
local k2_a = argumentoj(args, k2) or ""
if k_a ~= "" or k2_a ~= "" then
c1 = 'Plumnomo'
end
if antaunomo ~= "" then
c2 = antaunomo .. spaco
else
c2 = ''
end
if familinomo ~= "" then
c2 = c2 .. etmajuskloj(familinomo)
end
if postnomo ~= "" then
c2 = c2 .. spaco .. postnomo
end
if antaunomo == "" and familinomo == "" then
c2 = titolo
end
aldonulinion(c1, c2)
end
elseif t == 'enkonduko' then
------------------------------------------------------------------------
if param ~= 'ne' then
if titolo2 ~= "" then
local nomo2 = titolo2
teksto = "'''" .. nomo2 .. "'''"
local spaco = " "
-- enkrampa teksto
-- 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,
}
}
teksto = teksto .. spaco .. "(" .. p
jamkrampo = true
end
if postfamilinomo ~= "" then
local k = ""
if jamkrampo == false then
k = "("
jamkrampo = true
else
k = ", "
end
teksto = teksto .. spaco .. k .. postfamilinomo
end
if aliajlingvoj ~= "" then
local k = ""
if jamkrampo == false then
k = "("
jamkrampo = true
else
k = ", "
end
teksto = teksto .. spaco .. k .. aliajlingvoj
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 nasko_teksto ~= "" and morto_teksto ~= "" then
d = spaco .. k .. nasko_teksto .. ", " .. morto_teksto .. vn .. ") "
elseif nasko_teksto ~= "" and morto_teksto == "" then
d = spaco .. k .. nasko_teksto .. vn .. ") "
elseif nasko_teksto == "" and morto_teksto ~= "" then
d = spaco .. k .. "naskiĝdato nekonata; " .. morto_teksto .. vn .. ") "
elseif nasko_teksto == "" and morto_teksto == "" then
d = spaco .. k .. "naskiĝdato nekonata" .. vn .. ") "
end
-- aldono al la eldonota signoĉeno
teksto = teksto .. 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
teksto = teksto .. ") "
end
-- aldono al la eldonota signoĉeno
if antauokupo ~= "" then
teksto = teksto .. antauokupo .. spaco
else
teksto = teksto .. " " .. estas
end
-- ŝtato kaj la rilata adjektivo per ŝablono
local s = " [[" .. shtato .. "|"
local st = shtatadjektivo(shtato)
if shtato ~= "" then
teksto = teksto .. s .. st .. "]] "
end
if o ~= '' then
teksto = teksto .. ' ' .. o
end
if postokupo ~= "" then
teksto = teksto .. postokupo
end
-- fino "param ~= ne"
end
-- fino "enkonduko"
end
elseif t == 'kategorio' and param ~= 'ne' and ns ~= 10 then
-- kategorioj ne aperu en la dokumentado de ŝablono, sed en artikoloj kaj sur testo- kaj diskutopaĝoj
----------------------------------------------------------------
-- 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,tk)
okat = okat .. okat1
end
else
okupoj = ligiloj._delink(okupoj)
local okat1 = okupokategorio(shtato,okupoj,tk)
okat = okat .. okat1
end
end
if okupo ~="" then
okupo = ligiloj._delink(okupo)
local okat1 = okupokategorio(shtato,okupo,tk)
okat = okat .. okat1
end
if okupo2 ~="" then
okupo2 = ligiloj._delink(okupo2)
local okat1 = okupokategorio(shtato,okupo2,tk)
okat = okat .. okat1
end
if okupo3 ~="" then
okupo3 = ligiloj._delink(okupo3)
local okat1 = okupokategorio(shtato,okupo3,tk)
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,tk)
okat = okat .. okat1
end
else
local okat1 = okupokategorio(shtato,wdo,tk)
okat = okat .. okat1
end
end
end
-- fino de kategorioj pri okupoj
-- 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 .. "[[" .. tk .. "Kategorio:Viroj]]"
elseif sekso == "ina" then
okat = okat .. okat .. "[[" .. tk .. "Kategorio:Virinoj]]"
end
end
-- aldono al la eldonenda signoĉeno
kategorio = kategorio .. 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
-- se ne okazu ordigo laŭ iu ordigilo, forĵetu tion, por ke tio ne subite aperu kiel normala teksto
ordigo = ""
end
-- dataj kategorioj
if naskjaro ~= "" then
local n = vivtempo(ordigo,naskjaro,mortjaro,tk)
-- aldono al la eldonenda signoĉeno
kategorio = kategorio .. n
elseif naskodato ~= "" and mortodato ~= "" then
local n = vivtempo(ordigo,naskodato, mortodato, tk)
kategorio = kategorio .. n
elseif naskodato ~= "" and mortodato == "" then
local n = vivtempo(ordigo,naskodato, "", tk)
kategorio = kategorio .. n
elseif naskodato == "" and mortodato ~= "" then
local n = vivtempo(ordigo,"NEKONATA",mortodato,tk)
kategorio = kategorio .. 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(ordigo,n,m,tk)
--local k = ""
-- aldono al la eldonenda signoĉeno
kategorio = kategorio .. k
else
kategorio = kategorio .. frame:callParserFunction{ name = "DEFAULTSORT", args = ordigo }
end
end
-- aldonu antaŭ tio
end
end
end
end
-- fina parto
-- nestado de interna ŝablono
if args['enhavo'] ~= "" and args['enhavo'] ~= nil and args['Enhavo'] ~= "" and args['Enhavo'] ~= nil then
-- tabela strukturo devas esti kreata de la interna ŝablono!
local enhavo = args['enhavo'] or args['Enhavo']
tabelo:newline()
tabelo:wikitext(enhavo)
tabelo:newline()
end
if args['subŝablono'] ~= "jes" and args['Subŝablono'] ~= "jes" then
if portalo == false then
-- 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)
end
-- ŝanĝu ŝablonon
-- {{ŝanĝu ŝablonon|ŝablono=Informkesto geografiaĵo}}
local t = informkesto._ligilaro (shablono,fono,"","","","","linio")
tabelo:newline()
:wikitext(t)
:newline()
:done()
end
-- fino de la tabelo
r = tostring(tabelo) .. teksto .. kategorio
return r
end
return p