Module:rad-stem/templates: Difference between revisions
Jump to navigation
Jump to search
TheNightAvl (talk | contribs) mNo edit summary |
TheNightAvl (talk | contribs) No edit summary |
||
Line 89: | Line 89: | ||
end | end | ||
function rad_link_IPA(word) | function rad_link_IPA(word, post, noipa) | ||
if noipa == nil then noipa = false end | |||
local post_space = " " | |||
if post then | |||
if mw.ustring.sub(post, 1, 1) == "-" then | |||
post_space = "" | |||
end | |||
else | |||
post_space = "" | |||
end | |||
if type(word) == "string" then | if type(word) == "string" then | ||
return rad_link(word) .. "<br>" .. rad_IPA(word) | if noipa then | ||
if post then | |||
return rad_link(word) .. post_space .. rad_link(post) | |||
else | |||
return rad_link(word) | |||
end | |||
else | |||
if post then | |||
return rad_link(word) .. post_space .. rad_link(post) .. "<br>" .. rad_IPA(word .. post_space .. post) | |||
else | |||
return rad_link(word) .. "<br>" .. rad_IPA(word) | |||
end | |||
end | |||
elseif type(word) == "table" then | elseif type(word) == "table" then | ||
local links = {} | local links = {} | ||
Line 97: | Line 119: | ||
for _, i in ipairs(word) do | for _, i in ipairs(word) do | ||
local new_link = rad_link(i['word']) | local new_link = rad_link(i['word']) | ||
if post then new_link = new_link .. post_space .. rad_link(post) end | |||
if i['note'] then new_link = new_link .. " <small>(" .. i['note'] .. ")</small>" end | if i['note'] then new_link = new_link .. " <small>(" .. i['note'] .. ")</small>" end | ||
table.insert(links, new_link) | table.insert(links, new_link) | ||
table.insert(IPAs, rad_IPA(i['word'])) | if not noipa then | ||
if post then | |||
table.insert(IPAs, rad_IPA(i['word'] .. post_space .. post)) | |||
else | |||
table.insert(IPAs, rad_IPA(i['word'])) | |||
end | |||
end | |||
end | |||
if noipa then | |||
return table.concat(links, ", ") | |||
else | |||
return table.concat(links, ", ") .. "<br>" .. table.concat(IPAs, " ") | |||
end | end | ||
else error("Incompatible input type for rad_link_IPA") | else error("Incompatible input type for rad_link_IPA") | ||
end | end | ||
Line 454: | Line 487: | ||
local function get_forms(stem, ending, regex1, regex2) | local function get_forms(stem, ending, regex1, regex2) | ||
local temp = {} | local temp = {} | ||
local post = "" | |||
local noipa = false | |||
if type(regex2) == "boolean" then | |||
if regex1 == nil then | |||
post = nil | |||
else | |||
post = regex1 | |||
end | |||
noipa = regex2 | |||
regex1 = nil | |||
regex2 = nil | |||
else | |||
post = nil | |||
end | |||
ending = ending or "" | ending = ending or "" | ||
regex1 = regex1 or "" | regex1 = regex1 or "" | ||
Line 466: | Line 513: | ||
temp = mw.ustring.gsub(stem .. ending, regex1, regex2) | temp = mw.ustring.gsub(stem .. ending, regex1, regex2) | ||
end | end | ||
return rad_link_IPA(temp) | return rad_link_IPA(temp, post, noipa) | ||
end | end | ||
Line 763: | Line 810: | ||
th("Compound forms of ''" .. cite .. "'' (active voice) ", 1, 14) | th("Compound forms of ''" .. cite .. "'' (active voice) ", 1, 14) | ||
_tr() | _tr() | ||
th(" | th("", 4, 3) | ||
th("singular", 1, 5) | th("singular", 1, 5) | ||
th("plural", 1, 5) | th("plural", 1, 5) | ||
Line 794: | Line 841: | ||
th("''" .. rad_link("gjes") .. ", " .. rad_link("gjete") .. ", " .. rad_link("gje") .. ", " .. rad_link("gjen") .. "''") | th("''" .. rad_link("gjes") .. ", " .. rad_link("gjete") .. ", " .. rad_link("gje") .. ", " .. rad_link("gjen") .. "''") | ||
th("''" .. rad_link("sja") .. ", " .. rad_link("lai") .. "''") | th("''" .. rad_link("sja") .. ", " .. rad_link("lai") .. "''") | ||
_tr() | |||
th("continuous",7,1) | |||
th("infinitive",1,2) | |||
td(get_forms(pp.prespart,"vú","vat",true),1,12) | |||
_tr() | |||
th("indicative",2,1) | |||
th("non-past") | |||
td(get_forms(pp.prespart,"vú","vage",true)) | |||
td(get_forms(pp.prespart,"vú","vaga",true)) | |||
td(get_forms(pp.prespart,"vú","vaș",true),1,2) | |||
td(get_forms(pp.prespart,"vú",_,true)) | |||
td(get_forms(pp.prespart,"vú","vaguos",true)) | |||
td(get_forms(pp.prespart,"vú","vaguote",true)) | |||
td(get_forms(pp.prespart,"vú","vagú",true),1,2) | |||
td(get_forms(pp.prespart,"vú",_,true)) | |||
td(get_forms(pp.prespart,"vú","vagún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.prespart,"vú","hâlei",true)) | |||
td(get_forms(pp.prespart,"vú","hâlen",true)) | |||
td(get_forms(pp.prespart,"vú","hâleș",true),1,2) | |||
td(get_forms(pp.prespart,"vú","hâle",true)) | |||
td(get_forms(pp.prespart,"vú","hâluos",true)) | |||
td(get_forms(pp.prespart,"vú","hâluote",true)) | |||
td(get_forms(pp.prespart,"vú","hâlú",true),1,3) | |||
td(get_forms(pp.prespart,"vú","hâlún",true)) | |||
_tr() | |||
th("subjunctive",2,1) | |||
th("non-past") | |||
td(get_forms(pp.prespart,"vú","vagai",true)) | |||
td(get_forms(pp.prespart,"vú","vagá",true)) | |||
td(get_forms(pp.prespart,"vú","vagaș",true),1,2) | |||
td(get_forms(pp.prespart,"vú","vaga",true)) | |||
td(get_forms(pp.prespart,"vú","vagavuos",true)) | |||
td(get_forms(pp.prespart,"vú","vagavuote",true)) | |||
td(get_forms(pp.prespart,"vú","vagavú",true),1,3) | |||
td(get_forms(pp.prespart,"vú","vagavún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.prespart,"vú","hâlai",true)) | |||
td(get_forms(pp.prespart,"vú","hâlain",true)) | |||
td(get_forms(pp.prespart,"vú","hâlaiș",true),1,2) | |||
td(get_forms(pp.prespart,"vú","hâlai",true)) | |||
td(get_forms(pp.prespart,"vú","hâlavuos",true)) | |||
td(get_forms(pp.prespart,"vú","hâlavuote",true)) | |||
td(get_forms(pp.prespart,"vú","hâlavú",true),1,3) | |||
td(get_forms(pp.prespart,"vú","hâlavún",true)) | |||
_tr() | |||
th("optative",2,1) | |||
th("non-past") | |||
td(get_forms(pp.prespart,"vú","vagúe",true)) | |||
td(get_forms(pp.prespart,"vú","vagova",true)) | |||
td(get_forms(pp.prespart,"vú","vagúș",true),1,2) | |||
td(get_forms(pp.prespart,"vú","vagú",true)) | |||
td(get_forms(pp.prespart,"vú","vagovuos",true)) | |||
td(get_forms(pp.prespart,"vú","vagovuote",true)) | |||
td(get_forms(pp.prespart,"vú","vagovú",true),1,3) | |||
td(get_forms(pp.prespart,"vú","vagovún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.prespart,"vú","hâlevei",true)) | |||
td(get_forms(pp.prespart,"vú","hâleven",true)) | |||
td(get_forms(pp.prespart,"vú","hâleveș",true),1,2) | |||
td(get_forms(pp.prespart,"vú","hâleve",true)) | |||
td(get_forms(pp.prespart,"vú","hâlevuos",true)) | |||
td(get_forms(pp.prespart,"vú","hâlevuote",true)) | |||
td(get_forms(pp.prespart,"vú","hâlevú",true),1,3) | |||
td(get_forms(pp.prespart,"vú","hâlevún",true)) | |||
_tr() | |||
th("perfective",7,1) | |||
th("infinitive",1,2) | |||
td(get_forms(pp.pspart,"l","-at",true),1,12) | |||
_tr() | |||
th("indicative",2,1) | |||
th("non-past") | |||
td(get_forms(pp.pspart,"l","-age",true)) | |||
td(get_forms(pp.pspart,"l","-aga",true)) | |||
td(get_forms(pp.pspart,"l","-aș",true),1,2) | |||
td(get_forms(pp.pspart,"l", _,true)) | |||
td(get_forms(pp.pspart,"l","-aguos",true)) | |||
td(get_forms(pp.pspart,"l","-aguote",true)) | |||
td(get_forms(pp.pspart,"l","-agú",true),1,2) | |||
td(get_forms(pp.pspart,"l", _,true)) | |||
td(get_forms(pp.pspart,"l","-agún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.pspart,"l","-âlei",true)) | |||
td(get_forms(pp.pspart,"l","-âlen",true)) | |||
td(get_forms(pp.pspart,"l","-âleș",true),1,2) | |||
td(get_forms(pp.pspart,"l","-âle",true)) | |||
td(get_forms(pp.pspart,"l","-âluos",true)) | |||
td(get_forms(pp.pspart,"l","-âluote",true)) | |||
td(get_forms(pp.pspart,"l","-âlú",true),1,3) | |||
td(get_forms(pp.pspart,"l","-âlún",true)) | |||
_tr() | |||
th("subjunctive",2,1) | |||
th("non-past") | |||
td(get_forms(pp.pspart,"l","-agai",true)) | |||
td(get_forms(pp.pspart,"l","-agá",true)) | |||
td(get_forms(pp.pspart,"l","-agaș",true),1,2) | |||
td(get_forms(pp.pspart,"l","-aga",true)) | |||
td(get_forms(pp.pspart,"l","-agavuos",true)) | |||
td(get_forms(pp.pspart,"l","-agavuote",true)) | |||
td(get_forms(pp.pspart,"l","-agavú",true),1,3) | |||
td(get_forms(pp.pspart,"l","-agavún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.pspart,"l","-âlai",true)) | |||
td(get_forms(pp.pspart,"l","-âlain",true)) | |||
td(get_forms(pp.pspart,"l","-âlaiș",true),1,2) | |||
td(get_forms(pp.pspart,"l","-âlai",true)) | |||
td(get_forms(pp.pspart,"l","-âlavuos",true)) | |||
td(get_forms(pp.pspart,"l","-âlavuote",true)) | |||
td(get_forms(pp.pspart,"l","-âlavú",true),1,3) | |||
td(get_forms(pp.pspart,"l","-âlavún",true)) | |||
_tr() | |||
th("optative",2,1) | |||
th("non-past") | |||
td(get_forms(pp.pspart,"l","-agúe",true)) | |||
td(get_forms(pp.pspart,"l","-agova",true)) | |||
td(get_forms(pp.pspart,"l","-agúș",true),1,2) | |||
td(get_forms(pp.pspart,"l","-agú",true)) | |||
td(get_forms(pp.pspart,"l","-agovuos",true)) | |||
td(get_forms(pp.pspart,"l","-agovuote",true)) | |||
td(get_forms(pp.pspart,"l","-agovú",true),1,3) | |||
td(get_forms(pp.pspart,"l","-agovún",true)) | |||
_tr() | |||
th("past") | |||
td(get_forms(pp.pspart,"l","-âlevei",true)) | |||
td(get_forms(pp.pspart,"l","-âleven",true)) | |||
td(get_forms(pp.pspart,"l","-âleveș",true),1,2) | |||
td(get_forms(pp.pspart,"l","-âleve",true)) | |||
td(get_forms(pp.pspart,"l","-âlevuos",true)) | |||
td(get_forms(pp.pspart,"l","-âlevuote",true)) | |||
td(get_forms(pp.pspart,"l","-âlevú",true),1,3) | |||
td(get_forms(pp.pspart,"l","-âlevún",true)) | |||
tr_() | tr_() | ||
add("</table>") | add("</table>") | ||
Line 804: | Line 985: | ||
=p.conjugate(mw.getCurrentFrame():newChild{title="whatever",args={"deat","de",["pl"]="di","diș","deti","dev",["t"]="intr",["altnonfin"]="hellu",["altnonfin_note"]="uwu",["altnonfin2"]="hella",["altnonfin2_note"]="owo",["pre"]="fjø", "deruot", "detruvi"}}) | =p.conjugate(mw.getCurrentFrame():newChild{title="whatever",args={"deat","de",["pl"]="di","diș","deti","dev",["t"]="intr",["altnonfin"]="hellu",["altnonfin_note"]="uwu",["altnonfin2"]="hella",["altnonfin2_note"]="owo",["pre"]="fjø", "deruot", "detruvi"}}) | ||
|- | |- | ||
! rowspan="7" | perfective | ! rowspan="7" | perfective |
Revision as of 00:16, 22 February 2024
local export = {}
local getArgs = require('Module:Arguments').getArgs
local m_stem = require("Module:rad-stem")
local m_parameters = require("Module:parameters")
local m_links = require("Module:links")
local m_languages = require("Module:languages")
local m_ipa = require("Module:rad-IPA")
local C = "bcdðfghħjĵkķlmnņpqrsștvwxzþ°"
local format_table = {}
function add(code)
table.insert(format_table, code)
end
function tr()
table.insert(format_table, "<tr>")
end
function tr_()
table.insert(format_table, "</tr>")
end
function _tr()
table.insert(format_table, "</tr>")
table.insert(format_table, "<tr>")
end
function th(data, rowspan, colspan)
data = data or ""
local to_add = "<th"
if rowspan and rowspan~=1 then to_add = to_add .. " rowspan=" .. rowspan end
if colspan and colspan~=1 then to_add = to_add .. " colspan=" .. colspan end
to_add = to_add .. ">" .. data .. "</th>"
add(to_add)
end
function td(data, rowspan, colspan)
data = data or ""
local to_add = "<td"
if rowspan and rowspan~=1 then to_add = to_add .. " rowspan=" .. rowspan end
if colspan and colspan~=1 then to_add = to_add .. " colspan=" .. colspan end
to_add = to_add .. ">" .. data .. "</td>"
add(to_add)
end
function get_stems(args)
local shifted = {"noun", "_"}
local i = 1
while args[i] do
shifted[i+2] = args[i]
i = i + 1
end
return m_stem.getNounStem(shifted)
end
function break_adj(adj)
local temp = adj
temp = mw.ustring.gsub(temp, "([" .. C .. "])([" .. C .. "])íș$", "%1%2ieș")
temp = mw.ustring.gsub(temp, "([jșxķ])íș$", "%1ieș")
temp = mw.ustring.gsub(temp, "(°)", "")
temp = mw.ustring.gsub(temp, "(íș)$", "jeș")
temp = mw.ustring.gsub(temp, "(úș)$", "uoș")
temp = mw.ustring.gsub(temp, "(ýș)$", "yeș")
temp = mw.ustring.gsub(temp, "(oș)$", "uș")
return temp
end
function rad_link(word)
return m_links.full_link{
term = word,
language = m_languages.get_by_code("rad")
}
end
function rad_IPA(word)
local IPA = m_ipa.generate{
word,
"format",
"nolarge"
}
return "<span style=\"color:dimgrey\">" .. IPA .. "</span>"
end
function rad_link_IPA(word, post, noipa)
if noipa == nil then noipa = false end
local post_space = " "
if post then
if mw.ustring.sub(post, 1, 1) == "-" then
post_space = ""
end
else
post_space = ""
end
if type(word) == "string" then
if noipa then
if post then
return rad_link(word) .. post_space .. rad_link(post)
else
return rad_link(word)
end
else
if post then
return rad_link(word) .. post_space .. rad_link(post) .. "<br>" .. rad_IPA(word .. post_space .. post)
else
return rad_link(word) .. "<br>" .. rad_IPA(word)
end
end
elseif type(word) == "table" then
local links = {}
local IPAs = {}
for _, i in ipairs(word) do
local new_link = rad_link(i['word'])
if post then new_link = new_link .. post_space .. rad_link(post) end
if i['note'] then new_link = new_link .. " <small>(" .. i['note'] .. ")</small>" end
table.insert(links, new_link)
if not noipa then
if post then
table.insert(IPAs, rad_IPA(i['word'] .. post_space .. post))
else
table.insert(IPAs, rad_IPA(i['word']))
end
end
end
if noipa then
return table.concat(links, ", ")
else
return table.concat(links, ", ") .. "<br>" .. table.concat(IPAs, " ")
end
else error("Incompatible input type for rad_link_IPA")
end
end
function export.decline(frame)
local args = getArgs(frame)
local stem_gen = get_stems(args)
local stems = {
nom = args['nom'] or stem_gen.nom,
voc = args['voc'] or stem_gen.voc,
acc = args['acc'] or stem_gen.acc,
dat = args['dat'] or stem_gen.dat,
gen = args['gen'] or stem_gen.gen,
ins = args['ins'] or stem_gen.ins,
nompl = args['nompl'] or stem_gen.nompl,
genpl = args['genpl'] or stem_gen.genpl,
genpl_short = args['genpl_short'] or stem_gen.genpl_short,
['type'] = stem_gen['type'],
}
local adj = args['adj']
local adj_broken = ""
local adj_broken_e = ""
if adj then
if not mw.ustring.match(adj, "(ș)$") then error("All adjectives must end in -ș") end
adj_broken = args['adjbreak'] or break_adj(adj)
adj_broken_e = mw.ustring.gsub(adj_broken, "(uș)$", "ûș")
adj_broken_e = mw.ustring.gsub(adj_broken_e, "(aûș)$", "auș")
adj_broken_e = mw.ustring.gsub(adj_broken_e, "(aùș)$", "aûș")
adj_broken_e = adj_broken_e .. "e"
adj = mw.ustring.gsub(adj, "(°)", "")
adj = " " .. adj
adj_broken = " " .. adj_broken
adj_broken_e = " " .. adj_broken_e
else
adj_broken = nil
adj_broken_e = nil
end
local post = args['post']
format_table = {}
local decl_type = {
["C"] = "heavy",
["CH"] = "spirant",
["VH"] = "spirant",
["V"] = "light",
["G"] = "semi-light"
}
local type_name = decl_type[stems['type']]
local table_type = args['type'] or args['t'] or "sgpl"
-- generate forms --
local function get_forms(case, base, adj_base, adj_ending, nolink)
if adj_base then
--adjust definite article --
local oblique_pl = {['genpl'] = true, ['datpl'] = true, ['accpl'] = true, ['inspl'] = true, ['gendu'] = true, ['datdu'] = true, ['accdu'] = true, ['insdu'] = true,}
-- detect inanimate --
if mw.ustring.match(mw.ustring.lower(adj_base), "^( ?a [" .. C .. "])") or mw.ustring.match(adj_base, "^( ag )") then
if oblique_pl[case] then
adj_base = mw.ustring.gsub(adj_base, "^( ?)ag ([iíỉIÍỈ])", "%1a’ %2")
adj_base = mw.ustring.gsub(adj_base, "^( ?)ag? ", "%1ai ")
elseif case == "genpl_short" or case == "gendu_short" then
adj_base = mw.ustring.gsub(adj_base, "^( ?)ag? ", "%1ais ")
end
end
-- append --
base = base .. adj_base
if adj_ending then base = base .. adj_ending end
end
if post then base = base .. post end
if args['alt' .. case] then
local list = {
[1] = {['word'] = base},
[2] = {['word'] = args['alt' .. case], ['note'] = args['alt' .. case .. '_note']}
}
if adj_base then
list[2]['word'] = list[2]['word'] .. adj_base
if adj_ending then list[2]['word'] = list[2]['word'] .. adj_ending end
end
if post then list[2]['word'] = list[2]['word'] .. post end
local counter = 2
while args['alt' .. case .. counter] do
local temp = args['alt' .. case .. counter]
if adj_base then
temp = temp .. adj_base
if adj_ending then temp = temp .. adj_ending end
end
if post then temp = temp .. post end
list[counter + 1] = {['word'] = temp, ['note'] = args['alt' .. case .. counter .. "_note"]}
counter = counter + 1
end
if nolink then
return list[1].word
else
return rad_link_IPA(list)
end
else
if nolink then
return base
else
return rad_link_IPA(base)
end
end
end
local nom = ""
local nom_cite = ""
if table_type == "adj" then
nom = get_forms("nom", stems.nompl, adj_broken_e)
nom_cite = get_forms("nom", stems.nompl, adj_broken_e, "", true)
else
nom = get_forms("nom", stems.nom, adj_broken_e)
nom_cite = get_forms("nom", stems.nom, adj_broken_e, "", true)
end
local voc = get_forms("voc", stems.voc, adj_broken_e)
local gen = get_forms("gen", stems.gen, adj_broken, "k")
local dat = get_forms("dat", stems.dat, adj, "a")
local acc = get_forms("acc", stems.acc, adj_broken, "t")
local ins = get_forms("ins", stems.ins, adj, "úr")
local nompl = get_forms("nompl", stems.nompl, adj_broken_e)
local nompl_cite = get_forms("nompl", stems.nompl, adj_broken_e, "", true)
local genpl = get_forms("genpl", stems.genpl .. "ris", adj, "eris")
local genpl_short = get_forms("genpl_short", stems.genpl_short, adj, "es")
local datpl = get_forms("genpl", stems.genpl .. "rín", adj, "erín")
local accpl = get_forms("accpl", stems.genpl .. "rid", adj, "erid")
local inspl = get_forms("inspl", stems.genpl .. "ríe", adj, "eríe")
local nomdu = get_forms("nomdu", stems.dat .. "te", adj_broken_e)
local nomdu_cite = get_forms("nomdu", stems.dat .. "te", adj_broken_e, "", true)
local gendu = get_forms("gendu", stems.dat .. "tis", adj, "eris")
local gendu_short = get_forms("gendu_short", stems.dat .. "ts", adj, "es")
local datdu = get_forms("datdu", stems.dat .. "tín", adj, "erín")
local accdu = get_forms("accdu", stems.dat .. "tid", adj, "erid")
local insdu = get_forms("insdu", stems.dat .. "tíe", adj, "eríe")
add("<table class=\"mw-collapsible mw-collapsed wikitable inflection table\" style=\"text-align: center\">")
if table_type == "sgpl" or table_type == "adj" then
if table_type == "adj" then
th("Substantive declension of <i>" .. nom_cite .. "</i> ", 1, 4)
else
th("Declension of <i>" .. nom_cite .. "</i> (" .. type_name .. ") ", 1, 4)
end
tr()
th("", 1, 2)
th("singular")
th("plural")
_tr()
th("nominative", 1, 2)
if nom == nompl then
td(nompl, 2, 2)
elseif nom == voc then
td(nom, 2)
td(nompl, 2)
else
td(nom)
td(nompl, 2)
end
_tr()
th("vocative", 1, 2)
if nom ~= nompl and nom ~= voc then td(voc) end
_tr()
th("genitive", 2, 1)
th("long")
td(gen, 2, 1)
td(genpl)
_tr()
th("short")
td(genpl_short)
_tr()
th("dative", 1, 2)
td(dat)
td(datpl)
_tr()
th("accusative", 1, 2)
td(acc)
td(accpl)
_tr()
th("instrumental", 1, 2)
td(ins)
td(inspl)
tr_()
elseif table_type == "sg" then
th("Declension of <i>" .. nom_cite .. "</i> (" .. type_name .. ") ", 1, 2)
tr()
th("")
th("singular")
_tr()
th("nominative")
if nom == voc then td(nom, 2) else td(nom) end
_tr()
th("vocative")
if nom ~= voc then td(voc) end
_tr()
th("genitive")
td(gen)
_tr()
th("dative")
td(dat)
_tr()
th("accusative")
td(acc)
_tr()
th("instrumental")
td(ins)
tr_()
elseif table_type == "pl" then
th("Declension of <i>" .. nompl_cite .. "</i> (" .. type_name .. ") ", 1, 3)
tr()
th("", 1, 2)
th("plural")
_tr()
th("nominative", 1, 2)
td(nompl, 2)
_tr()
th("vocative", 1, 2)
_tr()
th("genitive", 2, 1)
th("long")
td(genpl)
_tr()
th("short")
td(genpl_short)
_tr()
th("dative", 1, 2)
td(datpl)
_tr()
th("accusative", 1, 2)
td(accpl)
_tr()
th("instrumental", 1, 2)
td(inspl)
tr_()
elseif table_type == "du" then
th("Declension of <i>" .. nom_cite .. "</i> (" .. type_name .. ") ", 1, 5)
tr()
th("", 2, 2)
th("singular", 2, 1)
th("plural", 1, 2)
_tr()
th("binary")
th("true")
_tr()
th("nominative", 1, 2)
if nom == voc then td(nom, 2) else td(nom) end
td(nomdu, 2)
td(nompl, 2)
_tr()
th("vocative", 1, 2)
if nom ~= voc then td(voc) end
_tr()
th("genitive", 2, 1)
th("long")
td(gen, 2, 1)
td(gendu)
td(genpl)
_tr()
th("short")
td(gendu_short)
td(genpl_short)
_tr()
th("dative", 1, 2)
td(dat)
td(datdu)
td(datpl)
_tr()
th("accusative", 1, 2)
td(acc)
td(accdu)
td(accpl)
_tr()
th("instrumental", 1, 2)
td(ins)
td(insdu)
td(inspl)
tr_()
elseif table_type == "dupl" then
th("Declension of <i>" .. nomdu_cite .. "</i> (" .. type_name .. ") ", 1, 3)
tr()
th("", 1, 2)
th("binary plural")
_tr()
th("nominative", 1, 2)
td(nomdu, 2)
_tr()
th("vocative", 1, 2)
_tr()
th("genitive", 2, 1)
th("long")
td(gendu)
_tr()
th("short")
td(gendu_short)
_tr()
th("dative", 1, 2)
td(datdu)
_tr()
th("accusative", 1, 2)
td(accdu)
_tr()
th("instrumental", 1, 2)
td(insdu)
tr_()
end
add("</table>")
if args['notags'] ~= "true" or args['notags'] == nil then
if table_type ~= "adj" then
add("[[Category:" .. m_languages.get_by_code("rad").name .. " " .. type_name .. " stems]]")
end
if table_type == "sg" then add("[[Category:" .. m_languages.get_by_code("rad").name .. " singularia tantum]]")
elseif table_type == "pl" then add("[[Category:" .. m_languages.get_by_code("rad").name .. " pluralia tantum]]")
elseif table_type == "du" then add("[[Category:" .. m_languages.get_by_code("rad").name .. " pluralia binaria]]")
elseif table_type == "dupl" then add("[[Category:" .. m_languages.get_by_code("rad").name .. " pluralia binaria]]" .. "[[Category:" .. m_languages.get_by_code("rad").name .. " pluralia binaria tantum]]")
end
end
return table.concat(format_table, string.char(10))
end
function export.conjugate(frame)
local args = getArgs(frame)
local pp = m_stem.getVerbStem(args)
mw.logObject(pp)
format_table = {}
local table_type = args["t"] or "tr"
if (table_type == "tr" or table_type == "pass") and args[6] == nil and args[7] == nil then error("Passive conjugation tables require arguments 6 (infinitive) and 7 (present participle stem).") end
-- generate alt forms
for p, base in pairs(pp) do
if args["alt" .. p] then
local list = {
[1] = {['word'] = base},
[2] = {['word'] = args['alt' .. p], ['note'] = args['alt' .. p .. '_note']}
}
local counter = 2
while args["alt" .. p .. counter] do
list[counter + 1] = {['word'] = args['alt' .. p .. counter], ['note'] = args['alt' .. p .. counter .. '_note']}
counter = counter + 1
end
pp[p] = list
end
end
local function get_forms(stem, ending, regex1, regex2)
local temp = {}
local post = ""
local noipa = false
if type(regex2) == "boolean" then
if regex1 == nil then
post = nil
else
post = regex1
end
noipa = regex2
regex1 = nil
regex2 = nil
else
post = nil
end
ending = ending or ""
regex1 = regex1 or ""
regex2 = regex2 or ""
regex3 = regex3 or ""
regex4 = regex4 or ""
if type(stem) == "table" then
for i, form in ipairs(stem) do
temp[i] = {['word'] = mw.ustring.gsub(form['word'] .. ending, regex1, regex2), ['note'] = form['note']}
end
elseif type(stem) == "string" then
temp = mw.ustring.gsub(stem .. ending, regex1, regex2)
end
return rad_link_IPA(temp, post, noipa)
end
add("<small>")
if table_type == "intr" or table_type == "tr" then
local cite = ""
if (type(pp.inf) == "table") then cite = pp['inf'][1]['word'] else cite = pp.inf end
add("<table class=\"mw-collapsible mw-collapsed wikitable inflection table\" width=100% style=\"text-align: center\">")
tr()
th("Conjugation of ''" .. cite .. "'' (active voice) ", 1, 14)
_tr()
th("nonfinite forms", 1, 14)
_tr()
th("infinitive", 1, 3)
td(get_forms(pp.inf), 1, 11)
_tr()
th("connegative", 1, 3)
if cite == "vat" or cite == "hjeat" then
th("", 1, 11)
else
td(get_forms(pp.inf,"a","uta$","ûta"), 1, 11)
end
_tr()
th("supine", 1, 3)
td(get_forms(pp.inf,"úr", "utúr$","ûtúr"), 1, 11)
_tr()
th("participle", 4, 1)
th("present", 2, 1)
th("adjectival")
td(get_forms(pp.prespart,"ș"), 1, 11)
_tr()
th("adverbial")
td(get_forms(pp.prespart,"vú"), 1, 11)
_tr()
th("past", 2, 1)
th("adjectival")
td(get_forms(pp.pspart,"ș"), 1, 11)
_tr()
th("adverbial")
td(get_forms(pp.pspart,"l"), 1, 11)
_tr()
th("verbal noun", 1, 3)
td(get_forms(pp.vnoun), 1, 11)
_tr()
th("finite forms", 4, 3)
th("singular", 1, 5)
th("plural", 1, 5)
th("humble")
_tr()
th("first", 2, 1)
th("second", 1, 2)
th("third", 2, 1)
th("depersonal", 2, 1)
th("first", 1, 2)
th("second", 2, 1)
th("third", 2, 1)
th("depersonal", 2, 1)
th("second", 2, 1)
_tr()
th("informal")
th("formal")
th("inclusive")
th("exclusive")
_tr()
th("''" .. rad_link("ú") .. "''")
th("''" .. rad_link("re") .. "''")
th("''" .. rad_link("lește") .. "''")
th("''" .. rad_link("vâs") .. ", " .. rad_link("vara") .. "''")
th("''" .. rad_link("gjei") .. ", " .. rad_link("gjen") .. ", " .. rad_link("gjeș") .. "''")
th("''" .. rad_link("dzun") .. ", " .. rad_link("sted") .. "''")
th("''" .. rad_link("dzate") .. "''")
th("''" .. rad_link("sjáște") .. "''")
th("''" .. rad_link("vír") .. ", " .. rad_link("vara") .. "''")
th("''" .. rad_link("gjes") .. ", " .. rad_link("gjete") .. ", " .. rad_link("gje") .. ", " .. rad_link("gjen") .. "''")
th("''" .. rad_link("sja") .. ", " .. rad_link("lai") .. "''")
_tr()
th("simple", 7, 1)
th("imperative", 1, 2)
th()
if pp.imp and pp.a ~= pp.imp then
td(get_forms(pp.imp))
elseif pp.vstem then
td(get_forms(pp.a, "", "va$", "ja"))
else
td(get_forms(pp.a), 2, 1)
end
td(get_forms(pp['2s'],"úș"))
th("", 1, 2)
td(get_forms(pp.pl or pp['2s'],"uoș"))
th()
td(get_forms(pp['2s'],"ovú", "([au])ovú$", "%1òvú"))
th("", 1, 2)
td(get_forms(pp.pl or pp['2s'],"úr"))
_tr()
th("indicative", 2, 1)
th("non-past")
td(get_forms(pp['1s']))
if (pp.imp and pp.a ~= pp.imp) or pp.vstem then td(get_forms(pp.a)) end
if pp['3s'] == (pp.depers or pp['2s']) then
td(get_forms(pp['3s']), 1, 3)
else
td(get_forms(pp['3s']), 1, 2)
td(get_forms(pp.depers or pp['2s']))
end
local temp_height = 1
if get_forms(pp.pl or pp['2s'],"ú") == get_forms(pp.pst,"ú","[uú]ú$","ủ") then temp_height = 2 end
td(get_forms(pp.pl or pp['2s'],"uos"), temp_height)
td(get_forms(pp.pl or pp['2s'],"uote"), temp_height)
td(get_forms(pp.pl or pp['2s'],"ú"), temp_height, 3)
td(get_forms(pp.pl or pp['2s'],"ún"), temp_height)
_tr()
th("past")
if pp.epst then
td(get_forms(pp.epst,"e"))
td(get_forms(pp.epst,"n"))
td(get_forms(pp.epst,"ș"),1,2)
td(get_forms(pp.epst))
else
td(get_forms(pp.pst,"ei"))
td(get_forms(pp.pst,"en"))
td(get_forms(pp.pst,"eș"),1,2)
td(get_forms(pp.pst,"e"))
end
if get_forms(pp.pl or pp['2s'],"ú") ~= get_forms(pp.pst,"ú","[uú]ú$","ủ") then
td(get_forms(pp.pst,"uos","[uú]uos$","ủos"))
td(get_forms(pp.pst,"uote","[uú]uote$","ủote"))
td(get_forms(pp.pst,"ú","[uú]ú$","ủ"),1,3)
td(get_forms(pp.pst,"ún","[uú]ún$","ủn"))
end
_tr()
th("subjunctive",2,1)
th("non-past")
local aidentical = false
if pp.vstem then
if get_forms(pp['2s'],"ai","avai$","áe") == get_forms(pp.pst,"ai") then
td(get_forms(pp['2s'],"ai","avai$","áe"),2)
aidentical = true
else
td(get_forms(pp['2s'],"ai","avai$","áe"))
end
td(get_forms(pp['2s'],"á","avá$","áva"))
else
if get_forms(pp['2s'],"ai") == get_forms(pp.pst,"ai") then
td(get_forms(pp['2s'],"ai"),2)
aidentical = true
else
td(get_forms(pp['2s'],"ai"))
end
td(get_forms(pp['2s'],"á"))
end
td(get_forms(pp.a,"ș"),1,2)
td(get_forms(pp.a))
temp_height = 1
if pp.a == pp.apst then temp_height = 2 end
td(get_forms(pp.a,"vuos"), temp_height)
td(get_forms(pp.a,"vuote"), temp_height)
td(get_forms(pp.a,"vú"), temp_height, 3)
td(get_forms(pp.a,"vún"), temp_height)
_tr()
th("past")
if not aidentical then td(get_forms(pp.pst,"ai")) end
td(get_forms(pp.pst,"ain"))
td(get_forms(pp.pst,"aiș"),1,2)
td(get_forms(pp.pst,"ai"))
if pp.a ~= pp.apst then
td(get_forms(pp.apst,"vuos"))
td(get_forms(pp.apst,"vuote"))
td(get_forms(pp.apst,"vú"),1,3)
td(get_forms(pp.apst,"vún"))
end
_tr()
th("optative",2,1)
th("non-past")
td(get_forms(pp['2s'],"úe"))
td(get_forms(pp['2s'],"ova", "([au])ova$", "%1òva"))
td(get_forms(pp['2s'],"úș"),1,2)
td(get_forms(pp['2s'],"ú"))
td(get_forms(pp['2s'],"ovuos", "([au])ovuos$", "%1òvuos"))
td(get_forms(pp['2s'],"ovuote", "([au])ovuote$", "%1òvuote"))
td(get_forms(pp['2s'],"ovú", "([au])ovú$", "%1òvú"),1,3)
td(get_forms(pp['2s'],"ovún", "([au])ovún$", "%1òvún"))
_tr()
th("past")
if pp.epst then
td(get_forms(pp.epst,"vei"))
td(get_forms(pp.epst,"ven"))
td(get_forms(pp.epst,"veș"),1,2)
td(get_forms(pp.epst,"ve"))
td(get_forms(pp.epst,"vuos"))
td(get_forms(pp.epst,"vuote"))
td(get_forms(pp.epst,"vú"),1,3)
td(get_forms(pp.epst,"vún"))
else
td(get_forms(pp.pst,"evei"))
td(get_forms(pp.pst,"even"))
td(get_forms(pp.pst,"eveș"),1,2)
td(get_forms(pp.pst,"eve"))
td(get_forms(pp.pst,"evuos"))
td(get_forms(pp.pst,"evuote"))
td(get_forms(pp.pst,"evú"),1,3)
td(get_forms(pp.pst,"evún"))
end
_tr()
th("habitual",6,1)
th("indicative",2,1)
th("non-past")
td(get_forms(pp.r,"iè"))
td(get_forms(pp.r,"in"))
td(get_forms(pp.r,"iș"),1,2)
td(get_forms(pp.r,"i"))
temp_height = 1
if get_forms(pp.pl or pp['2s'],"ú") == get_forms(pp.pst,"ú","[uú]ú$","ủ") then temp_height = 2 end
td(get_forms(pp.pl or pp['2s'],"úris"), temp_height)
td(get_forms(pp.pl or pp['2s'],"úrite"), temp_height)
td(get_forms(pp.pl or pp['2s'],"úri"), temp_height, 3)
td(get_forms(pp.pl or pp['2s'],"úrin"), temp_height)
_tr()
th("past")
if pp.epst then
td(get_forms(pp.epst,"riè"))
td(get_forms(pp.epst,"rin"))
td(get_forms(pp.epst,"riș"),1,2)
td(get_forms(pp.epst,"ri"))
else
td(get_forms(pp.pst,"eriè"))
td(get_forms(pp.pst,"erin"))
td(get_forms(pp.pst,"eriș"),1,2)
td(get_forms(pp.pst,"eri"))
end
if get_forms(pp.pl or pp['2s'],"ú") ~= get_forms(pp.pst,"ú","[uú]ú$","ủ") then
td(get_forms(pp.pst,"úris","[uú]úris$","ủris"))
td(get_forms(pp.pst,"úrite","[uú]úrite$","ủrite"))
td(get_forms(pp.pst,"úri","[uú]úri$","ủri"),1,3)
td(get_forms(pp.pst,"úrin","[uú]úrin$","ủrin"))
end
_tr()
th("subjunctive",2,1)
th("non-past")
td(get_forms(pp.a,"riè"))
td(get_forms(pp.a,"rin"))
td(get_forms(pp.a,"riș"),1,2)
td(get_forms(pp.a,"ri"))
temp_height = 1
if pp.a == pp.apst then temp_height = 2 end
td(get_forms(pp.a,"vúris"), temp_height)
td(get_forms(pp.a,"vúrite"), temp_height)
td(get_forms(pp.a,"vúri"), temp_height, 3)
td(get_forms(pp.a,"vúrin"), temp_height)
_tr()
th("past")
td(get_forms(pp.pst,"airiè"))
td(get_forms(pp.pst,"airin"))
td(get_forms(pp.pst,"airiș"),1,2)
td(get_forms(pp.pst,"airi"))
if pp.a ~= pp.apst then
td(get_forms(pp.apst,"vúris"))
td(get_forms(pp.apst,"vúrite"))
td(get_forms(pp.apst,"vúri"),1,3)
td(get_forms(pp.apst,"vúri"))
end
_tr()
th("optative",2,1)
th("non-past")
td(get_forms(pp['2s'],"úriè"))
td(get_forms(pp['2s'],"úrin"))
td(get_forms(pp['2s'],"úriș"),1,2)
td(get_forms(pp['2s'],"úri"))
td(get_forms(pp['2s'],"ovúris", "([au])ovúris$", "%1òvúris"))
td(get_forms(pp['2s'],"ovúrite", "([au])ovúrite$", "%1òvúrite"))
td(get_forms(pp['2s'],"ovúri", "([au])ovúri$", "%1òvúri"),1,3)
td(get_forms(pp['2s'],"ovúrin", "([au])ovúrin$", "%1òvúrin"))
_tr()
th("past")
if pp.epst then
td(get_forms(pp.epst,"veriè"))
td(get_forms(pp.epst,"verin"))
td(get_forms(pp.epst,"veriș"),1,2)
td(get_forms(pp.epst,"veri"))
td(get_forms(pp.epst,"vúris"))
td(get_forms(pp.epst,"vúrite"))
td(get_forms(pp.epst,"vúri"),1,3)
td(get_forms(pp.epst,"vúrin"))
else
td(get_forms(pp.pst,"everiè"))
td(get_forms(pp.pst,"everin"))
td(get_forms(pp.pst,"everiș"),1,2)
td(get_forms(pp.pst,"everi"))
td(get_forms(pp.pst,"evúris"))
td(get_forms(pp.pst,"evúrite"))
td(get_forms(pp.pst,"evúri"),1,3)
td(get_forms(pp.pst,"evúrin"))
end
tr_()
add("<table class=\"mw-collapsible mw-collapsed wikitable inflection table\" width=100% style=\"text-align: center\">")
tr()
th("Compound forms of ''" .. cite .. "'' (active voice) ", 1, 14)
_tr()
th("", 4, 3)
th("singular", 1, 5)
th("plural", 1, 5)
th("humble")
_tr()
th("first", 2, 1)
th("second", 1, 2)
th("third", 2, 1)
th("depersonal", 2, 1)
th("first", 1, 2)
th("second", 2, 1)
th("third", 2, 1)
th("depersonal", 2, 1)
th("second", 2, 1)
_tr()
th("informal")
th("formal")
th("inclusive")
th("exclusive")
_tr()
th("''" .. rad_link("ú") .. "''")
th("''" .. rad_link("re") .. "''")
th("''" .. rad_link("lește") .. "''")
th("''" .. rad_link("vâs") .. ", " .. rad_link("vara") .. "''")
th("''" .. rad_link("gjei") .. ", " .. rad_link("gjen") .. ", " .. rad_link("gjeș") .. "''")
th("''" .. rad_link("dzun") .. ", " .. rad_link("sted") .. "''")
th("''" .. rad_link("dzate") .. "''")
th("''" .. rad_link("sjáște") .. "''")
th("''" .. rad_link("vír") .. ", " .. rad_link("vara") .. "''")
th("''" .. rad_link("gjes") .. ", " .. rad_link("gjete") .. ", " .. rad_link("gje") .. ", " .. rad_link("gjen") .. "''")
th("''" .. rad_link("sja") .. ", " .. rad_link("lai") .. "''")
_tr()
th("continuous",7,1)
th("infinitive",1,2)
td(get_forms(pp.prespart,"vú","vat",true),1,12)
_tr()
th("indicative",2,1)
th("non-past")
td(get_forms(pp.prespart,"vú","vage",true))
td(get_forms(pp.prespart,"vú","vaga",true))
td(get_forms(pp.prespart,"vú","vaș",true),1,2)
td(get_forms(pp.prespart,"vú",_,true))
td(get_forms(pp.prespart,"vú","vaguos",true))
td(get_forms(pp.prespart,"vú","vaguote",true))
td(get_forms(pp.prespart,"vú","vagú",true),1,2)
td(get_forms(pp.prespart,"vú",_,true))
td(get_forms(pp.prespart,"vú","vagún",true))
_tr()
th("past")
td(get_forms(pp.prespart,"vú","hâlei",true))
td(get_forms(pp.prespart,"vú","hâlen",true))
td(get_forms(pp.prespart,"vú","hâleș",true),1,2)
td(get_forms(pp.prespart,"vú","hâle",true))
td(get_forms(pp.prespart,"vú","hâluos",true))
td(get_forms(pp.prespart,"vú","hâluote",true))
td(get_forms(pp.prespart,"vú","hâlú",true),1,3)
td(get_forms(pp.prespart,"vú","hâlún",true))
_tr()
th("subjunctive",2,1)
th("non-past")
td(get_forms(pp.prespart,"vú","vagai",true))
td(get_forms(pp.prespart,"vú","vagá",true))
td(get_forms(pp.prespart,"vú","vagaș",true),1,2)
td(get_forms(pp.prespart,"vú","vaga",true))
td(get_forms(pp.prespart,"vú","vagavuos",true))
td(get_forms(pp.prespart,"vú","vagavuote",true))
td(get_forms(pp.prespart,"vú","vagavú",true),1,3)
td(get_forms(pp.prespart,"vú","vagavún",true))
_tr()
th("past")
td(get_forms(pp.prespart,"vú","hâlai",true))
td(get_forms(pp.prespart,"vú","hâlain",true))
td(get_forms(pp.prespart,"vú","hâlaiș",true),1,2)
td(get_forms(pp.prespart,"vú","hâlai",true))
td(get_forms(pp.prespart,"vú","hâlavuos",true))
td(get_forms(pp.prespart,"vú","hâlavuote",true))
td(get_forms(pp.prespart,"vú","hâlavú",true),1,3)
td(get_forms(pp.prespart,"vú","hâlavún",true))
_tr()
th("optative",2,1)
th("non-past")
td(get_forms(pp.prespart,"vú","vagúe",true))
td(get_forms(pp.prespart,"vú","vagova",true))
td(get_forms(pp.prespart,"vú","vagúș",true),1,2)
td(get_forms(pp.prespart,"vú","vagú",true))
td(get_forms(pp.prespart,"vú","vagovuos",true))
td(get_forms(pp.prespart,"vú","vagovuote",true))
td(get_forms(pp.prespart,"vú","vagovú",true),1,3)
td(get_forms(pp.prespart,"vú","vagovún",true))
_tr()
th("past")
td(get_forms(pp.prespart,"vú","hâlevei",true))
td(get_forms(pp.prespart,"vú","hâleven",true))
td(get_forms(pp.prespart,"vú","hâleveș",true),1,2)
td(get_forms(pp.prespart,"vú","hâleve",true))
td(get_forms(pp.prespart,"vú","hâlevuos",true))
td(get_forms(pp.prespart,"vú","hâlevuote",true))
td(get_forms(pp.prespart,"vú","hâlevú",true),1,3)
td(get_forms(pp.prespart,"vú","hâlevún",true))
_tr()
th("perfective",7,1)
th("infinitive",1,2)
td(get_forms(pp.pspart,"l","-at",true),1,12)
_tr()
th("indicative",2,1)
th("non-past")
td(get_forms(pp.pspart,"l","-age",true))
td(get_forms(pp.pspart,"l","-aga",true))
td(get_forms(pp.pspart,"l","-aș",true),1,2)
td(get_forms(pp.pspart,"l", _,true))
td(get_forms(pp.pspart,"l","-aguos",true))
td(get_forms(pp.pspart,"l","-aguote",true))
td(get_forms(pp.pspart,"l","-agú",true),1,2)
td(get_forms(pp.pspart,"l", _,true))
td(get_forms(pp.pspart,"l","-agún",true))
_tr()
th("past")
td(get_forms(pp.pspart,"l","-âlei",true))
td(get_forms(pp.pspart,"l","-âlen",true))
td(get_forms(pp.pspart,"l","-âleș",true),1,2)
td(get_forms(pp.pspart,"l","-âle",true))
td(get_forms(pp.pspart,"l","-âluos",true))
td(get_forms(pp.pspart,"l","-âluote",true))
td(get_forms(pp.pspart,"l","-âlú",true),1,3)
td(get_forms(pp.pspart,"l","-âlún",true))
_tr()
th("subjunctive",2,1)
th("non-past")
td(get_forms(pp.pspart,"l","-agai",true))
td(get_forms(pp.pspart,"l","-agá",true))
td(get_forms(pp.pspart,"l","-agaș",true),1,2)
td(get_forms(pp.pspart,"l","-aga",true))
td(get_forms(pp.pspart,"l","-agavuos",true))
td(get_forms(pp.pspart,"l","-agavuote",true))
td(get_forms(pp.pspart,"l","-agavú",true),1,3)
td(get_forms(pp.pspart,"l","-agavún",true))
_tr()
th("past")
td(get_forms(pp.pspart,"l","-âlai",true))
td(get_forms(pp.pspart,"l","-âlain",true))
td(get_forms(pp.pspart,"l","-âlaiș",true),1,2)
td(get_forms(pp.pspart,"l","-âlai",true))
td(get_forms(pp.pspart,"l","-âlavuos",true))
td(get_forms(pp.pspart,"l","-âlavuote",true))
td(get_forms(pp.pspart,"l","-âlavú",true),1,3)
td(get_forms(pp.pspart,"l","-âlavún",true))
_tr()
th("optative",2,1)
th("non-past")
td(get_forms(pp.pspart,"l","-agúe",true))
td(get_forms(pp.pspart,"l","-agova",true))
td(get_forms(pp.pspart,"l","-agúș",true),1,2)
td(get_forms(pp.pspart,"l","-agú",true))
td(get_forms(pp.pspart,"l","-agovuos",true))
td(get_forms(pp.pspart,"l","-agovuote",true))
td(get_forms(pp.pspart,"l","-agovú",true),1,3)
td(get_forms(pp.pspart,"l","-agovún",true))
_tr()
th("past")
td(get_forms(pp.pspart,"l","-âlevei",true))
td(get_forms(pp.pspart,"l","-âleven",true))
td(get_forms(pp.pspart,"l","-âleveș",true),1,2)
td(get_forms(pp.pspart,"l","-âleve",true))
td(get_forms(pp.pspart,"l","-âlevuos",true))
td(get_forms(pp.pspart,"l","-âlevuote",true))
td(get_forms(pp.pspart,"l","-âlevú",true),1,3)
td(get_forms(pp.pspart,"l","-âlevún",true))
tr_()
add("</table>")
end
--[[
=p.conjugate(mw.getCurrentFrame():newChild{title="whatever",args={"deat","de",["pl"]="di","diș","deti","dev",["t"]="intr",["altnonfin"]="hellu",["altnonfin_note"]="uwu",["altnonfin2"]="hella",["altnonfin2_note"]="owo",["pre"]="fjø", "deruot", "detruvi"}})
|-
! rowspan="7" | perfective
! colspan="2" | infinitive
| colspan="12" | {{wl-rad|{{{pspart|{{{5}}}úl}}}}}{{wl-rad|-at}}
|-
! rowspan="2" | indicative
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-age}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-aga}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-aș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-aguos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-aguote}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlei}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlen}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âleș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âle}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âluos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âluote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlún}}
|-
! rowspan="2" | subjunctive
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agá}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agaș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-aga}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agavuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agavuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agavú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agavún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlain}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlaiș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlavuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlavuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlavú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlavún}}
|-
! rowspan="2" | optative
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agúe}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agova}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agúș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agovuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agovuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agovú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-agovún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlevei}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âleven}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âleveș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âleve}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlevuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlevuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlevú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-âlevún}}
|-
! colspan="14" | Negative compound forms of ''{{{1}}}'' (active voice)
|-
! rowspan="7" | continuous
! colspan="2" | infinitive
| colspan="12" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeat}}
|-
! rowspan="2" | indicative
! non-past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjei}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeà}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeaș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hje}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeuos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeuote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeún}}
|-
! past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húei}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húen}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|húeș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húe}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hủos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hủote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hủ}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hủn}}
|-
! rowspan="2" | subjunctive
! non-past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeài}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeá}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeàș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeà}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeàvuos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeàvuote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeàvú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeàvún}}
|-
! past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húai}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húain}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|húaiș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húai}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húavuos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húavuote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|húavú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húavún}}
|-
! rowspan="2" | optative
! non-past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeúe}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeova}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeúș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeovuos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeovuote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeovú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|hjeovún}}
|-
! past
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húevei}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húeven}}
| colspan="2" | {{wl-rad|{{{4}}}vú}} {{wl-rad|húeveș}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húeve}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húevuos}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húevuote}}
| colspan="3" | {{wl-rad|{{{4}}}vú}} {{wl-rad|húevú}}
| {{wl-rad|{{{4}}}vú}} {{wl-rad|húevún}}
|-
! rowspan="7" | perfective
! colspan="2" | infinitive
| colspan="12" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeat}}
|-
! rowspan="2" | indicative
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjei}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeà}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeaș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hje}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úei}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úen}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úeș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úe}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-ủos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-ủote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-ủ}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-ủn}}
|-
! rowspan="2" | subjunctive
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeá}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeàș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeà}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeàvuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeàvuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeàvú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeàvún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úain}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úaiș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úai}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úavuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úavuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úavú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úavún}}
|-
! rowspan="2" | optative
! perfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeúe}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeova}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeúș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeovuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeovuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeovú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}} {{wl-rad|hjeovún}}
|-
! pluperfect
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úevei}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úeven}}
| colspan="2" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úeveș}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úeve}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úevuos}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úevuote}}
| colspan="3" | {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úevú}}
| {{wl-rad|{{{pspart|{{{5}}}ú}}}l}}{{wl-rad|-úevún}}
]]--
add("</small>")
return table.concat(format_table, string.char(10))
end
return export
--[[
Debug console test string:
=p.show(mw.getCurrentFrame():newChild{title="whatever",args={"hv", "o~u^u", "þ"}})
=p.conjugate(mw.getCurrentFrame():newChild{title="whatever",args={"deat","de",["1s"]="dei",["3s"]="deaș",["pl"]="di","diș","deti","dev"}})
]]--