Modul:estnisch.substantivflexion

Dieses Lua-Modul dient dem Erstellen von Deklinationsboxen für Substantive der estnischen Sprache und wird über die Vorlage Vorlage:Estnisch Substantiv Übersicht eingebunden.


local flex = {}
 
function flex.deklination(frame)
	local text, stem
	local vocal = ""
	local p2 = ""
	local args
    if frame == mw.getCurrentFrame() then
        args = frame:getParent().args
    else
        args = frame.args
    end
	local class = args["Klasse"] or "1"
	local s = {}
	local p = {}
-- Endungen der Kasi
	local e = {"", "", "", "sse", "s", "st", "le", "l", "lt", "ks", "ni", "na", "ta", "ga"}

	s[15] = args["Additiv Singular"] or args[2]
	if s[15]=="" then s[15]=nil end
	s[1] = args["Nominativ Singular"] or mw.title.getCurrentTitle().text
	s[2] = args[1] or s[1]

	stemN1 = mw.ustring.sub(s[1],1,-2)
	stemG1 = mw.ustring.sub(s[2],1,-2)

	stem = s[2]
	if string.find("#1e#2e#3e#5e#10#12#13#14#15#17e#17i#17u#19#22#", "#" .. class .. "#") then	stem = mw.ustring.sub(stem,1,-2) end
	if string.find("#18e#18u#21#", "#" .. class .. "#") then	stem = mw.ustring.sub(s[1],1,-2) end
	if string.find("#22e#22i#22u#23e#23i#", "#" .. class .. "#") then	
		stem2 = mw.ustring.sub(stem,1,-2)
		stem = s[1]
	end

	-- Partitiv Singular		
	s[3] = args["Partitiv Singular"] or args[3] or s[15] or s[2] .. "t"
	if string.find("#1#1e#2#2e#3#3e#", "#" .. class .. "#") then s[3] = args["Partitiv Singular"] or args[3] or s[2] .. "t" end
	if string.find("#4#5#5e#6#7#7e#8#9#11#13#16#", "#" .. class .. "#") then s[3] = args["Partitiv Singular"] or args[3] or s[1] .. "t" end
	if string.find("#10#12#14#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or stemG1 .. "t" end
	if string.find("#15#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or stemG1 .. "tt" end
	if string.find("#17#17e#17i#17u#18#18e#18u#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or s[1] end
	if string.find("#21#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or stemN1 .. "e" end
	if string.find("#19#20#22#24#24e#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or s[2] end
	if string.find("#22e#23e#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or s[1] .. "i" end
	if string.find("#22u#23i#23u#22i#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or s[1] .. "a" end
	if string.find("#26#26i#", "#"..class.."#") then s[3] = args["Partitiv Singular"] or args[3] or s[1] .. "d" end

	stemP1 = mw.ustring.sub(s[3],1,-2)

	-- Illativ Singular
	s[4] = args["Illativ Singular"] or s[2] .. "sse"
	if s[15] then s[4] = args["Illativ Singular"] or s[15] .. ", " .. s[4] end

	-- Genitiv Plural
	p[2] = args["Genitiv Plural"] or s[2] .. "te"
	if string.find("#6#7#7e#9#11#13#", "#" .. class .. "#") then p[2] = args["Genitiv Plural"] or s[1] .. "te" end
	if string.find("#8#16#17#17e#17i#17u#18#18e#18u#26#26i#", "#"..class.."#") then p[2] = args["Genitiv Plural"] or s[1] .. "de" end
	if string.find("#10#12#15#", "#"..class.."#") then p[2] = args["Genitiv Plural"] or stemG1 .. "te" end
	if string.find("#19#20#24#24e#", "#"..class.."#") then p[2] = args["Genitiv Plural"] or s[2] .. "de" end
	if string.find("#21#22#22e#22i#22u#23e#23i#23u#24i#24u#25#", "#"..class.."#") then p[2] = args["Genitiv Plural"] or s[3] .. "de" end
	if string.find("#14#", "#"..class.."#") then p[2] = args["Genitiv Plural"] or s[3] .. "e" end
	if string.find("#23e#", "#"..class.."#") then p2 = args["Genitiv Plural"] or stemN1 .. "te" end
	if string.find("#23i#23u#", "#"..class.."#") then p2 = args["Genitiv Plural"] or s[1] .. "te" end
	if string.find("#25#", "#"..class.."#") then p2 = args["Genitiv Plural"] or s[1] .. "e" end
	
	-- Partitiv Plural
	p[3] = args["Partitiv Plural"] or s[2] .. "id"
	if string.find("#1e#2e#3e#5e#7e#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemG1 .. "eid" end
	if string.find("#11#14#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] .. "i" end
	if string.find("#12#13#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemG1 .. "i" end
	if string.find("#15#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] end
	if string.find("#16#17#17e#17i#17u#18#18e#18u#26#26i#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] .. "sid" end
	if string.find("#19#20#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[2] .. "sid" end
	if string.find("#21#22#22e#22i#22u#23e#23i#23u#24#24e#24i#24u#25#", "#"..class.."#") then p[3] = args["Genitiv Plural"] or s[3] .. "sid" end
	if string.find("#17e#18e#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemN1 .. "e, " .. p[3] end
	if string.find("#17i##", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemN1 .. "i, " .. p[3] end
	if string.find("#17u#18u#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemN1 .. "u, " .. p[3] end
	if string.find("#19#22e#23e#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] .. "e, " .. p[3] end
	if string.find("#22i#23i#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] .. "i, " .. p[3] end
	if string.find("#22u#23u#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or s[1] .. "u, " .. p[3] end
	if string.find("#24e#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemG1 .. "e, " .. p[3] end
	if string.find("#24i#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemP1 .. "i, " .. p[3] end
	if string.find("#24u#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemP1 .. "u, " .. p[3] end
	if string.find("#25#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemP1 .. "e, " .. p[3] end
	if string.find("#26i#", "#"..class.."#") then p[3] = args["Partitiv Plural"] or stemN1 .. "id, " .. p[3] end
		
	-- Illativ Plural
	p[4] = args["Illativ Plural"] or p[2] .. e[4]
	p[5] = args["Inessiv Plural"] or p[2] .. e[5]
	p[6] = args["Elativ Plural"] or p[2] .. e[6]
	p[7] = args["Allativ Plural"] or p[2] .. e[7]
	p[8] = args["Adessiv Plural"] or p[2] .. e[8]
	p[9] = args["Ablativ Plural"] or p[2] .. e[9]
	p[10] = args["Translativ Plural"] or p[2] .. e[10]
	p[11] = args["Terminativ Plural"] or p[2] .. e[11]
	p[12] = args["Essiv Plural"] or p[2] .. e[12]
	
	vocal = ""
	bracket1 = ""
	bracket2 = ""
	if string.find("#11#12#13#14#15#17e#17i#17u#18u#19#22e#22i#22u#23#24e#24i#24u#26#","#" .. class .. "#") then bracket1="(" bracket2=")" end
		
	if string.find("#1#2#3#4#5#6#7#8#9#10#11#12#13#14#17i#22i#24i#26i#","#" .. class .. "#") then vocal="i" 
	elseif string.find("#1e#2e#3e#5e#7e#10#", "#" .. class .. "#") then vocal = "ei" 
	elseif string.find("#17e#19#22e#24e#", "#" .. class .. "#") then vocal = "e" 
	elseif string.find("#17u#18u#22u#24u#", "#" .. class .. "#") then vocal = "u" 
	end
	if string.find("#1#2#3#4#5#6#7#8#9#10#","#" .. class .. "#") then
		for i=4, 12 do
			p[i] = p[i] .. ", " .. s[2] .. vocal .. e[i]
		end
	elseif string.find("#1e#2e#3e#5e#7e#12#13#18u#22e#22i#22u#24e#24i#24u#", "#" .. class .. "#") then
		for i=4, 12 do
			p[i] = p[i] .. ", " .. bracket1 .. stemG1 .. vocal .. e[i] .. bracket2
		end
	elseif string.find("#11#14#15#19#", "#" .. class .. "#") then
		for i=4, 12 do
			p[i] = p[i] .. ", " .. bracket1 .. s[1] .. vocal .. e[i] .. bracket2
		end
	elseif string.find("#17e#17i#17u#26i#", "#" .. class .. "#") then
		for i=4, 12 do
			p[i] = p[i] .. ", " .. bracket1 .. stemN1 .. vocal .. e[i] .. bracket2
		end
	elseif string.find("#23e#23i#23u#25#", "#" .. class .. "#") then
		for i=4, 12 do
			p[i] = p[i] .. ", " .. bracket1 .. p2 .. e[i] .. bracket2
		end
	
	end

	p[13] = args["Abessiv Plural"] or p[2] .. "ta"
	p[14] = args["Komitativ Plural"] or p[2] .. "ga"
	if p2~="" then p[2] = p2 .. ", " .. p[2] end

	local Sgdash = args["kSg"] and "—"
	local Pldash = args["kPl"] and "—"

	local root = mw.html.create('table')
	root
		:addClass ('wikitable inflection-table float-right hintergrundfarbe2')
		:tag('tr')
			:css('background-color', '#F4F4F4')
			:tag('th')
				:wikitext('[[Hilfe:Kasus|Kasus]]')
			:tag('th')
				:wikitext('[[Hilfe:Singular|Singular]]')
			:tag('th')
				:wikitext('[[Hilfe:Plural|Plural]]')
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Nominativ|Nominativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(s[1]))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Nominativ Plural"] or s[2] .. "d"))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Genitiv|Genitiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Genitiv Singular"] or s[2]))
			:tag('td')
				:wikitext(Pldash or flexlink(p[2]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Partitiv|Partitiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(s[3]))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Partitiv Plural"] or p[3]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Illativ|Illativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(s[4]))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Illativ Plural"] or p[4]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Inessiv|Inessiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Inessiv Singular"] or s[2] .. "s"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Inessiv Plural"] or p[5]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Elativ|Elativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Elativ Singular"] or s[2] .. "st"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Elativ Plural"] or p[6]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Allativ|Allativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Allativ Singular"] or s[2] .. "le"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Allativ Plural"] or p[7]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Adessiv|Adessiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Adessiv Singular"] or s[2] .. "l"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Adessiv Plural"] or p[8]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Ablativ|Ablativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Ablativ Singular"] or s[2] .. "lt"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Ablativ Plural"] or p[9]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Translativ|Translativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Translativ Singular"] or s[2] .. "ks"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Translativ Plural"] or p[10]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Terminativ|Terminativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Terminativ Singular"] or s[2] .. "ni"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Terminativ Plural"] or p[11]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Essiv|Essiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Essiv Singular"] or s[2] .. "na"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Essiv Plural"] or p[12]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Abessiv|Abessiv]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Abessiv Singular"] or s[2] .. "ta"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Abessiv Plural"] or p[13]))
		:tag('tr')
			:tag('td')
				:css('font-weight', 'bold')
				:css('background-color', '#F4F4F4')
				:wikitext('[[Hilfe:Komitativ|Komitativ]]')
			:tag('td')
				:wikitext(Sgdash or flexlink(args["Komitativ Singular"] or s[2] .. "ga"))
			:tag('td')
				:wikitext(Pldash or flexlink(args["Komitativ Plural"] or p[14]))
	return tostring(root)
end


function flexlink(str)
  str = "[[" .. str .. "]]"
  str = mw.ustring.gsub(str,", ","]]<br />[[")
  str = mw.ustring.gsub(str,"%[%[%(","([[")
  str = mw.ustring.gsub(str,"%)%]%]","]])")
  return str
end
 
return flex