Modul:Adjektiv: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
(removed dead code)
 
(38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
utils = require('Modul:LateinUtils')
utils = require('Modul:LateinUtils')


local KASUS  = {'Nominativ', 'Genitiv', 'Dativ', 'Akkusativ', 'Ablativ', 'Vokativ'}
local ERKLAERUNGEN = {
local NUMERI = {S = 'Singular', P = 'Plural'}
"'''Einendiges [[Adjektiv]]:''' der Nominativ Singular ist in allen drei Geschlechtern gleich (1. Form). Dafür müssen wir den Genitiv Singular mitlernen (2. Form). Daraus können wir den [[Stamm und Endung|Stamm]] ablesen, indem wir die Endung " .. utils.enclose('-is') .. ' abschneiden.';
local NABBRV = {S = 'Sg.', P = 'Pl.'}
"'''Zweiendiges [[Adjektiv]]:''' der Nominativ Singular ist im Maskulinum und Femininum gleich (1. Form). Lediglich im Neutrum weicht der Nominativ Singular ab (2. Form). Indem wir vom Nominativ Singular die Endung " .. utils.enclose('-is') .. ' bzw. ' .. utils.enclose('-e') .. ' abschneiden, können wir den [[Stamm und Endung|Stamm]] ablesen.';
local GENERA = {m = 'maskulinum', f = 'femininum', n = 'neutrum'}
"'''Dreiendiges [[Adjektiv]]:''' Alle drei Geschlechter haben unterschiedliche Endungen, die wir lernen müssen (1. Form: maskulinum, 2. Form: femininum, 3. Form: neutrum). Aus diesen Formen können wir den [[Stamm und Endung|Stamm]] ablesen, indem wir die unterschiedlichen Endungen abschneiden."
local DEKLS = {
o = {
m = {
S = {'', 'i', 'o', 'um', 'o', 'e'};
P = {'i', 'orum', 'is', 'os', 'is'}
};
f = {
S = {'', 'ae', 'ae', 'am', 'ā'};
P = {'ae', 'arum', 'is', 'as', 'is'}
};
n = {
S = {'', 'i', 'o', 'um', 'o'};
P = {'a', 'orum', 'is', 'a', 'is'}
};
name = 'o-/a-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 = '3. Deklination'
}
}
}


function bildePositiv(m,f,n,stamm,dekl)
function bilde(m,f,n,stamm,dekl)
formen = {S = {}, P = {}}
formen = {}
formen['S'][1] = {m = m, f = f, n = n}
for k = 1,5 do
for k=2,5 do
formen['S' .. k .. 'm'] = stamm .. utils.DEKLS[dekl]['m']['S'][k]
formen['S'][k] = {m = stamm .. DEKLS[dekl]['m']['S'][k], f = stamm .. DEKLS[dekl]['f']['S'][k], n = stamm .. DEKLS[dekl]['n']['S'][k]}
formen['S' .. k .. 'f'] = stamm .. utils.DEKLS[dekl == 'o' and 'a' or dekl]['f']['S'][k]
formen['P'][k] = {m = stamm .. DEKLS[dekl]['m']['P'][k], f = stamm .. DEKLS[dekl]['f']['P'][k], n = stamm .. DEKLS[dekl]['n']['P'][k]}
formen['S' .. k .. 'n'] = stamm .. utils.DEKLS[dekl]['n']['S'][k]
formen['P' .. k .. 'm'] = stamm .. utils.DEKLS[dekl]['m']['P'][k]
formen['P' .. k .. 'f'] = stamm .. utils.DEKLS[dekl == 'o' and 'a' or dekl]['f']['P'][k]
formen['P' .. k .. 'n'] = stamm .. utils.DEKLS[dekl]['n']['P'][k]
end
end
formen['S1m'] = m
formen['S1f'] = f
formen['S1n'] = n
formen['S4n'] = n
if dekl == 'o' then
if dekl == 'o' then
formen['S'][6] = {m = stamm .. 'e'}
formen['S6m'] = stamm .. 'e'
end
end
formen['S'][4]['n'] = n
return formen
return formen
end
end


function renderPositiv(formen,dekl)
function adverb(stamm, dekl)
local table = ''
if dekl == 'o' then
table = table .. '{| class="wikitable mw-collapsible"\n'
return stamm .. "e"
-- LOTS AND LOTS OF WORK TO DO
elseif stamm:match("nt$") then
table = table .. '|+ ' .. '[[Positiv (Steigerungsform)|]]' .. '\n'
return stamm .. "er"
for nk,nv in pairs(NUMERI) do
else
    table = table .. '! colspan="4" | ' .. nv .. '\n'
return stamm .. "iter"
    table = table .. '|-\n'
end
    table = table .. '! !! [[maskulinum]] !! [[femininum]] !! [[neutrum]]\n'
    for kk,kv in pairs(formen[nk]) do
    table = table .. '|-\n'
    table = table .. '! ' .. KASUS[kk] .. '\n'
    table = table .. ' || ' .. utils.enclose(kv['m'])
                  .. ' || ' .. utils.enclose(kv['f'])
                  .. ' || ' .. utils.enclose(kv['n'])
                          .. '\n'
    end
    end
table = table .. '|}'
return table
end
end


Zeile 80: Zeile 43:
     local baseF = frame.args[2] or frame:getParent().args[2] or 'acris'
     local baseF = frame.args[2] or frame:getParent().args[2] or 'acris'
     local baseN = frame.args[3] or frame:getParent().args[3] or 'acre'
     local baseN = frame.args[3] or frame:getParent().args[3] or 'acre'
     local stamm = frame.args[4] or frame:getParent().args[4] or 'acr'
     local posiS = frame.args[4] or frame:getParent().args[4] or 'acr'
     local dekl  = frame.args[5] or frame:getParent().args[5] or 'k'
     local dekl  = frame.args[5] or frame:getParent().args[5] or 'k'
     local lekt  = frame.args[6] or frame:getParent().args[6] or 32
     local lekt  = frame.args[6] or frame:getParent().args[6] or 32
     local formen = bildePositiv(baseM, baseF, baseN, stamm, dekl)
     local kompS = frame.args.komp or frame:getParent().args.komp or (posiS .. 'ior')
    local superS= frame.args.superl or frame:getParent().args.superl or (posiS .. 'issim')
    local positiv = bilde(baseM, baseF, baseN, posiS, dekl)
    local komparativ = bilde(kompS, kompS, kompS:gsub("or$","us"), kompS, 'k')
    local superlativ = bilde(superS .. 'us', superS .. 'a', superS .. 'um', superS, 'o')
    local lernformen = {}
    local erk = 2
    table.insert(lernformen, baseM)
    if baseF ~= baseM then
    table.insert(lernformen, baseF)
    erk = 3
    end
    if baseN ~= baseM then
    table.insert(lernformen, baseN)
    else
    table.insert(lernformen, positiv['S2m'])
    erk = 1
    end
    lernformen['lekt'] = lekt
    lernformen['endig'] = erk
local pagecontent = ''
local pagecontent = ''
if not mw.isSubsting() then
if not mw.isSubsting() then
Zeile 89: Zeile 71:
     end
     end
     pagecontent = pagecontent .. "{{DISPLAYTITLE:" .. baseM .. "}}\n"
     pagecontent = pagecontent .. "{{DISPLAYTITLE:" .. baseM .. "}}\n"
     pagecontent = pagecontent .. utils.renderTemplate("Thumbnailbox", {INHALT= utils.renderTemplate("Wortwolke", {basicM})}) .. "\n"
     pagecontent = pagecontent .. utils.renderWortwolke(baseM) .. "\n"
    pagecontent = pagecontent .. ";[[Lernformen]]: " .. utils.enclose(baseM) .. ", " .. utils.enclose(baseF) .. ", " .. utils.enclose(baseN) .. utils.renderTemplate("Link Campus-Lektion", {lekt})
    pagecontent = pagecontent .. utils.renderTemplate('Vokabelbox', {
    pagecontent = pagecontent .. '\n\n'
    Lernformen = utils.renderTemplate("Lernformen Adjektiv", lernformen);
    pagecontent = pagecontent .. ";Bedeutungen\n\n"
    Steigerungen = utils.enclose(baseM) .. ", "
     pagecontent = pagecontent .. ";Feste Wendungen\n\n"
                    .. utils.enclose(kompS) .. ", "
    pagecontent = pagecontent .. ";Aufbau\n\n"
                    .. utils.enclose(superS .. "us");
    pagecontent = pagecontent .. ";Verwandte Wörter\n\n"
    Adverbien = utils.enclose(adverb(posiS, dekl)) .. ", "
    pagecontent = pagecontent .. ";In anderen Sprachen\n\n"
                .. utils.enclose(kompS:gsub("or$", "us")) .. ", "
                .. utils.enclose(superS .. "e");
    Bedeutungen = '';
    Aufbau = '';
    Wendungen = '';
    Verwandte = '';
    AndereSprachen = ''
    })
     if kompS ~= (posiS .. "ior") or superS ~= (posiS .. "issim") then
    pagecontent = pagecontent .. utils.renderTemplate("Unregelmäßiges Adjektiv", {}) .. "\n"
    end
     pagecontent = pagecontent .. "== Formen ==\n\n"
     pagecontent = pagecontent .. "== Formen ==\n\n"
     pagecontent = pagecontent .. renderPositiv(formen, dekl)
     pagecontent = pagecontent .. utils.renderFT('Adjektiv', positiv, {Steigerung = 'p'})
    pagecontent = pagecontent .. '\n\n'
     pagecontent = pagecontent .. utils.renderFT('Adjektiv', komparativ, {Steigerung = 'k'})
    pagecontent = pagecontent .. '== Weblinks ==\n\n'
     pagecontent = pagecontent .. utils.renderFT('Adjektiv', superlativ, {Steigerung = 's'})
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {baseM}) .. '\n'
     pagecontent = pagecontent .. utils.renderFooter(baseM, baseM, {lekt})
     pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {baseM}) .. '\n'
    pagecontent = pagecontent .. '[[Kategorie:Substantiv (Latein)/' .. baseM:sub(1,1) .. ']]\n'
     pagecontent = pagecontent .. utils.addCampusCategoryIfSet(lekt)
