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(
local wikidata = require
local wikidatoj = require
local listoj = require
local bildoj = require
-- helpaj funkcioj sen ŝablonoj
local function aldonulinion (c1, c2, wd)
:done()
if wd == "jes" then
local chelo2 = tabellinio:tag("td")
:addClass("wikidata-content")
:wikitext(c2)
:done()
:newline()
else
local chelo2 = tabellinio:tag("td")
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
local s = teksto:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
if not s then
s = teksto:match( "%[%[%s*([^%]]+)%s*%]%]" )
end
if not s then
return true
end
return false
end
-- el la modulo Listutil
--
-- tio estas bezonata, ĉar ligilo en ligilo ne eblas
-- s -
local function delink(v)
s = v:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
if not s then
s = v:match( "%[%[%s*([^%]]+)%s*%]%]" )
end
if not s then
s = v
end
return mw.text.trim(s) -- forigas spacetojn
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
if chuligilo(v) then
else
end
if k > 1
o = o .. "," .. listero
else
o = listero
end
end
if chu ~="ne" then
o = listoj._list(",",o,"jes","kaj")
else
-- analizo, ĉu jam estas ligilo. se jes, ŝanĝu nenion.
if chuligilo(okupoj) then
o = "[[" .. okupoj .. "]]"
else
o = okupoj
end
end
return o
end
local function okupokategorio (shtato, okupo,t)
}
}
if t ~="" then end
local function shtatadjektivo (shtato)
}
end
local function vivtempo (naskjaro, mortjaro,t)
end
local function etmajuskloj (teksto)
end
local function changetemplate (shablono,fono)
end
local function monato (m)
end
local function paghenamebase ()
end
local p = {}
function p.enkonduko ( frame )
-- This function builds the infobox used by the {{informkesto biografio}} template.
if not getArgs then
getArgs = require(
end
--local args = getArgs(frame, {wrappers =
local args = getArgs(frame, {wrappers =
-- nomoj
local antaunomo = args[
local familinomo = args[
local postnomo = args[
local prononco = args[
local postfamilinomo = args[
local aliajlingvoj = args[
local veranomo = args[
-- datoj
local nasktago = args[
local naskmonato = args[
local naskjaro = args[
local naskloko = args[
local nasklokoligilo = args[
local morttago = args[
local mortmonato = args[
local mortjaro = args[
local mortloko = args[
local mortlokoligilo = args[
-- 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:
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{
}
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 la homo mortis, aŭ oni konas lian datmorton aŭ oni ne konas ĝin
if mortdato ~=
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 = "; 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)
local o = ""
if okupoj ~="" then
if aliajokupoj ~= "" then
okupoj
end
o = okupoanalizo(okupoj)
elseif okupo ~= "" or okupo2 ~= "" or okupo3 ~= "" or aliajokupoj ~= "" then
if okupo ~="" then
if chuligilo(okupo) then
okupoj = "[[" .. okupo .. "]]"
okupoj = okupo if chuligilo(okupo2) then
end
end
if okupo3 ~="" then
local o3 = okupo3
if chuligilo(okupo3) then
o3 = "[[" .. o3 .. "]]"
end
okupoj = okupoj .. "," .. o3
end
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
return r
end
--
function p.kategorio (frame)
-- This function builds the infobox used by the {{informkesto biografio}} template.
if not getArgs then
getArgs = require(
end
--local args = getArgs(frame, {wrappers =
local args = getArgs(frame, {wrappers =
-- nomoj
local antaunomo = args[
local familinomo = args[
local postnomo = args[
local prononco = args[
local postfamilinomo = args[
local aliajlingvoj = args[
local veranomo = args[
-- datoj
local nasktago = args[
local naskmonato = args[
local naskjaro = args[
local naskloko = args[
local morttago = args[
local mortmonato = args[
local mortjaro = args[
local mortloko = args[
-- okupoj
local antauokupo = args[
local okupoj = args[
local okupo = args[
local okupo2 = args[
local okupo3 = args[
local aliajokupoj = args[
local postokupo = args[
-- lokaj aferoj
local shtato = args[
-- por la kategorioj
local ordigilo = args[
local ordigu = args[
local test = args[
-- ceteraj variabloj
Linio 608 ⟶ 554:
strings = mw.text.split(okupoj, ",", plain)
for k,v in pairs(strings) do
v = delink(v)
local okat1 = okupokategorio(shtato,v,t)
okat = okat .. okat1
else
okupoj = delink(okupoj)
local okat1 = okupokategorio(shtato,okupoj,t)
okat = okat .. okat1
end
end
if okupo ~="" then
end
if okupo2 ~="" then
end
if okupo3 ~="" then
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 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
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 =
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(
end
--local args = getArgs(frame, {wrappers =
local args = getArgs(frame, {wrappers =
-- nomoj
local antaunomo = args[
local familinomo = args[
local postnomo = args[
local prononco = args[
local postfamilinomo = args[
local aliajlingvoj = args[
local veranomo = args[
-- bildo resp. dosiero
local dosiero = args[
local tipodosiero = args[
local dosieragrandeco = args[
local subteksto = args[
-- datoj
local nasktago = args[
local naskmonato = args[
local naskjaro = args[
local naskloko = args[
local nasklokoligilo = args[
local morttago = args[
local mortmonato = args[
local mortjaro = args[
local mortloko = args[
local mortlokoligilo = args[
-- okupoj
local antauokupo = args[
local okupoj = args[
local okupo = args[
local okupo2 = args[
local okupo3 = args[
local aliajokupoj = args[
local postokupo = args[
-- lokaj aferoj
local shtato = args[
-- formatoj
local fono = args[
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
end
Linio 792 ⟶ 715:
local r = ""
local spaco = " "
local fn1 = '<span style="text-transform:
local fn2 =
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(
:addClass("infobox vcard")
:css(
:css(
:css(
:css(
:newline()
-- kaplinio
local tabelkapo = tabelo:tag(
-- kaplinia ĉelo
local kapchelo = tabelkapo:tag(
:addClass(
:attr(
:css(
:css(
:css(
-- 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:
if dosiero ~= "" then
local bildo = tabelo:tag("tr")
local bildchelo = bildo:tag("td")
:attr(
:css(
:css(
-- {{#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(
local titol1chelo = subtitolo1:tag(
:css(
:css(
:attr(
:wikitext(
:done()
:newline()
--! {{#if:{{{VeraNomo|}}}|Plumnomo|Nomo}}
--| {{#if:{{{Antaŭnomo|}}}|{{{Antaŭnomo}}} |}}{{etmajuskloj|{{{Familinomo|}}}}}{{#if:{{{Postnomo|}}}| {{{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 ..
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 ..
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 ..
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 ..
end
local wd = "jes"
aldonulinion (m1, m2, wd)
end
end
-- okupoj
local wd = "" -- indikilo por vikidatuma deveno, uzata malsupre
o =
local
end
okupoj = o1
end
if okupo2 ~="" then
local o2 = okupo2
o2 = "[[" .. o2 .. "]]"
end
end
if okupo3 ~="" then
local o3 = okupo3
if chuligilo(okupo3) then
o3 = "[[" .. o3 .. "]]"
end
okupoj = okupoj .. "," .. o3
end
if aliajokupoj ~="" then
okupoj = okupoj .. "," .. o_a
end
n = listoj._count(",",okupoj)
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
-- 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 ..
end
aldonulinion
else
aldonulinion
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
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:
-- font-size:
local portalo = '[[Portalo:Homoj|<span style="color:
portalo = "'''" .. portalo .. "'''" -- la grasigo estu aparta, ĉar alie Lua traktas tion kiel eraron
local portallinio = tabelo:tag(
local portalchelo = portallinio:tag(
:attr(
:css(
:css(
:css(
:css(
:css(
:css(
:wikitext(portalo)
-- ŝanĝu ŝablonon
-- {{ŝanĝu ŝablonon|ŝablono=Informkesto biografio}}
Linio 1 192 ⟶ 1 103:
r = tostring(tabelo)
return r
end
return p
|