Modul:Substantiv: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
(removed dead code)
 
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}
utils = require('Modul:LateinUtils')
utils = require('Modul:LateinUtils')
local KASUS  = {'Nominativ', 'Genitiv', 'Dativ', 'Akkusativ', 'Ablativ', 'Vokativ'}
local NUMERI = {S = 'Singular', P = 'Plural'}
local NABBRV = {S = 'Sg.', P = 'Pl.'}
local DEKLS = {
o = {
m = {
S = {'', 'i', 'o', 'um', 'o', 'e'};
P = {'i', 'orum', 'is', 'os', 'is'}
};
f = {
S = {'', 'i', 'o', 'um', 'o'};
P = {'i', 'orum', 'is', 'os', 'is'}
};
n = {
S = {'', 'i', 'o', 'um', 'o'};
P = {'a', 'orum', 'is', 'a', 'is'}
};
name = 'o-Deklination'
};
a = {
m = {
S = {'', 'ae', 'ae', 'am', 'ā'};
P = {'ae', 'arum', 'is', 'as', 'is'}
};
f = {
S = {'', 'ae', 'ae', 'am', 'ā'};
P = {'ae', 'arum', 'is', 'as', 'is'}
};
n = {
S = {'', 'ae', 'ae', 'am', 'ā'};
P = {'ae', 'arum', 'is', 'as', 'is'}
};
name = 'a-Deklination'
};
k = {
m = {
S = {'', 'is', 'i', 'em', 'e'};
P = {'es', 'um', 'ibus', 'es', 'ibus'}
};
f = {
S = {'', 'is', 'i', 'em', 'e'};
P = {'es', 'um', 'ibus', 'es', 'ibus'}
};
n = {
S = {'', 'is', 'i', 'em', 'e'};
P = {'a', 'um', 'ibus', 'a', 'ibus'}
};
name = '3. Deklination'
};
e = {
m = {
S = {'', 'ei', 'ei', 'em', 'e'};
P = {'es', 'erum', 'ebus', 'es', 'ebus'}
};
f = {
S = {'', 'ei', 'ei', 'em', 'e'};
P = {'es', 'erum', 'ebus', 'es', 'ebus'}
};
n = {
S = {'', 'ei', 'ei', 'em', 'e'};
P = {'es', 'erum', 'ebus', 'es', 'ebus'}
};
name = 'e-Deklination'
};
i = {
m = {
S = {'', 'is', 'i', 'em', 'i'};
P = {'es', 'ium', 'ibus', 'es', 'ibus'}
};
f = {
S = {'', 'is', 'i', 'em', 'i'};
P = {'es', 'ium', 'ibus', 'es', 'ibus'}
};
n = {
S = {'', 'is', 'i', 'em', 'i'};
P = {'ia', 'ium', 'ibus', 'ia', 'ibus'}
};
name = 'i-Deklination'
};
u = {
m = {
S = {'', 'ūs', 'ui', 'um', 'u'};
P = {'ūs', 'uum', 'ibus', 'ūs', 'ibus'}
};
f = {
S = {'', 'ūs', 'ui', 'um', 'u'};
P = {'ūs', 'uum', 'ibus', 'ūs', 'ibus'}
};
n = {
S = {'', 'ūs', 'ui', 'u', 'u'};
P = {'ūa', 'uum', 'ibus', 'ūa', 'ibus'}
};
name = 'u-Deklination'
}
}