return pagecontent
return pagecontent
end
end


return p
return p

Aktuelle Version vom 17. Oktober 2024, 14:52 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Adjektiv/Doku erstellt werden

local p = {}
utils = require('Modul:LateinUtils')

local ERKLAERUNGEN = {
	"'''Einendiges [[Adjektiv]]:''' der Nominativ Singular ist in allen drei Geschlechtern gleich (1. Form). Dafür müssen wir den Genitiv Singular mitlernen (2. Form). Daraus können wir den [[Stamm und Endung|Stamm]] ablesen, indem wir die Endung " .. utils.enclose('-is') .. ' abschneiden.';
	"'''Zweiendiges [[Adjektiv]]:''' der Nominativ Singular ist im Maskulinum und Femininum gleich (1. Form). Lediglich im Neutrum weicht der Nominativ Singular ab (2. Form). Indem wir vom Nominativ Singular die Endung " .. utils.enclose('-is') .. ' bzw. ' .. utils.enclose('-e') .. ' abschneiden, können wir den [[Stamm und Endung|Stamm]] ablesen.';
	"'''Dreiendiges [[Adjektiv]]:''' Alle drei Geschlechter haben unterschiedliche Endungen, die wir lernen müssen (1. Form: maskulinum, 2. Form: femininum, 3. Form: neutrum). Aus diesen Formen können wir den [[Stamm und Endung|Stamm]] ablesen, indem wir die unterschiedlichen Endungen abschneiden."
}

