Module:la-adj/table

Hello, you have come here looking for the meaning of the word Module:la-adj/table. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:la-adj/table, but we will also tell you about its etymology, its characteristics and you will know how to say Module:la-adj/table in singular and plural. Everything you need to know about the word Module:la-adj/table you have here. The definition of the word Module:la-adj/table will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:la-adj/table, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

local m_table = require("Module:table")

local function convert(data, conv)
	local col = {}
	local row = {}
	local marked = {}
	local slots = {}
	local function add(i,j)
		local col = col
		local row = row
		if col==0 or row==0 then
			return ""
		end
		local entry = data.finish_show_form(data, slots)
		if col==1 then
			if row==1 then
				return '\n| ' .. entry
			else
				return '\n| rowspan=' .. row .. ' | ' .. entry
			end
		else
			if row==1 then
				return '\n| colspan=' .. col .. ' | ' .. entry
			else
				return '\n| colspan=' .. col .. ' rowspan=' .. row .. ' | ' .. entry
			end
		end
	end
	
	for i=1,#conv do
		col = {}
		row = {}
		marked = {}
		slots = {}
		for j=1,#conv do
			col = 1
			row = 1
			marked = false
			slots = {conv}
		end
	end

	-- Return true if the contents of the two slots are equal in every
	-- way. This means the forms are the same, the footnote text is the
	-- same, and the accelerator lemmas are the same. We need to compare
	-- the accelerator lemmas because in some cases different slots have
	-- different lemmas (e.g. when noneut=1 is set, the masculine slots
	-- will have the masculine lemma but the feminine slots will have the
	-- feminine lemma).
	local function slots_equal(slot1, slot2)
		return m_table.deepEquals(data.forms, data.forms) and
			m_table.deepEquals(data.notetext, data.notetext) and
			(data.accel and data.accel.lemma or nil) ==
			(data.accel and data.accel.lemma or nil)
	end

	--merge identical cells within a row
	for i=1,#conv do for j=1,#conv do
		if col ~= 0 then
			for k=j+1,#conv do
				local slotij = conv
				local slotik = conv
				if not slots_equal(slotij, slotik) then
					break
				end
				col = col + 1
				col = 0
				row = 0
				for _, slot in ipairs(slots) do
					table.insert(slots, slot)
				end
				slots = nil
			end
		end
	end end
	
	--final
	for i=1,#conv do
		for j=1,#conv do
			conv = add(i,j)
		end
		conv = table.concat(conv)
	end
	return conv
end