function bildeFormen(basic, stamm, dekl, genus, numeri)
function bildeFormen(basic, stamm, dekl, genus, numeri)
Zeile 102: Zeile 6:
for nk,_ in numeri:gmatch('.') do
for nk,_ in numeri:gmatch('.') do
for kk,kv in pairs(utils.DEKLS[dekl][genus][nk]) do
for kk,kv in pairs(utils.DEKLS[dekl][genus][nk]) do
if not formen[kk] then
formen[nk .. kk] = stamm .. kv
formen[kk] = {}
end
formen[kk][nk] = stamm .. kv
end
end
end
end
formen[1][numeri:sub(1,1)] = basic
formen[numeri:sub(1,1) .. 1] = basic
if genus == 'n' then
if genus == 'n' then
formen[4][numeri:sub(1,1)] = basic
formen[numeri:sub(1,1) .. 4] = basic
end
end
if formen[6] and not basic:match("us$") then
if formen['S6'] and not basic:match("us$") then
formen[6] = nil
formen['S6'] = nil
end
end
return formen
if formen['S6'] and basic:match("ius$") then
end
formen['S6'] = stamm
 
function renderFormen(formen, dekl)
local table = ''
table = table .. '{| class="wikitable mw-collapsible"\n'
table = table .. '|+ [[' .. utils.DEKLS[dekl].name .. ']]\n! '
for nk,nv in pairs(formen[1]) do
table = table .. ' !! [[' .. utils.NUMERI[nk] .. ']]'
end
end
table = table .. '\n|-\n'
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
for kk,kv in pairs(formen) do
formen['P2'] = stamm .. 'ium'
table = table .. '! [[' .. utils.KASUS[kk] .. ']]\n'
for nk,nv in pairs(kv) do
table = table .. ' || ' .. utils.enclose(nv)  
end
table = table .. '\n|-\n'
end
end
table = table .. '|}'
return formen
return table
end
end


Zeile 150: Zeile 38:
     end
     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 .. utils.renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke:Substantiv|...}}</code> eingebunden werden! "})
     pagecontent = pagecontent .. utils.renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke:Substantiv|...}}</code> eingebunden werden! "})
     end
     end
     pagecontent = pagecontent .. "{{DISPLAYTITLE:" .. basic .. "}}\n"
     pagecontent = pagecontent .. utils.renderWortwolke(basic) .. "\n"
    pagecontent = pagecontent .. utils.renderTemplate("Thumbnailbox", {INHALT= utils.renderTemplate("Wortwolke", {basic})}) .. "\n"
     pagecontent = pagecontent .. utils.renderVokabelbox('Lernformen Substantiv', lernformen)
     pagecontent = pagecontent .. ";[[Lernformen]]: "
                              .. utils.enclose(basic) .. ", "
                              .. utils.enclose(formen[2][numeri:sub(1,1)]) .. ", "
                              .. genus
                              .. utils.renderTemplate("Link Campus-Lektion", {lekt})
    pagecontent = pagecontent .. '\n\n'
    pagecontent = pagecontent .. ";Bedeutungen\n\n"
    pagecontent = pagecontent .. ";Feste Wendungen\n\n"
    pagecontent = pagecontent .. ";Aufbau\n\n"
    pagecontent = pagecontent .. ";Verwandte Wörter\n\n"
    pagecontent = pagecontent .. ";In anderen Sprachen\n\n"
     if numeri == 'S' then
     if numeri == 'S' then
     pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n'
     pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n'
Zeile 173: Zeile 54:
     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})
     pagecontent = pagecontent .. '\n\n'
     pagecontent = pagecontent .. utils.renderFooter(basic, basic, {lekt})
     pagecontent = pagecontent .. '== Weblinks ==\n\n'
     return pagecontent
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {basic}) .. '\n'
end
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {basic}) .. '\n'
 
     pagecontent = pagecontent .. '[[Kategorie:Substantiv (Latein)/' .. basic:sub(1,1) .. ']]\n'
function p.renderFormen()
     pagecontent = pagecontent .. utils.addCampusCategoryIfSet(lekt)
local frame = mw.getCurrentFrame()
return pagecontent
    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 kann numeri=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
Erläuterung
{{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
Erlaubte Werte
  • SP: Verb bildet Singular- und Pluralformen (Standard)
  • S: Verb bildet nur Singularformen
  • P: Verb bildet nur Pluralformen
👉
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.

👉Testfälle


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