function bilde(m,f,n,stamm,dekl)
	formen = {}
	for k = 1,5 do
		formen['S' .. k .. 'm'] = stamm .. utils.DEKLS[dekl]['m']['S'][k]
		formen['S' .. k .. 'f'] = stamm .. utils.DEKLS[dekl == 'o' and 'a' or dekl]['f']['S'][k]
		formen['S' .. k .. 'n'] = stamm .. utils.DEKLS[dekl]['n']['S'][k]
		formen['P' .. k .. 'm'] = stamm .. utils.DEKLS[dekl]['m']['P'][k]
		formen['P' .. k .. 'f'] = stamm .. utils.DEKLS[dekl == 'o' and 'a' or dekl]['f']['P'][k]
		formen['P' .. k .. 'n'] = stamm .. utils.DEKLS[dekl]['n']['P'][k]
	end
	formen['S1m'] = m
	formen['S1f'] = f
	formen['S1n'] = n
	formen['S4n'] = n
	if dekl == 'o' then
		formen['S6m'] = stamm .. 'e'
	end
	return formen
end

function adverb(stamm, dekl)
	if dekl == 'o' then
		return stamm .. "e"
	elseif stamm:match("nt$") then
		return stamm .. "er"
	else
		return stamm .. "iter"
	end
end

