Modul:LateinUtils

Aus KGS-Wiki

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

local p = {}

p.KASUS  = {'Nominativ', 'Genitiv', 'Dativ', 'Akkusativ', 'Ablativ', 'Vokativ'}
p.NUMERI = {S = 'Singular', P = 'Plural'}
p.NABBRV = {S = 'Sg.', P = 'Pl.'}
p.STUFEN = {p = "[[Positiv (Steigerungsform|]]", k = "[[Komparativ]]", s = "[[Superlativ]]"}
p.GENERA = {m = 'maskulinum', f = 'femininum', n = 'neutrum'}
p.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 p.renderTemplate(name, params)
	local frame = mw.getCurrentFrame()
	local templateText
	if mw.isSubsting() then
		templateText = '{{' .. name
		for k,v in pairs(params) do
			templateText = templateText .. '|' .. k .. '=' .. v
		end
		templateText = templateText .. '}}'
	else
		templateText = frame:expandTemplate({title=name, args=params})
	end
	return templateText 
end

function p.enclose(text)
    return tostring(mw.html.create('span'):attr('lang', 'la'):wikitext(text))
end

function p.setIfPossible(maybeArray,index,value)
	if maybeArray then
		maybeArray[index] = value
	end
end

function p.addCampusCategoryIfSet(lesson)
	if lesson and tonumber(lesson) ~= 0 and lesson ~= ''  then
		return '[[Kategorie:Campus Lektion ' .. lesson .. ']]\n'
	end
	return ''
end

function p.parseArray(frame)
	res = {}
    for k, v in string.gmatch(frame.args[1], "([^,]+):([^,]+)") do
    	res[k] = v
    end
	return mw.af.export(res)
end

function p.renderLernformen(formen, erklaerung)
	local innerDiv = mw.html.create('div')
	                     :addClass('mw-collapsible-content')
	                     :wikitext(erklaerung)
    local outerDiv = mw.html.create('div')
                         :addClass('mw-collapsible')
                         :addClass('mw-collapsed')
                         :css('display','table;')
                         :attr('data-expandtext', 'Was heißt das?')
                         :attr('data-collapsetext', 'Erklärung verbergen')
                         :wikitext(formen .. ' ' .. tostring(innerDiv))
    return tostring(outerDiv)
end

function p.renderVokabelbox(templatename, lernformen)
	return p.renderTemplate('Vokabelbox', {
    	Lernformen = p.renderTemplate(templatename, lernformen);
    	Bedeutungen = '';
    	Aufbau = '';
    	Wendungen = '';
    	Verwandte = '';
    	AndereSprachen = ''
    }):gsub('|','\n|')
end

function p.renderWortwolke(grundform)
	return p.renderTemplate("Thumbnailbox", {INHALT = p.renderTemplate("Wortwolke", {grundform, ""})})
end

function p.renderFooter(navigium, georges, lektionen)
	local pagecontent = ""
    pagecontent = pagecontent .. "\n\n== Weblinks ==\n\n"
    pagecontent = pagecontent .. "* " .. p.renderTemplate('Navigium', {navigium}) .. "\n"
    pagecontent = pagecontent .. "* " .. p.renderTemplate("Georges", {georges}) .. "\n"
    pagecontent = pagecontent .. p.renderTemplate("Vokabel-Kategorien", lektionen)
    return pagecontent
end

return p