Modul:Substantiv: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
(removed dead code)
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local p = {}
local p = {}
utils = require('Modul:LateinUtils')
utils = require('Modul:LateinUtils')
local ERKLAERUNG = "Bei Substantiven müssen wir drei Dinge lernen: den Nominativ Singular (1. Form), den Genitiv Singular (2. Form) und das [[Genus|Geschlecht]]. Erst aus der Kombination von Nominativ und Genitiv kann man den [[Stamm und Endung|Stamm]] und die [[Deklinationsklasse]] des Substantives erschließen. Das Geschlecht müssen wir mitlernen, weil es sich nicht immer aus dem Wort selbst ergibt."


function bildeFormen(basic, stamm, dekl, genus, numeri)
function bildeFormen(basic, stamm, dekl, genus, numeri)
Zeile 8: 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 56: Zeile 38:
     end
     end
local pagecontent = ''
local pagecontent = ''
local lernformen = utils.enclose(basic) .. ", "
local lernformen = {}
                    .. utils.enclose(formen[2][numeri:sub(1,1)]) .. ", "
lernformen[1] = basic
                    .. genus
    lernformen[2] = formen[numeri:sub(1,1) .. 2]
                    .. utils.renderTemplate("Link Campus-Lektion", {lekt})
    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 .. utils.renderTemplate("Thumbnailbox", {INHALT= utils.renderTemplate("Wortwolke", {basic})}) .. "\n"
     pagecontent = pagecontent .. utils.renderWortwolke(basic) .. "\n"
     pagecontent = pagecontent .. utils.renderTemplate('Vokabelbox', {
     pagecontent = pagecontent .. utils.renderVokabelbox('Lernformen Substantiv', lernformen)
    Lernformen = utils.renderTemplate("Lernformen Substantiv", {basic, formen[2][numeri:sub(1,1)], genus, lekt});
    Bedeutungen = '';
    Aufbau = '';
    Wendungen = '';
    Verwandte = '';
    AndereSprachen = ''
    })
     if numeri == 'S' then
     if numeri == 'S' then
     pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n'
     pagecontent = pagecontent .. utils.renderTemplate("Singularetantum", {}) .. '\n'
Zeile 78: 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