function p.render() 
	local frame = mw.getCurrentFrame()
    local baseM = frame.args[1] or frame:getParent().args[1] or 'acer'
    local baseF = frame.args[2] or frame:getParent().args[2] or 'acris'
    local baseN = frame.args[3] or frame:getParent().args[3] or 'acre'
    local posiS = frame.args[4] or frame:getParent().args[4] or 'acr'
    local dekl  = frame.args[5] or frame:getParent().args[5] or 'k'
    local lekt  = frame.args[6] or frame:getParent().args[6] or 32
    local kompS = frame.args.komp or frame:getParent().args.komp or (posiS .. 'ior')
    local superS= frame.args.superl or frame:getParent().args.superl or (posiS .. 'issim')
    local positiv = bilde(baseM, baseF, baseN, posiS, dekl)
    local komparativ = bilde(kompS, kompS, kompS:gsub("or$","us"), kompS, 'k')
    local superlativ = bilde(superS .. 'us', superS .. 'a', superS .. 'um', superS, 'o')
    local lernformen = {}
    local erk = 2
    table.insert(lernformen, baseM)
    if baseF ~= baseM then
    table.insert(lernformen, baseF)
    	erk = 3
    end
    if baseN ~= baseM then
    	table.insert(lernformen, baseN)
    else
    	table.insert(lernformen, positiv['S2m'])
    	erk = 1
    end
    lernformen['lekt'] = lekt
    lernformen['endig'] = erk
	local pagecontent = ''
	if not mw.isSubsting() then
    	pagecontent = pagecontent .. utils.renderTemplate("Achtung", {"Dieses Modul sollte nur mit <code>{{subst:#invoke:Adjektiv|...}}</code> eingebunden werden! "})
    end
    pagecontent = pagecontent .. "{{DISPLAYTITLE:" .. baseM .. "}}\n"
    pagecontent = pagecontent .. utils.renderWortwolke(baseM) .. "\n"
    pagecontent = pagecontent .. utils.renderTemplate('Vokabelbox', {
    	Lernformen = utils.renderTemplate("Lernformen Adjektiv", lernformen);
    	Steigerungen = utils.enclose(baseM) .. ", "
                    .. utils.enclose(kompS) .. ", "
                    .. utils.enclose(superS .. "us");
    	Adverbien = utils.enclose(adverb(posiS, dekl)) .. ", "
                 .. utils.enclose(kompS:gsub("or$", "us")) .. ", "
                 .. utils.enclose(superS .. "e");
    	Bedeutungen = '';
    	Aufbau = '';
    	Wendungen = '';
    	Verwandte = '';
    	AndereSprachen = ''
    })
    if kompS ~= (posiS .. "ior") or superS ~= (posiS .. "issim") then
    	pagecontent = pagecontent .. utils.renderTemplate("Unregelmäßiges Adjektiv", {}) .. "\n"
    end
    pagecontent = pagecontent .. "== Formen ==\n\n"
    pagecontent = pagecontent .. utils.renderFT('Adjektiv', positiv, {Steigerung = 'p'})
    pagecontent = pagecontent .. utils.renderFT('Adjektiv', komparativ, {Steigerung = 'k'})
    pagecontent = pagecontent .. utils.renderFT('Adjektiv', superlativ, {Steigerung = 's'})
    pagecontent = pagecontent .. utils.renderFooter(baseM, baseM, {lekt})
	return pagecontent
end

return p