local function make_table_mfn_pl(data, noneut)
	local conv = {
		{"nom_pl_m"},
		{"gen_pl_m"},
		{"dat_pl_m"},
		{"acc_pl_m"},
		{"abl_pl_m"},
		{"voc_pl_m"},
		{"loc_pl_m"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. (noneut and 'masc./fem.' or 'masc./fem./neut.')
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_mfn_sg(data, noneut)
	local conv = {
		{"nom_sg_m"},
		{"gen_sg_m"},
		{"dat_sg_m"},
		{"acc_sg_m"},
		{"abl_sg_m"},
		{"voc_sg_m"},
		{"loc_sg_m"},
	}
	conv = convert(data, conv)
	
	local output = data.title .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | singular'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. (noneut and 'masc./fem.' or 'masc./fem./neut.')
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_n_pl(data)
	local conv = {
		{"nom_pl_n"},
		{"gen_pl_n"},
		{"dat_pl_n"},
		{"acc_pl_n"},
		{"abl_pl_n"},
		{"voc_pl_n"},
		{"loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. 'neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_n_sg(data)
	local conv = {
		{"nom_sg_n"},
		{"gen_sg_n"},
		{"dat_sg_n"},
		{"acc_sg_n"},
		{"abl_sg_n"},
		{"voc_sg_n"},
		{"loc_sg_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | singular'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. 'neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_mf_and_n_pl(data)
	local conv = {
		{"nom_pl_m", "nom_pl_n"},
		{"gen_pl_m", "gen_pl_n"},
		{"dat_pl_m", "dat_pl_n"},
		{"acc_pl_m", "acc_pl_n"},
		{"abl_pl_m", "abl_pl_n"},
		{"voc_pl_m", "voc_pl_n"},
		{"loc_pl_m", "loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masc./fem.'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_mf_and_n_sg(data)
	local conv = {
		{"nom_sg_m", "nom_sg_n"},
		{"gen_sg_m", "gen_sg_n"},
		{"dat_sg_m", "dat_sg_n"},
		{"acc_sg_m", "acc_sg_n"},
		{"abl_sg_m", "abl_sg_n"},
		{"voc_sg_m", "voc_sg_n"},
		{"loc_sg_m", "loc_sg_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | singular'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masc./fem.'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f_pl(data)
	local conv = {
		{"nom_pl_m", "nom_pl_f"},
		{"gen_pl_m", "gen_pl_f"},
		{"dat_pl_m", "dat_pl_f"},
		{"acc_pl_m", "acc_pl_f"},
		{"abl_pl_m", "abl_pl_f"},
		{"voc_pl_m", "voc_pl_f"},
		{"loc_pl_m", "loc_pl_f"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f_sg(data)
	local conv = {
		{"nom_sg_m", "nom_sg_f"},
		{"gen_sg_m", "gen_sg_f"},
		{"dat_sg_m", "dat_sg_f"},
		{"acc_sg_m", "acc_sg_f"},
		{"abl_sg_m", "abl_sg_f"},
		{"voc_sg_m", "voc_sg_f"},
		{"loc_sg_m", "loc_sg_f"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | singular'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f_and_n_pl(data)
	local conv = {
		{"nom_pl_m", "nom_pl_f", "nom_pl_n"},
		{"gen_pl_m", "gen_pl_f", "gen_pl_n"},
		{"dat_pl_m", "dat_pl_f", "dat_pl_n"},
		{"acc_pl_m", "acc_pl_f", "acc_pl_n"},
		{"abl_pl_m", "abl_pl_f", "abl_pl_n"},
		{"voc_pl_m", "voc_pl_f", "voc_pl_n"},
		{"loc_pl_m", "loc_pl_f", "loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="3" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f_and_n_sg(data)
	local conv = {
		{"nom_sg_m", "nom_sg_f", "nom_sg_n"},
		{"gen_sg_m", "gen_sg_f", "gen_sg_n"},
		{"dat_sg_m", "dat_sg_f", "dat_sg_n"},
		{"acc_sg_m", "acc_sg_f", "acc_sg_n"},
		{"abl_sg_m", "abl_sg_f", "abl_sg_n"},
		{"voc_sg_m", "voc_sg_f", "voc_sg_n"},
		{"loc_sg_m", "loc_sg_f", "loc_sg_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="3" | singular'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_mfn(data, noneut)
	local conv = {
		{"nom_sg_m"},
		{"gen_sg_m"},
		{"dat_sg_m"},
		{"acc_sg_m"},
		{"abl_sg_m"},
		{"voc_sg_m"},
		{"loc_sg_m"},
		{"----"}, -- prevents merge rows from merging cells at the bottom of sg with cells at the top of pl
		{"nom_pl_m"},
		{"gen_pl_m"},
		{"dat_pl_m"},
		{"acc_pl_m"},
		{"abl_pl_m"},
		{"voc_pl_m"},
		{"loc_pl_m"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | singular'
	output = output .. '\n|class="separator" rowspan="999"|'
	output = output .. '\n!class="outer" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. (noneut and 'masc./fem.' or 'masc./fem./neut.')
	output = output .. '\n! ' .. (noneut and 'masc./fem.' or 'masc./fem./neut.')
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_n(data)
	local conv = {
		{"nom_sg_n"},
		{"gen_sg_n"},
		{"dat_sg_n"},
		{"acc_sg_n"},
		{"abl_sg_n"},
		{"voc_sg_n"},
		{"loc_sg_n"},
		{"----"}, -- prevents merge rows from merging cells at the bottom of sg with cells at the top of pl
		{"nom_pl_n"},
		{"gen_pl_n"},
		{"dat_pl_n"},
		{"acc_pl_n"},
		{"abl_pl_n"},
		{"voc_pl_n"},
		{"loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" | singular'
	output = output .. '\n|class="separator" rowspan="999"|'
	output = output .. '\n!class="outer" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! ' .. 'neuter'
	output = output .. '\n! ' .. 'neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_mf_and_n(data)
	local conv = {
		{"nom_sg_m", "nom_sg_n"},
		{"gen_sg_m", "gen_sg_n"},
		{"dat_sg_m", "dat_sg_n"},
		{"acc_sg_m", "acc_sg_n"},
		{"abl_sg_m", "abl_sg_n"},
		{"voc_sg_m", "voc_sg_n"},
		{"loc_sg_m", "loc_sg_n"},
		{"----", "----"},  -- prevents merge rows from merging cells at the bottom of sg with cells at the top of pl
		{"nom_pl_m", "nom_pl_n"},
		{"gen_pl_m", "gen_pl_n"},
		{"dat_pl_m", "dat_pl_n"},
		{"acc_pl_m", "acc_pl_n"},
		{"abl_pl_m", "abl_pl_n"},
		{"voc_pl_m", "voc_pl_n"},
		{"loc_pl_m", "loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | singular'
	output = output .. '\n|class="separator" rowspan="999"|'
	output = output .. '\n!class="outer" colspan="2" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masc./fem.'
	output = output .. '\n! neuter'
	output = output .. '\n! masc./fem.'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f(data)
	local conv = {
		{"nom_sg_m", "nom_sg_f"},
		{"gen_sg_m", "gen_sg_f"},
		{"dat_sg_m", "dat_sg_f"},
		{"acc_sg_m", "acc_sg_f"},
		{"abl_sg_m", "abl_sg_f"},
		{"voc_sg_m", "voc_sg_f"},
		{"loc_sg_m", "loc_sg_f"},
		{"----", "----"},  -- prevents merge rows from merging cells at the bottom of sg with cells at the top of pl
		{"nom_pl_m", "nom_pl_f"},
		{"gen_pl_m", "gen_pl_f"},
		{"dat_pl_m", "dat_pl_f"},
		{"acc_pl_m", "acc_pl_f"},
		{"abl_pl_m", "abl_pl_f"},
		{"voc_pl_m", "voc_pl_f"},
		{"loc_pl_m", "loc_pl_f"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="2" | singular'
	output = output .. '\n|class="separator" rowspan="999"|'
	output = output .. '\n!class="outer" colspan="2" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end

	return output
end

local function make_table_m_and_f_and_n(data)	
	local conv = {
		{"nom_sg_m", "nom_sg_f", "nom_sg_n"},
		{"gen_sg_m", "gen_sg_f", "gen_sg_n"},
		{"dat_sg_m", "dat_sg_f", "dat_sg_n"},
		{"acc_sg_m", "acc_sg_f", "acc_sg_n"},
		{"abl_sg_m", "abl_sg_f", "abl_sg_n"},
		{"voc_sg_m", "voc_sg_f", "voc_sg_n"},
		{"loc_sg_m", "loc_sg_f", "loc_sg_n"},
		{"----", "----", "----"},  -- prevents merge rows from merging cells at the bottom of sg with cells at the top of pl
		{"nom_pl_m", "nom_pl_f", "nom_pl_n"},
		{"gen_pl_m", "gen_pl_f", "gen_pl_n"},
		{"dat_pl_m", "dat_pl_f", "dat_pl_n"},
		{"acc_pl_m", "acc_pl_f", "acc_pl_n"},
		{"abl_pl_m", "abl_pl_f", "abl_pl_n"},
		{"voc_pl_m", "voc_pl_f", "voc_pl_n"},
		{"loc_pl_m", "loc_pl_f", "loc_pl_n"},
	}
	conv = convert(data, conv)
	
	local output = data.title
	output = output .. '\n\n'
	output = output .. mw.getCurrentFrame():expandTemplate{
		title = 'inflection-table-top',
		args = {
			title = '-',
			palette = 'cyan',
			class = 'sticky-left-column',
		}
	}
	output = output .. '\n!class="outer" | '
	output = output .. '\n!class="outer" colspan="3" | singular'
	output = output .. '\n|class="separator" rowspan="999"|'
	output = output .. '\n!class="outer" colspan="3" | plural'
	output = output .. '\n|-'
	output = output .. '\n! '
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n! neuter'
	output = output .. '\n! masculine'
	output = output .. '\n! feminine'
	output = output .. '\n! neuter'
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	output = output .. '\n|-'
	output = output .. '\n! ]'
	output = output .. conv
	output = output .. conv
	if data.voc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	if data.loc then
		output = output .. '\n|-'
		output = output .. '\n! ]'
		output = output .. conv
		output = output .. conv
	end
	output = output .. '\n' .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' }
	if data.footnotes and data.footnotes ~= '' then
		output = output .. '\n' .. data.footnotes
	end
	
	return output
end

function export.make_table(data, noneut, nomf)
	local output
	if not data.forms.nom_sg_n and not data.forms.nom_pl_n then
		if data.forms.nom_sg_f or data.forms.nom_pl_f then
			if data.num == "pl" then output = make_table_m_and_f_pl(data)
			elseif data.num == "sg" then output = make_table_m_and_f_sg(data)
			else output = make_table_m_and_f(data) end
		else
			if data.num == "pl" then output = make_table_mfn_pl(data, noneut)
			elseif data.num == "sg" then output = make_table_mfn_sg(data, noneut)
			else output = make_table_mfn(data, noneut) end
		end
	elseif nomf then
		if data.num == "pl" then output = make_table_n_pl(data)
		elseif data.num == "sg" then output = make_table_n_sg(data)
		else output = make_table_n(data, noneut) end
	elseif not data.forms.nom_sg_f and not data.forms.nom_pl_f then
		if data.num == "pl" then output = make_table_mf_and_n_pl(data)
		elseif data.num == "sg" then output = make_table_mf_and_n_sg(data)
		else output = make_table_mf_and_n(data) end
	else
		if data.num == "pl" then output = make_table_m_and_f_and_n_pl(data)
		elseif data.num == "sg" then output = make_table_m_and_f_and_n_sg(data)
		else output = make_table_m_and_f_and_n(data) end
	end
	return output
end

return export

-- For Vim, so we get 4-space tabs
-- vim: set ts=4 sw=4 noet: