Modul:Substantiv: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) (Vorlagen) |
Sn (Diskussion | Beiträge) (removed dead code) |
||
(38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
utils = require('Modul:LateinUtils') | |||
function bildeFormen(basic, stamm, dekl, genus, numeri) | function bildeFormen(basic, stamm, dekl, genus, numeri) | ||
formen = {} | formen = {} | ||
for nk,_ in numeri:gmatch('.') do | for nk,_ in numeri:gmatch('.') do | ||
for kk,kv in pairs(DEKLS[dekl][genus][nk]) do | for kk,kv in pairs(utils.DEKLS[dekl][genus][nk]) do | ||
formen[nk .. kk] = stamm .. kv | |||
end | end | ||
end | end | ||
formen | formen[numeri:sub(1,1) .. 1] = basic | ||
if genus == 'n' then | if genus == 'n' then | ||
formen | formen[numeri:sub(1,1) .. 4] = basic | ||
end | end | ||
if formen[ | if formen['S6'] and not basic:match("us$") then | ||
formen[ | formen['S6'] = nil | ||
end | end | ||
if formen['S6'] and basic:match("ius$") then | |||
formen['S6'] = stamm | |||
end | end | ||
if numeri:match("P") and dekl == 'k' and ((utils.KONS:match(stamm:sub(-1,-1)) and utils.KONS:match(stamm:sub(-2,-2))) or formen['S1'] == formen['S2']) then | |||
formen['P2'] = stamm .. 'ium' | |||
end | end | ||
return formen | |||
end | end | ||
Zeile 161: | Zeile 31: | ||
local dekl = frame.args[3] or frame:getParent().args[3] or 'o' | local dekl = frame.args[3] or frame:getParent().args[3] or 'o' | ||
local genus = frame.args[4] or frame:getParent().args[4] or 'n' | local genus = frame.args[4] or frame:getParent().args[4] or 'n' | ||
local lekt = frame.args[5] or frame:getParent().args[5] or '0' | |||
local numeri= frame.args.numeri or frame:getParent().numeri or 'SP' | local numeri= frame.args.numeri or frame:getParent().numeri or 'SP' | ||
local formen = bildeFormen(basic, stamm, dekl, genus, numeri) | local formen = bildeFormen(basic, stamm, dekl, genus, numeri) | ||
if numeri ~= 'SP' then | |||
genus = genus .. ' ' .. utils.NABBRV[numeri] | |||
end | |||
local pagecontent = '' | local pagecontent = '' | ||
local lernformen = {} | |||
lernformen[1] = basic | |||
lernformen[2] = formen[numeri:sub(1,1) .. 2] | |||
lernformen[3] = genus | |||
lernformen[4] = lekt | |||
if not mw.isSubsting() then | if not mw.isSubsting() then | ||
pagecontent = pagecontent .. renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke: | pagecontent = pagecontent .. utils.renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke:Substantiv|...}}</code> eingebunden werden! "}) | ||
end | end | ||
pagecontent = pagecontent .. | pagecontent = pagecontent .. utils.renderWortwolke(basic) .. "\n" | ||
pagecontent = pagecontent .. utils.renderVokabelbox('Lernformen Substantiv', lernformen) | |||
pagecontent = pagecontent .. | |||
if numeri == 'S' then | if numeri == 'S' then | ||
pagecontent = pagecontent .. renderTemplate("Singularetantum", {}) | pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n' | ||
elseif numeri == 'P' then | elseif numeri == 'P' then | ||
pagecontent = pagecontent .. renderTemplate("Pluraletantum", {}) | pagecontent = pagecontent .. utils.renderTemplate("Pluraletantum", {}) .. '\n' | ||
end | end | ||
pagecontent = pagecontent .. "== Formen ==\n\n" | pagecontent = pagecontent .. "== Formen ==\n\n" | ||
pagecontent = pagecontent .. renderFormen(formen, dekl) | pagecontent = pagecontent .. utils.renderFT('Substantiv', formen, {Deklination = dekl}) | ||
return pagecontent | pagecontent = pagecontent .. utils.renderFooter(basic, basic, {lekt}) | ||
return pagecontent | |||
end | |||
function p.renderFormen() | |||
local frame = mw.getCurrentFrame() | |||
local basic = frame.args[1] or frame:getParent().args[1] or 'exemplum' | |||
local stamm = frame.args[2] or frame:getParent().args[2] or 'exempl' | |||
local dekl = frame.args[3] or frame:getParent().args[3] or 'o' | |||
local genus = frame.args[4] or frame:getParent().args[4] or 'n' | |||
local lekt = frame.args[5] or frame:getParent().args[5] or '0' | |||
local numeri= frame.args.numeri or frame:getParent().numeri or 'SP' | |||
local formen = bildeFormen(basic, stamm, dekl, genus, numeri) | |||
if numeri ~= 'SP' then | |||
genus = genus .. ' ' .. utils.NABBRV[numeri] | |||
end | |||
local pagecontent = '' | |||
pagecontent = pagecontent .. utils.renderFT('Substantiv', formen, {Deklination = dekl}) | |||
pagecontent = pagecontent .. utils.renderFooter(basic, basic, {lekt}) | |||
return pagecontent | |||
end | end | ||
return p | return p |
Aktuelle Version vom 17. Oktober 2024, 14:51 Uhr
Dieses Modul erzeugt lateinische Konjugationstabellen aus gegebenen Stämmen.
Beispiel
{{subst:#invoke:Substantiv|render|metus|met|u|m|52}}
für ein Substantiv mit Singular und Plural. Optional kannnumeri=SP
ergänzt werden, muss aber nicht{{subst:#invoke:Substantiv|render|moenia|moen|i|n|51|numeri=P}}
für ein Pluraletantum{{subst:#invoke:Substantiv|render|aurum|aur|o|n|67|numeri=S}}
für ein Singularetantum
{{subst:
|
Immer nur mit subst einbinden, damit die Formen im Seitenquelltext landen und für die Suchfunktion auffindbar sind.
|
---|---|
#invoke:Substantiv|
|
Name des Moduls |
render|
|
rufe die Funktion render auf
|
iter|
|
Grundform |
itiner|
|
Stamm |
k|
|
Deklination (erlaubt sind a , e , i , k , o und u )
|
n|
|
Genus (erlaubt sind m , f und n )
|
44|
|
Optional: Lektion, in der die Vokabel eingeführt wird (Standard: 0, d.h. nicht in Campus enthalten) |
numeri=SP
|
Optional: Verfügbare Numeri
|
Hinweis
Dieses Modul sollte immer mit subst:
eingebunden werden, damit alle Formen im durchsuchbaren Seitenquelltext landen und eine Suche nach ducum auch zu dux führt.
local p = {}
utils = require('Modul:LateinUtils')
function bildeFormen(basic, stamm, dekl, genus, numeri)
formen = {}
for nk,_ in numeri:gmatch('.') do
for kk,kv in pairs(utils.DEKLS[dekl][genus][nk]) do
formen[nk .. kk] = stamm .. kv
end
end
formen[numeri:sub(1,1) .. 1] = basic
if genus == 'n' then
formen[numeri:sub(1,1) .. 4] = basic
end
if formen['S6'] and not basic:match("us$") then
formen['S6'] = nil
end
if formen['S6'] and basic:match("ius$") then
formen['S6'] = stamm
end
if numeri:match("P") and dekl == 'k' and ((utils.KONS:match(stamm:sub(-1,-1)) and utils.KONS:match(stamm:sub(-2,-2))) or formen['S1'] == formen['S2']) then
formen['P2'] = stamm .. 'ium'
end
return formen
end
function p.render()
local frame = mw.getCurrentFrame()
local basic = frame.args[1] or frame:getParent().args[1] or 'exemplum'
local stamm = frame.args[2] or frame:getParent().args[2] or 'exempl'
local dekl = frame.args[3] or frame:getParent().args[3] or 'o'
local genus = frame.args[4] or frame:getParent().args[4] or 'n'
local lekt = frame.args[5] or frame:getParent().args[5] or '0'
local numeri= frame.args.numeri or frame:getParent().numeri or 'SP'
local formen = bildeFormen(basic, stamm, dekl, genus, numeri)
if numeri ~= 'SP' then
genus = genus .. ' ' .. utils.NABBRV[numeri]
end
local pagecontent = ''
local lernformen = {}
lernformen[1] = basic
lernformen[2] = formen[numeri:sub(1,1) .. 2]
lernformen[3] = genus
lernformen[4] = lekt
if not mw.isSubsting() then
pagecontent = pagecontent .. utils.renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke:Substantiv|...}}</code> eingebunden werden! "})
end
pagecontent = pagecontent .. utils.renderWortwolke(basic) .. "\n"
pagecontent = pagecontent .. utils.renderVokabelbox('Lernformen Substantiv', lernformen)
if numeri == 'S' then
pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n'
elseif numeri == 'P' then
pagecontent = pagecontent .. utils.renderTemplate("Pluraletantum", {}) .. '\n'
end
pagecontent = pagecontent .. "== Formen ==\n\n"
pagecontent = pagecontent .. utils.renderFT('Substantiv', formen, {Deklination = dekl})
pagecontent = pagecontent .. utils.renderFooter(basic, basic, {lekt})
return pagecontent
end
function p.renderFormen()
local frame = mw.getCurrentFrame()
local basic = frame.args[1] or frame:getParent().args[1] or 'exemplum'
local stamm = frame.args[2] or frame:getParent().args[2] or 'exempl'
local dekl = frame.args[3] or frame:getParent().args[3] or 'o'
local genus = frame.args[4] or frame:getParent().args[4] or 'n'
local lekt = frame.args[5] or frame:getParent().args[5] or '0'
local numeri= frame.args.numeri or frame:getParent().numeri or 'SP'
local formen = bildeFormen(basic, stamm, dekl, genus, numeri)
if numeri ~= 'SP' then
genus = genus .. ' ' .. utils.NABBRV[numeri]
end
local pagecontent = ''
pagecontent = pagecontent .. utils.renderFT('Substantiv', formen, {Deklination = dekl})
pagecontent = pagecontent .. utils.renderFooter(basic, basic, {lekt})
return pagecontent
end
return p