Modul:Verb
Aus KGS-Wiki
Dieses Modul erzeugt lateinische Konjugationstabellen aus gegebenen Stämmen.
Beispiel
{{subst:#invoke:Verb|render|dare|20|da|ded|28|dat|47|PraesGV=AP|PerfGV=AP}}
für ein Vollverb mit Aktiv und Passiv in Präsens- und Perfektstämmen{{subst:#invoke:Verb|render|sequi||sequ|||secut||PraesGV=P|PerfGV=P}}
für ein Deponens{{subst:#invoke:Verb|render|gaudere|4|gaude|||gavis||PraesGV=AP|PerfGV=P}}
für ein Semideponens, das in Perfektstämmen nur Passivformen bildet{{subst:#invoke:Verb|render|facere|17|faci|fec|27|||PraesGV=A|PerfGV=A}}
für ein Defectivum, das nur aktivische Formen bildet.
{{subst:
|
Immer nur mit subst einbinden, damit die Formen im Seitenquelltext landen und für die Suchfunktion auffindbar sind.
|
---|---|
#invoke:Verb|
|
Name des Moduls |
render|
|
rufe die Funktion render auf
|
irrumare|
|
Infinitiv |
0|
|
Optional: Lektion, in der der Infinitiv eingeführt wurde |
irruma|
|
Präsensstamm |
irrumav|
|
Perfektstamm |
0|
|
Optional: Lektion, in der der Perfektstamm eingeführt wurde |
irrumat|
|
Stamm des PPP |
0|
|
Optional: Lektion, in der das PPP eingeführt wurde |
PraesGV=AP
|
Optional: Verfügbare Genera verbi in den präsentischen Zeiten.
|
PerfGV=AP}}
|
Optional: Verfügbare Genera verbi in den perfektischen Zeiten.
|
Hinweis
Dieses Modul sollte immer mit subst:
eingebunden werden, damit alle Formen im durchsuchbaren Seitenquelltext landen und eine Suche nach dem auch zu dare führt.
local p = {}
local IND_AKT = 1
local KONJ_AKT = 2
local IND_PASS = 3
local KONJ_PASS= 4
local PERSONEN = {'1. Person Singular', '2. Person Singular', '3. Person Singular';
'1. Person Plural', '2. Person Plural', '3. Person Plural'}
local PRAES = 0
local PERF = 1
function init(frame)
return {
inf = frame.args[1] or frame:getParent().args[1] or 'Infinitiv';
praes = frame.args[2] or frame:getParent().args[2] or 'Präsensstamm + ';
perf = frame.args[3] or frame:getParent().args[3] or 'Perfektstamm + ';
ppp = frame.args[4] or frame:getParent().args[4] or 'PPP-Stamm + ';
praesGV= frame.args.PraesGV or frame:getParent().args.PraesGV or 'AP';
perfGV = frame.args.PraesGV or frame:getParent().args.PerfGV or 'AP';
}
end
function bildePraesens(params)
local praes = params.praes
local formen = {}
local endungen = {{'o', 's', 't', 'mus', 'tis', 'nt'};
{'m', 's', 't', 'mus', 'tis', 'nt'};
{'or', 'ris', 'tur', 'mur', 'mini', 'ntur'};
{'r', 'ris', 'tur', 'mur', 'mini', 'ntur'}}
for i = 1, 4, 1 do
formen[i] = {}
end
if not praes:match("[aei]$") then
formen[IND_AKT][1] = praes .. 'o'
formen[IND_PASS][1] = praes .. 'or'
for person = 2, 5, 1 do
formen[IND_AKT][person] = praes .. 'i' .. endungen[IND_AKT][person]
formen[IND_PASS][person] = praes .. 'i' .. endungen[IND_PASS][person]
formen[KONJ_AKT][person] = praes .. 'a' .. endungen[KONJ_AKT][person]
formen[KONJ_PASS][person] = praes .. 'a' .. endungen[KONJ_PASS][person]
end
formen[IND_PASS][2] = praes .. 'eris'
formen[IND_AKT][6] = praes .. 'unt'
formen[IND_PASS][6] = praes .. 'untur'
end
if praes:match("a$") then
formen[IND_AKT][1] = praes:sub(1,-2) .. 'o'
formen[IND_PASS][1] = praes:sub(1,-2) .. 'or'
formen[KONJ_AKT][1] = praes:sub(1,-2) .. 'em'
formen[KONJ_PASS][1] = praes:sub(1,-2) .. 'er'
for person = 2, 6, 1 do
formen[IND_AKT][person] = praes .. endungen[IND_AKT][person]
formen[IND_PASS][person] = praes .. endungen[IND_PASS][person]
formen[KONJ_AKT][person] = praes:sub(1,-2) .. 'e' .. endungen[KONJ_AKT][person]
formen[KONJ_PASS][person] = praes:sub(1,-2) .. 'e' .. endungen[KONJ_PASS][person]
end
else
for person = 1, 6, 1 do
formen[IND_AKT][person] = praes .. endungen[IND_AKT][person]
formen[IND_PASS][person] = praes .. endungen[IND_PASS][person]
formen[KONJ_AKT][person] = praes .. 'a' .. endungen[KONJ_AKT][person]
formen[KONJ_PASS][person] = praes .. 'a' .. endungen[KONJ_PASS][person]
end
if not praes:match("e$") then
formen[IND_AKT][6] = praes .. 'unt'
formen[IND_PASS][6] = praes .. 'untur'
end
end
return formen
end
function bildeFuturI(params)
local praes = params.praes
local formen = {}
local endungen = {{'o', 's', 't', 'mus', 'tis', 'nt'};
{};
{'r', 'ris', 'tur', 'mur', 'mini', 'ntur'};
{}}
for i = 1, 4, 1 do
formen[i] = {}
end
if praes:match("[ae]$") then
formen[IND_AKT][1] = praes .. 'bo'
formen[IND_PASS][1] = praes .. 'bor'
for person = 2, 5, 1 do
formen[IND_AKT][person] = praes .. 'bi' .. endungen[IND_AKT][person]
formen[IND_PASS][person] = praes .. 'bi' .. endungen[IND_PASS][person]
end
formen[IND_PASS][2] = praes .. 'beris'
formen[IND_AKT][6] = praes .. 'bunt'
formen[IND_PASS][6] = praes .. 'buntur'
else
formen[IND_AKT][1] = praes .. 'am'
formen[IND_PASS][1] = praes .. 'ar'
for person = 2, 6, 1 do
formen[IND_AKT][person] = praes .. 'e' .. endungen[IND_AKT][person]
formen[IND_PASS][person] = praes .. 'e' .. endungen[IND_PASS][person]
end
end
return formen
end
function bildeImperfekt(params)
local inf = params.inf
local praes = params.praes
local formen = {}
local endungen = {{'m', 's', 't', 'mus', 'tis', 'nt'};
{'m', 's', 't', 'mus', 'tis', 'nt'};
{'r', 'ris', 'tur', 'mur', 'mini', 'ntur'};
{'r', 'ris', 'tur', 'mur', 'mini', 'ntur'}}
for i = 1, 4, 1 do
formen[i] = {}
end
local ind_stamm = praes .. 'ba'
local konj_stamm = inf
if not praes:match("[ae]$") then
ind_stamm = praes .. 'eba'
end
if not inf:match("r[ei]$") then
konj_stamm = praes .. 'ere'
end
if inf:match("ri$") then
konj_stamm = praes .. 're'
end
for person = 1, 6, 1 do
formen[IND_AKT][person] = ind_stamm .. endungen[IND_AKT][person]
formen[IND_PASS][person] = ind_stamm .. endungen[IND_PASS][person]
formen[KONJ_AKT][person] = konj_stamm .. endungen[KONJ_AKT][person]
formen[KONJ_PASS][person] = konj_stamm .. endungen[KONJ_PASS][person]
end
return formen
end
function render(tempus, formen, praesGV, perfGV)
local step = 1
if tempus:match("Futur") then
step = 2
end
local table = ''
table = table .. '{| class="wikitable mw-collapsible"\n'
table = table .. '|+ ' .. tempus .. '\n! Person !! Indikativ Aktiv'
if step == 1 then
table = table .. ' !! Konjunktiv Aktiv'
end
if praesGV == 'AP' then
table = table .. ' !! Indikativ Passiv'
if step == 1 then
table = table .. ' !! Konjunktiv Passiv'
end
end
if praesGV:match('A') then
minTemp = 1
else
minTemp = 3
end
if praesGV:match('P') then
maxTemp = 4
else
maxTemp = 2
end
table = table .. '\n|-\n'
for person = 1, 6, 1 do
table = table .. '! ' .. PERSONEN[person] .. '\n'
for tm = minTemp, maxTemp, step do
table = table .. ' || ' .. formen[tm][person]
end
table = table .. '\n|-\n'
end
table = table .. '|}'
return table
end
function p.render(frame)
params = init(frame)
tables = ''
tables = tables .. render('Präsens', bildePraesens(params), params.praesGV, params.perfGV)
tables = tables .. '\n\n'
tables = tables .. render('Imperfekt', bildeImperfekt(params), params.praesGV, params.perfGV)
tables = tables .. '\n\n'
tables = tables .. render('FuturI', bildeFuturI(params), params.praesGV, params.perfGV)
return tables
end
return p