Modul:Adjektiv: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 75: Zeile 75:
                               .. utils.enclose(baseM) .. ", "
                               .. utils.enclose(baseM) .. ", "
                               .. (baseF ~= baseM and (utils.enclose(baseF) .. ", ") or "")
                               .. (baseF ~= baseM and (utils.enclose(baseF) .. ", ") or "")
                               .. (baseN ~= baseM and utils.enclose(baseN) or positiv['S'][2]['m'])
                               .. (baseN ~= baseM and utils.enclose(baseN) or utils.enclose(positiv['S'][2]['m']))
                               .. utils.renderTemplate("Link Campus-Lektion", {lekt})
                               .. utils.renderTemplate("Link Campus-Lektion", {lekt})
     pagecontent = pagecontent .. '\n'
     pagecontent = pagecontent .. '\n'

Version vom 17. Mai 2024, 06:00 Uhr

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

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

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

function render(formen, dekl, stufe)
	local table = ''
	table = table .. '{| class="wikitable mw-collapsible"\n'
	-- LOTS AND LOTS OF WORK TO DO
	table = table .. '|+ ' .. utils.STUFEN[stufe] .. '\n'
	for nk,nv in pairs(utils.NUMERI) do
		table = table .. '|-\n'
	    table = table .. '! colspan="4" | [[' .. nv .. ']]\n'
	    table = table .. '|-\n'
	    table = table .. '! !! [[maskulinum]] !! [[femininum]] !! [[neutrum]]\n'
	    for kk,kv in pairs(formen[nk]) do
	    	table = table .. '|-\n'
	    	table = table .. '! [[' .. utils.KASUS[kk] .. ']]\n'
	    	table = table .. ' || ' .. utils.enclose(kv['m'])
	                	  .. ' || ' .. utils.enclose(kv['f'])
	                 	  .. ' || ' .. utils.enclose(kv['n'])
                          .. '\n'
    	end
    end
	table = table .. '|}\n\n'
	return table
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 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.renderTemplate("Thumbnailbox", {INHALT= utils.renderTemplate("Wortwolke", {basicM})}) .. "\n"
    pagecontent = pagecontent .. ";[[Lernformen]]: "
                              .. utils.enclose(baseM) .. ", "
                              .. (baseF ~= baseM and (utils.enclose(baseF) .. ", ") or "")
                              .. (baseN ~= baseM and utils.enclose(baseN) or utils.enclose(positiv['S'][2]['m']))
                              .. utils.renderTemplate("Link Campus-Lektion", {lekt})
    pagecontent = pagecontent .. '\n'
    pagecontent = pagecontent .. ";[[Steigerung (Adjektiv)|]]: "
                              .. utils.enclose(baseM) .. ", "
                              .. utils.enclose(kompS) .. ", "
                              .. utils.enclose(superS .. "us") .. "\n"
    pagecontent = pagecontent .. ";[[Adverb]]ien: " 
                              .. utils.enclose(adverb(posiS, dekl)) .. ", "
                              .. utils.enclose(kompS:gsub("or$", "us")) .. ", "
                              .. utils.enclose(superS .. "e") .. "\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 kompS ~= (posiS .. "ior") or superS ~= (posiS .. "issim") then
    	pagecontent = pagecontent .. utils.renderTemplate("Unregelmäßiges Adjektiv", {}) .. "\n"
    end
    pagecontent = pagecontent .. "== Formen ==\n\n"
    pagecontent = pagecontent .. render(positiv, dekl, 'p')
    pagecontent = pagecontent .. render(komparativ, 'k', 'k')
    pagecontent = pagecontent .. render(superlativ, 'o', 's')
    pagecontent = pagecontent .. '\n\n'
    pagecontent = pagecontent .. '== Weblinks ==\n\n'
    pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Navigium', {baseM}) .. '\n'
    pagecontent = pagecontent .. '* ' .. utils.renderTemplate('Georges', {baseM}) .. '\n'
    pagecontent = pagecontent .. '[[Kategorie:Adjektiv (Latein)/' .. baseM:sub(1,1) .. ']]\n'
    pagecontent = pagecontent .. utils.addCampusCategoryIfSet(lekt)
	return pagecontent
end

return p