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