Module:cop-conj-table

From Wiktionary, the free dictionary
Jump to navigation Jump to search

--[=[
Translation of https://en.wiktionary.org/w/index.php?oldid=68887543
]=]

local export = {}

local lang = require("Module:languages").getByCode("cop")
local m_links = require("Module:links")
local m_string_utilities = require("Module:string utilities")
local m_param = require("Module:parameters")
local m_cop_translit = require("Module:Copt-translit")

local current_title = mw.title.getCurrentTitle()
local NAMESPACE = current_title.nsText
local PAGENAME = current_title.text

-- replaces {{lang|cop|[t]}}
local function wrapper(t)
	return '<span class="Copt" lang="cop">' .. t .. '</span>'
end

--replaces [[Module:table tools]].linkify_entry
local function linkify_entry(t)
	t = mw.text.split(t or '', ', ', true)
	for i, form in ipairs(t) do
		t[i] = m_links.language_link{lang = lang, term = form}
	end
	return table.concat(t, ', ')
end

--replaces [[Module:table tools]].translit_entry
local function translit_entry(t)
	return m_cop_translit.tr((t or ''):gsub('[%[%]]+',''))
end

-- replaces [[T:cop-table entry]]
local function table_entry(t)
	return '<span style="font-size:11px">'
		.. wrapper(linkify_entry(t))
		.. '</span><br><span style="color: #888">'
		.. translit_entry(t)
		.. '</span>'
end

function export.show(frame)
	local params = {
		["head"] = {},
		["dialect-wiki-page"] = {},
		["dialect"] = {},
		["inf"] = {},
		["imp"] = {},
		["inf-neg"] = {},
		["imp-neg"] = {},
		["circ-II-syncretism"] = {},
		["fut"] = {},
		["dur-neg"] = {},
		["circ"] = {},
		["pst-rel"] = {},
		["pst-rel2"] = {},
		["rel"] = {},
		["pst-pret"] = {},
		["pret"] = {},
		["prec-pst-II-syncretism"] = {},
		["pst-II"] = {},
		["aor-rel"] = {},
		["II"] = {},
		["clause-neg"] = {},
		["notes"] = {},
	}
	
	local prefixes = {
		[1] = "prs",
		[2] = "prs-circ",
		[3] = "prs-rel",
		[4] = "prs-pret",
		[5] = "prs-II",
		[6] = "fut",
		[7] = "fut-circ",
		[8] = "fut-rel",
		[9] = "fut-pret",
		[10] = "fut-II",
		[11] = "pst",
		[12] = "pst-neg",
		[13] = "pst-circ",
		[14] = "pst-circ-neg",
		[15] = "pst-rel",
		[16] = "pst-rel-neg",
		[17] = "pst-pret",
		[18] = "pst-pret-neg",
		[19] = "pst-II",
		[20] = "expv",
		[21] = "expv-circ",
		[22] = "expv-rel",
		[23] = "expv-pret",
		[24] = "aor",
		[25] = "aor-neg",
		[26] = "aor-circ",
		[27] = "aor-circ-neg",
		[28] = "aor-rel",
		[29] = "aor-rel-neg",
		[30] = "aor-pret",
		[31] = "aor-pret-neg",
		[32] = "aor-II",
		[33] = "opt",
		[34] = "opt-neg",
		[35] = "jus",
		[36] = "jus-neg",
		[37] = "cnjv",
		[38] = "cnjv-fut",
		[39] = "prec",
		[40] = "lim",
		[41] = "cond",
		[42] = "cond-short",
	}
	
	local persons = {
		[1] = "1-sg",
		[2] = "2-sg-m",
		[3] = "2-sg-f",
		[4] = "3-sg-m",
		[5] = "3-sg-f",
		[6] = "1-pl",
		[7] = "2-pl",
		[8] = "3-pl",
		[9] = "nom",
		[10] = "nom_",
	}
	
	local function name(i,j)
		return (prefixes[i] or i)..'-'..persons[j]
	end
	
	for i=1,42 do
		for j=1,9 do
			params[name(i,j)] = {}
		end
	end
	
	for j=1,8 do
		params[persons[j]] = {}
	end
	
	local args = m_param.process(frame:getParent().args, params)
	
	local function get(i,j)
		return args[name(i,j)]
	end
	
	args.term = '<i class="Copt" lang="cop">' .. args.head .. '</i>'
	args.dialect_wiki = '[[w:' .. args['dialect-wiki-page'] .. '|' .. args.dialect .. ' dialect]]'
	args.inf = table_entry(args.inf or args.head)
	args.imp = table_entry(args.imp or args.head)
	args['inf-neg'] = table_entry(args['inf-neg'] .. args.head)
	args['imp-neg'] = table_entry(args['imp-neg'] .. args.head)
	
