Modul:Substantiv: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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 83: Zeile 81:
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {basic}) .. '\n'
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {basic}) .. '\n'
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {basic}) .. '\n'
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {basic}) .. '\n'
     pagecontent = pagecontent .. '[[Kategorie:Substantiv (Latein)/' .. basic:sub(1,1) .. ']]\n'
     pagecontent = pagecontent .. renderTemplate("Vokabel-Kategorien", {lekt})
    pagecontent = pagecontent .. utils.addCampusCategoryIfSet(lekt)
return pagecontent
return pagecontent
end
end


return p
return p

Version vom 18. Mai 2024, 09:44 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
			if not formen[kk] then
				formen[kk] = {}
			end
			formen[kk][nk] = stamm .. kv
		end
	end
	formen[1][numeri:sub(1,1)] = basic
	if genus == 'n' then
		formen[4][numeri:sub(1,1)] = basic
	end
	if formen[6] and not basic:match("us$") then
		formen[6] = nil
	end
return formen
end

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
	table = table .. '\n|-\n'
	for kk,kv in pairs(formen) do
		table = table .. '! [[' .. utils.KASUS[kk] .. ']]\n'
		for nk,nv in pairs(kv) do
			table = table .. ' || ' .. utils.enclose(nv) 
		end
		table = table .. '\n|-\n'
	end
	table = table .. '|}'
	return table
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 = utils.enclose(basic) .. ", "
                    .. utils.enclose(formen[2][numeri:sub(1,1)]) .. ", "
                    .. genus
                    .. utils.renderTemplate("Link Campus-Lektion", {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.renderTemplate("Thumbnailbox", {INHALT= utils.renderTemplate("Wortwolke", {basic})}) .. "\n"
    pagecontent = pagecontent .. utils.renderTemplate('Vokabelbox', {
    	Lernformen = utils.renderTemplate("Lernformen Substantiv", {basic, formen[2][numeri:sub(1,1)], genus, lekt});
    	Bedeutungen = '';
    	Aufbau = '';
    	Wendungen = '';
    	Verwandte = '';
    	AndereSprachen = ''
    })
    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 .. renderFormen(formen, dekl)
    pagecontent = pagecontent .. '\n\n'
    pagecontent = pagecontent .. '== Weblinks ==\n\n'
    pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {basic}) .. '\n'
    pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {basic}) .. '\n'
    pagecontent = pagecontent .. renderTemplate("Vokabel-Kategorien", {lekt})
	return pagecontent
end

return p