-- i=1
	args['prs-nom_'] = args.head
-- i=6,10
	for i=6,10 do
		for j=1,8 do
			args[name(i,j)] = get(i,j) or ((get(i-5,j) or '') .. args.fut)
		end
	end
	args[name(6,10)] = args.fut .. args.head
	for i=7,10 do
		args[name(i,10)] = '[[' .. (get(i,9) or get(i-5,9) or '') .. ']] [[' .. args.fut .. args.head .. ']]'
	end
	for j=1,9 do
-- i=13,19
		for i=13,14 do
			args[name(i,j)] = get(i,j) or (args.circ .. get(i-2,j))
		end
		args[name('pst-rel',j)] = get(15,j) or
			{args['pst-rel'] .. get('pst',j),
			args['pst-rel2'] and (args['pst-rel2'] .. get('pst',j))}
		args[name('pst-rel-neg',j)] = get(16,j) or (args.rel .. get(12,j))
		for i=17,18 do
			args[name(i,j)] = get(i,j) or ((args['pst-pret'] or args.pret) .. get(i-6,j))
		end
		args[name('pst-II',j)] = get(19,j) or (args['pst-II'] .. get(11,j))
-- i=21,23
		args[name('expv-circ',j)] = get(21,j) or (args.circ .. get('expv',j))
		args[name('expv-rel',j)] = get(22,j) or (args.rel .. get('expv',j))
		args[name('expv-pret',j)] = get(23,j) or (args.pret .. get('expv',j))
-- i=26,32
		args[name('aor-circ',j)] = get(26,j) or (args.circ .. get('aor',j))
		args[name('aor-circ-neg',j)] = get(27,j) or (args.circ .. get('aor-neg',j))
		args[name('aor-rel',j)] = get(28,j) or
			{args.rel .. get('aor',j),
			args['aor-rel'] and (args['aor-rel'] .. get('aor',j))}
		args[name('aor-rel-neg',j)] = get(29,j) or (args.rel .. get('aor-neg',j))
		args[name('aor-pret',j)] = get(30,j) or (args.pret .. get('aor',j))
		args[name('aor-pret-neg',j)] = get(31,j) or (args.pret .. get('aor-neg',j))
		args[name('aor-II',j)] = get(32,j) or (args.II .. get('aor-neg',j))
	end
	
	for _, range in ipairs({{2,5},{11,42}}) do
		for i=range[1],range[2] do mw.log(i)
			local forms = get(i,9)
			if type(forms) == 'string' then
				args[name(i,10)] = '[[' .. forms .. ']] [[' .. args.head .. ']]'
			elseif forms then
				for k,form in ipairs(forms) do
					forms[k] = '[[' .. form .. ']] [[' .. args.head .. ']]'
				end
				args[name(i,10)] = table.concat(forms, ', ')
			end
		end
	end
	
	for i=1,42 do
		for j=1,8 do
			local form = get(i,j)
			if form then
				if type(form) == 'string' then
					args[name(i,j)] = table_entry(form .. args.head)
				else
					for k,subform in ipairs(form) do
						form[k] = subform .. args.head
					end
					args[name(i,j)] = table_entry(table.concat(form, ', '))
				end
			end
		end
		args[name(i,10)] = table_entry(get(i,10))
	end
	
	args.rowspan = args['circ-II-syncretism'] and '4' or '5'
	args['dur-neg'] = table_entry(args['dur-neg'])
	args['clause-neg'] = table_entry(args['clause-neg'])
	args['notes'] = args['notes'] or ''
	
	local table_text = [=[
<div class="NavFrame">
<div class="NavHead" align=center>&nbsp; &nbsp; Conjugation of {term} ({dialect_wiki})</div>
<div class="NavContent">
{| style="background:#F9F9F9;text-align:center;width:100%"
! rowspan="2" style="background:#e2e4c0" | infinitive
! style="background:#caccab" | affirmative
| {inf}
! rowspan="2" style="background:#e2e4c0" | imperative
! style="background:#caccab" | affirmative
| {imp}
|-
! style="background:#caccab" | negative
| {inf-neg}
! style="background:#caccab" | negative
| {imp-neg}
|}
{| style="background:#F9F9F9;text-align:center;width:100%"
! colspan="3" rowspan="3" style="background:#DEDEDE" |
! colspan="5" style="background:#DEDEDE" | singular
! colspan="3" style="background:#DEDEDE" | plural
! rowspan="3" style="background:#DEDEDE" | nominal
|-
! rowspan="2" style="background:#DEDEDE" | 1st person
! colspan="2" style="background:#DEDEDE" | 2nd person
! colspan="2" style="background:#DEDEDE" | 3rd person
! rowspan="2" style="background:#DEDEDE" | 1st person
! rowspan="2" style="background:#DEDEDE" | 2nd person
! rowspan="2" style="background:#DEDEDE" | 3rd person
|-
! style="background:#DEDEDE" | masculine
! style="background:#DEDEDE" | feminine
! style="background:#DEDEDE" | masculine
! style="background:#DEDEDE" | feminine
|-
! style="background:#c0cfe4" colspan="12" | <abbr title="bipartite pattern">durative sentence</abbr>
|-
! colspan="3" style="background:#c0cfe4;" |
! style="background:#c0cfe4" | {1-sg}
! style="background:#c0cfe4" | {2-sg-m}
! style="background:#c0cfe4" | {2-sg-f}
! style="background:#c0cfe4" | {3-sg-m}
! style="background:#c0cfe4" | {3-sg-f}
! style="background:#c0cfe4" | {1-pl}
! style="background:#c0cfe4" | {2-pl}
! style="background:#c0cfe4" | {3-pl}
! style="background:#c0cfe4" | -
|-
! rowspan="{rowspan}" style="background:#c0cfe4" | present
! colspan="2" style="background:#acbacd" | <abbr title="present I">basic</abbr>
| {prs-1-sg}
| {prs-2-sg-m}
| {prs-2-sg-f}
| {prs-3-sg-m}
| {prs-3-sg-f}
| {prs-1-pl}
| {prs-2-pl}
| {prs-3-pl}
| {prs-nom_}
|-
! colspan="2" style="background:#acbacd" | circumstantial]=]
.. (args['circ-II-syncretism'] and ', <abbr title="present II">focalising</abbr>' or '')
.. [=[

| {prs-circ-1-sg}
| {prs-circ-2-sg-m}
| {prs-circ-2-sg-f}
| {prs-circ-3-sg-m}
| {prs-circ-3-sg-f}
| {prs-circ-1-pl}
| {prs-circ-2-pl}
| {prs-circ-3-pl}
| {prs-circ-nom_}
|-
! colspan="2" style="background:#acbacd" | relative
| {prs-rel-1-sg}
| {prs-rel-2-sg-m}
| {prs-rel-2-sg-f}
| {prs-rel-3-sg-m}
| {prs-rel-3-sg-f}
| {prs-rel-1-pl}
| {prs-rel-2-pl}
| {prs-rel-3-pl}
| {prs-rel-nom_}
|-
! colspan="2" style="background:#acbacd" | <abbr title="imperfect">preterite</abbr>
| {prs-pret-1-sg}
| {prs-pret-2-sg-m}
| {prs-pret-2-sg-f}
| {prs-pret-3-sg-m}
| {prs-pret-3-sg-f}
| {prs-pret-1-pl}
| {prs-pret-2-pl}
| {prs-pret-3-pl}
| {prs-pret-nom_}
]=]
.. (args['circ-II-syncretism'] and '' or [=[

|-
! colspan="2" style="background:#acbacd" | <abbr title="present II">focalising</abbr>
| {prs-II-1-sg}
| {prs-II-2-sg-m}
| {prs-II-2-sg-f}
| {prs-II-3-sg-m}
| {prs-II-3-sg-f}
| {prs-II-1-pl}
| {prs-II-2-pl}
| {prs-II-3-pl}
| {prs-II-nom_}]=])
.. [=[

|-
! rowspan="{rowspan}" style="background:#c0cfe4" | future
! colspan="2" style="background:#acbacd" | <abbr title="future I">basic</abbr>
| {fut-1-sg}
| {fut-2-sg-m}
| {fut-2-sg-f}
| {fut-3-sg-m}
| {fut-3-sg-f}
| {fut-1-pl}
| {fut-2-pl}
| {fut-3-pl}
| {fut-nom_}
|-
! colspan="2" style="background:#acbacd" | circumstantial]=]
.. (args['circ-II-syncretism'] and ', <abbr title="future II">focalising</abbr>' or '')
.. [=[

| {fut-circ-1-sg}
| {fut-circ-2-sg-m}
| {fut-circ-2-sg-f}
| {fut-circ-3-sg-m}
| {fut-circ-3-sg-f}
| {fut-circ-1-pl}
| {fut-circ-2-pl}
| {fut-circ-3-pl}
| {fut-circ-nom_}
|-
! colspan="2" style="background:#acbacd" | relative
| {fut-rel-1-sg}
| {fut-rel-2-sg-m}
| {fut-rel-2-sg-f}
| {fut-rel-3-sg-m}
| {fut-rel-3-sg-f}
| {fut-rel-1-pl}
| {fut-rel-2-pl}
| {fut-rel-3-pl}
| {fut-rel-nom_}
|-
! colspan="2" style="background:#acbacd" | <abbr title="future imperfect">preterite</abbr>
| {fut-pret-1-sg}
| {fut-pret-2-sg-m}
| {fut-pret-2-sg-f}
| {fut-pret-3-sg-m}
| {fut-pret-3-sg-f}
| {fut-pret-1-pl}
| {fut-pret-2-pl}
| {fut-pret-3-pl}
| {fut-pret-nom_}]=]
.. (args['circ-II-syncretism'] and '' or
[=[

|-
! colspan="2" style="background:#acbacd" | <abbr title="future II">focalising</abbr>
| {fut-II-1-sg}
| {fut-II-2-sg-m}
| {fut-II-2-sg-f}
| {fut-II-3-sg-m}
| {fut-II-3-sg-f}
| {fut-II-1-pl}
| {fut-II-2-pl}
| {fut-II-3-pl}
| {fut-II-nom_} ]=])
.. [=[

|-
! style="background:#c0cfe4" colspan="3" | negated with
| colspan="9" | {dur-neg}
|-
! style="background:#c0e4c0" colspan="12" | <abbr title="tripartite pattern">non-durative sentence</abbr>
|-
! colspan="3" style="background:#c0e4c0;" |
! style="background:#c0e4c0" | {1-sg}
! style="background:#c0e4c0" | {2-sg-m}
! style="background:#c0e4c0" | {2-sg-f}
! style="background:#c0e4c0" | {3-sg-m}
! style="background:#c0e4c0" | {3-sg-f}
! style="background:#c0e4c0" | {1-pl}
! style="background:#c0e4c0" | {2-pl}
! style="background:#c0e4c0" | {3-pl}
! style="background:#c0e4c0" | -
|-
! rowspan="9" style="background:#c0e4c0" | <abbr title="perfect">past</abbr>
! rowspan="2" style="background:#accdac" | <abbr title="perfect I">basic</abbr>
! style="background:#accdac" | affirmative
| {pst-1-sg}
| {pst-2-sg-m}
| {pst-2-sg-f}
| {pst-3-sg-m}
| {pst-3-sg-f}
| {pst-1-pl}
| {pst-2-pl}
| {pst-3-pl}
| {pst-nom_}
|-
! style="background:#accdac" | negative
| {pst-neg-1-sg}
| {pst-neg-2-sg-m}
| {pst-neg-2-sg-f}
| {pst-neg-3-sg-m}
| {pst-neg-3-sg-f}
| {pst-neg-1-pl}
| {pst-neg-2-pl}
| {pst-neg-3-pl}
| {pst-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | circumstantial
! style="background:#accdac" | affirmative
| {pst-circ-1-sg}
| {pst-circ-2-sg-m}
| {pst-circ-2-sg-f}
| {pst-circ-3-sg-m}
| {pst-circ-3-sg-f}
| {pst-circ-1-pl}
| {pst-circ-2-pl}
| {pst-circ-3-pl}
| {pst-circ-nom_}
|-
! style="background:#accdac" | negative
| {pst-circ-neg-1-sg}
| {pst-circ-neg-2-sg-m}
| {pst-circ-neg-2-sg-f}
| {pst-circ-neg-3-sg-m}
| {pst-circ-neg-3-sg-f}
| {pst-circ-neg-1-pl}
| {pst-circ-neg-2-pl}
| {pst-circ-neg-3-pl}
| {pst-circ-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | relative
! style="background:#accdac" | affirmative
| {pst-rel-1-sg}
| {pst-rel-2-sg-m}
| {pst-rel-2-sg-f}
| {pst-rel-3-sg-m}
| {pst-rel-3-sg-f}
| {pst-rel-1-pl}
| {pst-rel-2-pl}
| {pst-rel-3-pl}
| {pst-rel-nom_}
|-
! style="background:#accdac" | negative
| {pst-rel-neg-1-sg}
| {pst-rel-neg-2-sg-m}
| {pst-rel-neg-2-sg-f}
| {pst-rel-neg-3-sg-m}
| {pst-rel-neg-3-sg-f}
| {pst-rel-neg-1-pl}
| {pst-rel-neg-2-pl}
| {pst-rel-neg-3-pl}
| {pst-rel-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | <abbr title="pluperfect">preterite</abbr>
! style="background:#accdac" | affirmative
| {pst-pret-1-sg}
| {pst-pret-2-sg-m}
| {pst-pret-2-sg-f}
| {pst-pret-3-sg-m}
| {pst-pret-3-sg-f}
| {pst-pret-1-pl}
| {pst-pret-2-pl}
| {pst-pret-3-pl}
| {pst-pret-nom_}
|-
! style="background:#accdac" | negative
| {pst-pret-neg-1-sg}
| {pst-pret-neg-2-sg-m}
| {pst-pret-neg-2-sg-f}
| {pst-pret-neg-3-sg-m}
| {pst-pret-neg-3-sg-f}
| {pst-pret-neg-1-pl}
| {pst-pret-neg-2-pl}
| {pst-pret-neg-3-pl}
| {pst-pret-neg-nom_}
|-
! style="background:#accdac" | <abbr title="perfect II">focalising</abbr>]=]
.. (args['prec-pst-II-syncretism'] and ', <abbr title="temporal; subjunctive">precursive</abbr>' or '')
.. [=[

! style="background:#accdac" | affirmative
| {pst-II-1-sg}
| {pst-II-2-sg-m}
| {pst-II-2-sg-f}
| {pst-II-3-sg-m}
| {pst-II-3-sg-f}
| {pst-II-1-pl}
| {pst-II-2-pl}
| {pst-II-3-pl}
| {pst-II-nom_}
|-
! rowspan="4" style="background:#c0e4c0" | <abbr title="not yet; completive">expectative</abbr>
! style="background:#accdac" | basic
! style="background:#accdac" | negative
| {expv-1-sg}
| {expv-2-sg-m}
| {expv-2-sg-f}
| {expv-3-sg-m}
| {expv-3-sg-f}
| {expv-1-pl}
| {expv-2-pl}
| {expv-3-pl}
| {expv-nom_}
|-
! style="background:#accdac" | circumstantial
! style="background:#accdac" | negative
| {expv-circ-1-sg}
| {expv-circ-2-sg-m}
| {expv-circ-2-sg-f}
| {expv-circ-3-sg-m}
| {expv-circ-3-sg-f}
| {expv-circ-1-pl}
| {expv-circ-2-pl}
| {expv-circ-3-pl}
| {expv-circ-nom_}
|-
! style="background:#accdac" | relative
! style="background:#accdac" | negative
| {expv-rel-1-sg}
| {expv-rel-2-sg-m}
| {expv-rel-2-sg-f}
| {expv-rel-3-sg-m}
| {expv-rel-3-sg-f}
| {expv-rel-1-pl}
| {expv-rel-2-pl}
| {expv-rel-3-pl}
| {expv-rel-nom_}
|-
! style="background:#accdac" | preterite
! style="background:#accdac" | negative
| {expv-pret-1-sg}
| {expv-pret-2-sg-m}
| {expv-pret-2-sg-f}
| {expv-pret-3-sg-m}
| {expv-pret-3-sg-f}
| {expv-pret-1-pl}
| {expv-pret-2-pl}
| {expv-pret-3-pl}
| {expv-pret-nom_}
|-
! rowspan="9" style="background:#c0e4c0" | <abbr title="habitual; consuetudinal">aorist</abbr>
! rowspan="2" style="background:#accdac" | <abbr title="aorist I">basic</abbr>
! style="background:#accdac" | affirmative
| {aor-1-sg}
| {aor-2-sg-m}
| {aor-2-sg-f}
| {aor-3-sg-m}
| {aor-3-sg-f}
| {aor-1-pl}
| {aor-2-pl}
| {aor-3-pl}
| {aor-nom_}
|-
! style="background:#accdac" | negative
| {aor-neg-1-sg}
| {aor-neg-2-sg-m}
| {aor-neg-2-sg-f}
| {aor-neg-3-sg-m}
| {aor-neg-3-sg-f}
| {aor-neg-1-pl}
| {aor-neg-2-pl}
| {aor-neg-3-pl}
| {aor-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | circumstantial
! style="background:#accdac" | affirmative
| {aor-circ-1-sg}
| {aor-circ-2-sg-m}
| {aor-circ-2-sg-f}
| {aor-circ-3-sg-m}
| {aor-circ-3-sg-f}
| {aor-circ-1-pl}
| {aor-circ-2-pl}
| {aor-circ-3-pl}
| {aor-circ-nom_}
|-
! style="background:#accdac" | negative
| {aor-circ-neg-1-sg}
| {aor-circ-neg-2-sg-m}
| {aor-circ-neg-2-sg-f}
| {aor-circ-neg-3-sg-m}
| {aor-circ-neg-3-sg-f}
| {aor-circ-neg-1-pl}
| {aor-circ-neg-2-pl}
| {aor-circ-neg-3-pl}
| {aor-circ-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | relative
! style="background:#accdac" | affirmative
| {aor-rel-1-sg}
| {aor-rel-2-sg-m}
| {aor-rel-2-sg-f}
| {aor-rel-3-sg-m}
| {aor-rel-3-sg-f}
| {aor-rel-1-pl}
| {aor-rel-2-pl}
| {aor-rel-3-pl}
| {aor-rel-nom_}
|-
! style="background:#accdac" | negative
| {aor-rel-neg-1-sg}
| {aor-rel-neg-2-sg-m}
| {aor-rel-neg-2-sg-f}
| {aor-rel-neg-3-sg-m}
| {aor-rel-neg-3-sg-f}
| {aor-rel-neg-1-pl}
| {aor-rel-neg-2-pl}
| {aor-rel-neg-3-pl}
| {aor-rel-neg-nom_}
|-
! rowspan="2" style="background:#accdac" | preterite
! style="background:#accdac" | affirmative
| {aor-pret-1-sg}
| {aor-pret-2-sg-m}
| {aor-pret-2-sg-f}
| {aor-pret-3-sg-m}
| {aor-pret-3-sg-f}
| {aor-pret-1-pl}
| {aor-pret-2-pl}
| {aor-pret-3-pl}
| {aor-pret-nom_}
|-
! style="background:#accdac" | negative
| {aor-pret-neg-1-sg}
| {aor-pret-neg-2-sg-m}
| {aor-pret-neg-2-sg-f}
| {aor-pret-neg-3-sg-m}
| {aor-pret-neg-3-sg-f}
| {aor-pret-neg-1-pl}
| {aor-pret-neg-2-pl}
| {aor-pret-neg-3-pl}
| {aor-pret-neg-nom_}
|-
! style="background:#accdac" | <abbr title="aorist II">focalising</abbr>
! style="background:#accdac" | affirmative
| {aor-II-1-sg}
| {aor-II-2-sg-m}
| {aor-II-2-sg-f}
| {aor-II-3-sg-m}
| {aor-II-3-sg-f}
| {aor-II-1-pl}
| {aor-II-2-pl}
| {aor-II-3-pl}
| {aor-II-nom_}
|-
! rowspan="2" style="background:#c0e4c0" | <abbr title="future III; futurum energicum">optative</abbr>
! rowspan="2" style="background:#accdac" | basic
! style="background:#accdac" | affirmative
| {opt-1-sg}
| {opt-2-sg-m}
| {opt-2-sg-f}
| {opt-3-sg-m}
| {opt-3-sg-f}
| {opt-1-pl}
| {opt-2-pl}
| {opt-3-pl}
| {opt-nom_}
|-
! style="background:#accdac" | <abbr title="negative future III">negative</abbr>
| {opt-neg-1-sg}
| {opt-neg-2-sg-m}
| {opt-neg-2-sg-f}
| {opt-neg-3-sg-m}
| {opt-neg-3-sg-f}
| {opt-neg-1-pl}
| {opt-neg-2-pl}
| {opt-neg-3-pl}
| {opt-neg-nom_}
|-
! rowspan="2" style="background:#c0e4c0" | <abbr title="causative imperative; injunctive">jussive</abbr>
! rowspan="2" style="background:#accdac" | basic
! style="background:#accdac" | affirmative
| {jus-1-sg}
| colspan="2" rowspan="2" | (''use imperative'')
| {jus-3-sg-m}
| {jus-3-sg-f}
| {jus-1-pl}
| rowspan="2" | (''use imperative'')
| {jus-3-pl}
| {jus-nom_}
|-
! style="background:#accdac" | negative
| {jus-neg-1-sg}
| {jus-neg-3-sg-m}
| {jus-neg-3-sg-f}
| {jus-neg-1-pl}
| {jus-neg-3-pl}
| {jus-neg-nom_}
|-
! style="background:#e4d4c0" colspan="12" | subordinate clause
|-
! colspan="3" style="background:#e4d4c0" |
! style="background:#e4d4c0" | {1-sg}
! style="background:#e4d4c0" | {2-sg-m}
! style="background:#e4d4c0" | {2-sg-f}
! style="background:#e4d4c0" | {3-sg-m}
! style="background:#e4d4c0" | {3-sg-f}
! style="background:#e4d4c0" | {1-pl}
! style="background:#e4d4c0" | {2-pl}
! style="background:#e4d4c0" | {3-pl}
! style="background:#e4d4c0;" | -
|-
! colspan="3" style="background:#e4d4c0" | conjunctive
| {cnjv-1-sg}
| {cnjv-2-sg-m}
| {cnjv-2-sg-f}
| {cnjv-3-sg-m}
| {cnjv-3-sg-f}
| {cnjv-1-pl}
| {cnjv-2-pl}
| {cnjv-3-pl}
| {cnjv-nom_}
|-
! colspan="3" style="background:#e4d4c0" | <abbr title="finalis; future IV">future conjunctive</abbr>
| {cnjv-fut-1-sg}
| {cnjv-fut-2-sg-m}
| {cnjv-fut-2-sg-f}
| {cnjv-fut-3-sg-m}
| {cnjv-fut-3-sg-f}
| {cnjv-fut-1-pl}
| {cnjv-fut-2-pl}
| {cnjv-fut-3-pl}
| {cnjv-fut-nom_}]=]
.. (args['prec-pst-II-syncretism'] and '' or [=[

|-
! colspan="3" style="background:#e4d4c0" | <abbr title="temporal; subjunctive">precursive</abbr>
| {prec-1-sg}
| {prec-2-sg-m}
| {prec-2-sg-f}
| {prec-3-sg-m}
| {prec-3-sg-f}
| {prec-1-pl}
| {prec-2-pl}
| {prec-3-pl}
| {prec-nom_}]=])
.. [=[

|-
! colspan="3" style="background:#e4d4c0" | <abbr title="until">limitative</abbr>
| {lim-1-sg}
| {lim-2-sg-m}
| {lim-2-sg-f}
| {lim-3-sg-m}
| {lim-3-sg-f}
| {lim-1-pl}
| {lim-2-pl}
| {lim-3-pl}
| {lim-nom_}
|-
! rowspan="2" style="background:#e4d4c0" | conditional
! colspan="2" style="background:#ccbdab" | <abbr title="expanded; first">long</abbr>
| {cond-1-sg}
| {cond-2-sg-m}
| {cond-2-sg-f}
| {cond-3-sg-m}
| {cond-3-sg-f}
| {cond-1-pl}
| {cond-2-pl}
| {cond-3-pl}
| {cond-nom_}
|-
! colspan="2" style="background:#ccbdab" | <abbr title="simple; second">short</abbr>
| {cond-short-1-sg}
| {cond-short-2-sg-m}
| {cond-short-2-sg-f}
| {cond-short-3-sg-m}
| {cond-short-3-sg-f}
| {cond-short-1-pl}
| {cond-short-2-pl}
| {cond-short-3-pl}
| {cond-short-nom_}
|-
! style="background:#e4d4c0" colspan="3" | negated with
| colspan="9" | {clause-neg}
|-
| colspan="12" style="font-size:80%; text-align: left;" | <div class="ul-column-count" data-column-count="2">
{notes}</div>
|}</div></div>]=]
	
	return m_string_utilities.format(table_text, args)
end

return export