User:This, that and the other/inflection table standardisation/Module:ta-conj

Hello, you have come here looking for the meaning of the word User:This, that and the other/inflection table standardisation/Module:ta-conj. In DICTIOUS you will not only get to know all the dictionary meanings for the word User:This, that and the other/inflection table standardisation/Module:ta-conj, but we will also tell you about its etymology, its characteristics and you will know how to say User:This, that and the other/inflection table standardisation/Module:ta-conj in singular and plural. Everything you need to know about the word User:This, that and the other/inflection table standardisation/Module:ta-conj you have here. The definition of the word User:This, that and the other/inflection table standardisation/Module:ta-conj will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofUser:This, that and the other/inflection table standardisation/Module:ta-conj, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.
local export = {}
local m_translit = require("Module:ta-translit")

local gsub = mw.ustring.gsub
local sub = mw.ustring.sub
local match = mw.ustring.match
local len = mw.ustring.len

local consonants = {
	='k' , ='ṅ' , ='c' , ='ñ' , ='ṭ' , ='ṇ' , ='t' ,
	='n' , ='p', ='m' , ='y' , ='r' , ='l' , ='v' ,
	='ḻ' , ='ḷ' , ='ṟ' , ='ṉ' , ='ś' , ='j' , ='ṣ' , 
	='s' , ='h' , ='f' , ='z' , ='x' ,
	='ḥ' ,
}

local stops = {
	='k' , ='c' , ='ṭ' , ='t' ,
	='p', ='ṟ'
}

local matras = {
	= 'ā' , ='i' , ='ī' , ='u' , ='ū' ,  ='e' ,
	='ē' , ='ai' , ='o' , ='ō' , ='au'  ,
	=,	--halant, supresses the inherent vowel "a"
	-- no diacritic
	 = 'a'
}

local front_vowels = {
	='i' , ='ī' , ='u' , ='e' ,
	='ē' , ='ai' 
}

local back_vowels = {
	-- or implicit 'a' ending! --
	= 'ā' , ='u' , ='ū' ,
	='o' , ='ō' , ='au'  ,
}

local nonconsonants = {
	='’a' , ='’ā' , ='’i' , ='’ī' , ='’u' , ='’ū' , 
	='’e' , ='’ē' , ='’ai' , ='’o' , ='’ō' , ='’au' 
}

local nasals = {
	='ṅ' , ='ñ' ,  ='ṇ' , ='n' ,
	='m' , ='ṉ' ,
}

local laterals = {
	='ḷ' , ='l' 
}

local vowel_conv = {
	=, ='ா' , ='ி' , ='ீ' , ='ு' , ='ூ' , 
    ='ெ' , ='ே' , ='ை' , ='ொ' , ='ோ' , ='ௌ' , 
}


local irregular_infinitives = {
	 = "விற்க",
	 = "நிற்க",
	 = "கற்க",
	 = "கிற்க",
	 = "கேட்க",
	 = "வர",
	 = "தர",
	 = "போக",
	 = "சாக",
	 = "தோற்க",
}

-- this is meant to be an all purpose sandhi handler
function export.agglutinate(stem, suffix, args)
    delete_final_u = (args and args.delete_final_u) or false
    delete_final_a = (args and args.delete_final_a) or false
    assimilate_lateral_to_stop = (args and args.assimilate_lateral_to_stop) or false
    do_not_duplicate_laterals = (args and args.do_not_duplicate_laterals) or false
    do_not_duplicate_nasals = (args and args.do_not_duplicate_nasals) or false
    do_not_adjust_nasals = (args and args.do_not_adjust_nasals) or false
    
    -- conv matras
    local vowelic_suffix = false
    if nonconsonants then
    	vowelic_suffix = true
    	suffix = vowel_conv .. sub(suffix, 2)
    end
    
    -- simple cases without sandhi
    if sub(stem, -1) == '்' and vowelic_suffix then
    	-- consonant meets vowel boundary
    	if (nasals and not do_not_duplicate_nasals) or (laterals and not do_not_duplicate_laterals) then
    		return stem .. sub(stem, -2, -2) .. suffix
    	end
    	return sub(stem, 1, -2) .. suffix
    elseif sub(stem, -1) ~= '்' and consonants then
    	-- vowel meets consonant boundary 
    	if sub(suffix, 1, 1) == 'ந' and sub(suffix, 2, 2) ~= '்' then
    		return stem .. 'ன' .. sub(suffix, 2) -- edge case since ந is never intervowelic
    	end
    	return stem .. suffix
    end
    
    -- vowel meets vowel cases with deletion
    if sub(stem, -1) == 'ு' and delete_final_u then
    	return sub(stem, 1, -2) .. suffix
    elseif consonants and delete_final_a then
    	return stem .. suffix
    end
    
    -- vowel meets vowel cases include vowel for euphony
    if sub(stem, -1) ~= '்' then
    	if front_vowels then
    		return stem .. 'ய' .. suffix
    	elseif back_vowels or consonants then
    		return stem .. 'வ' .. suffix
    	end
    	return stem .. suffix -- something unusual
    end
    -- consonant meets consonant cases
    if (nasals and stops) and not do_not_adjust_nasals then -- nasal assimilation
    	if sub(suffix, 1, 1) == 'க' and sub(stem, -2, -2) ~= "ண" then return sub(stem, 1, -3) .. 'ங்' .. suffix
    	elseif sub(suffix, 1, 1) == 'ச' then return sub(stem, 1, -3) .. 'ஞ்' .. suffix
    	elseif sub(suffix, 1, 1) == 'ட' then return sub(stem, 1, -3) .. 'ண்' .. suffix
    	elseif sub(suffix, 1, 1) == 'த' then return sub(stem, 1, -3) .. 'ந்' .. suffix
    	elseif sub(suffix, 1, 1) == 'ப' and sub(stem, -2, -2) ~= ("ண" or "ன") then return sub(stem, 1, -3) .. 'ம்' .. suffix
    	elseif sub(suffix, 1, 1) == 'ற' then return sub(stem, 1, -3) .. 'ன்' .. suffix
    	end
    	return stem .. suffix -- something unusual
    end
    if laterals and (sub(suffix, 1, 1) == 'ட' or sub(suffix, 1, 1) == 'த') then -- lateral assimilation
    	if assimilate_lateral_to_stop then
    		if sub(stem, -2, -2) == 'ல' then return sub(stem, 1, -3) .. 'ற்ற' .. sub(suffix, 2)
    		elseif sub(stem, -2, -2) == 'ள' then return sub(stem, 1, -3) .. 'ட்ட' .. sub(suffix, 2)
    		end
    	else
    		if sub(stem, -2, -2) == 'ல' then return sub(stem, 1, -3) .. 'ன்ற' .. sub(suffix, 2)
    		elseif sub(stem, -2, -2) == 'ள' then return sub(stem, 1, -3) .. 'ண்ட' .. sub(suffix, 2)
    		end
    	end
    end    
	return stem .. suffix -- ordinary
end

local endings = { -- 10 personal endings
	"ஏன்", "ஆய்", "ஆன்", "ஆள்", "ஆர்", "அது", "ஓம்", "ஈர்கள்", "ஆர்கள்", "அன"
}

local neg_futu_endings = { -- 10 personal endings
	"மாட்டேன்", "மாட்டாய்", "மாட்டான்", "மாட்டாள்", "மாட்டார்", "ஆது", "மாட்டோம்", "மாட்டீர்கள்", "மாட்டார்கள்", "ஆ"
}

local verbal_noun_endings = { -- 6 verbal noun endings
	"அவன்", "அவள்", "அவர்", "அது", "அவர்கள்", "அவை"
}

local suffixes = {
	 = {
		 = "த",
		 = "கிற",
		 = "கின்ற",
		 = "வ",
		 = "அ",
		 = "தல்",
		 = {
			 = true
		},
		 = {}
	},
	 = {
		 = "ந்த",
		 = "கிற",
		 = "கின்ற",
		 = "வ",
		 = "அ",
		 = "தல்",
		 = {
			 = true
		},
		 = {}
	},
	 = {
		 = "ன",
		 = "கிற",
		 = "கின்ற",
		 = "வ",
		 = "அ",
		 = "தல்",
		 = {
			 = true
		},
		 = {}
	},
	 = {
		 = "ட",
		 = "கிற",
		 = "கின்ற",
		 = "வ",
		 = "அ",
		 = "தல்",
		 = {
			 = true
		},
		 = {
			 = true
		}
	},
	 = {
		 = "ட",
		 = "கிற",
		 = "கின்ற",
		 = "ப",
		 = "அ",
		 = "தல்",
		 = {
			 = true
		},
		 = {}
	},
	 = {
		 = "த்த",
		 = "க்கிற",
		 = "க்கின்ற",
		 = "ப்ப",
		 = "க்க",
		 = "த்தல்",
		 = {},
		 = {}
	},
	 = {
		 = "ந்த",
		 = "க்கிற",
		 = "க்கின்ற",
		 = "ப்ப",
		 = "க்க",
		 = "ந்தல்",
		 = {},
		 = {}
	}
}

-- Clone parent’s args while also assigning nil to empty strings.
local function clone_args(frame)
	local args = {}
	for pname, param in pairs(frame:getParent().args) do
		if param == "" then args = nil
		else args = param
		end
	end
	return args
end

function export.do_generate_forms(args)
	local data = {}
	
	assert(args, "Need a class for the word")
	local class = tonumber(args)
	data.class = class
	assert(data.class, "Class is not a number: " .. args)
	local base = args or mw.title.getCurrentTitle().text
	local namespace = mw.title.getCurrentTitle().nsText
	data.imperat_sg = args.imperat_sg or base
	data.inf = args.inf or irregular_infinitives or export.agglutinate(base, suffixes.infinitive, suffixes.infinitive_sandhi)
	data.imperat_pl = args.imperat_pl or ""
	if data.imperat_pl == "" then
	if class > 4 then
		data.imperat_pl = export.agglutinate(base, "உங்கள்", { = true })
	else data.imperat_pl = export.agglutinate(data.inf, "உங்கள்", { = true })
	end
	end
	-- if not data.inf then
	-- 	-- if data.class <= 5 then
	-- 	-- 	data.inf = export.agglutinate(data.imperat, "அ", { = true })
	-- 	-- elseif data.class <= 7 then
	-- 	-- 	data.inf = export.agglutinate(data.imperat, "க்க", {})
	-- 	-- end
	-- end
	data.adv_part = args.adv_part or ""
	if class == 3 and data.adv_part == "" then
		data.adv_part = export.agglutinate(data.inf, "இ", { = true })
	end
	data.gerunds2 = args.gerund_2 or export.agglutinate(base, suffixes.gerunds)
	data.aff_pres = {}
	local aff_pres_base = args.aff_pres_base or export.agglutinate(base, suffixes.present)
	local aff_pres_avai_base = args.aff_pres_avai_base or export.agglutinate(base, suffixes.avai_present)
	for i, ending in pairs(endings) do
		if i == 10 then
			table.insert(data.aff_pres, export.agglutinate(aff_pres_avai_base, ending,  { = true }))
		else
			table.insert(data.aff_pres, export.agglutinate(aff_pres_base, ending,  { = true }))
		end
	end
	
	data.aff_past = {}
	local aff_past_base = args.aff_past_base
	if not aff_past_base then
		if class == 3 then 
			aff_past_base = export.agglutinate(data.adv_part, suffixes.past, suffixes.past_sandhi)
elseif class == 4 and sub(base, -2) ~= "டு" and sub(base, -1) == "ு" then
aff_past_base = export.agglutinate(sub(base, 1, -3)..sub(sub(base, 1, -2), -1).."்", sub(sub(base, 1, -2), -1))
		elseif class == 4 and sub(base, -1) ~= '்' then
			aff_past_base = export.agglutinate(sub(base, 1, -2) .. '்', suffixes.past, suffixes.past_sandhi)
		else
			aff_past_base = export.agglutinate(base, suffixes.past, suffixes.past_sandhi)
		end
	end
	for i, ending in pairs(endings) do
		table.insert(data.aff_past, export.agglutinate(aff_past_base, ending,  { = true }))
	end
	if class ~= 3 and data.adv_part == "" then
		data.adv_part = export.agglutinate(aff_past_base, "உ",  { = true })
	end
	
	data.aff_futu = {}
	local aff_futu_base = args.aff_futu_base or export.agglutinate(base, suffixes.future)
	for i, ending in pairs(endings) do
		if i == 6 then
			table.insert(data.aff_futu, export.agglutinate(data.inf, "உம்",  { = true }))
		else
			table.insert(data.aff_futu, export.agglutinate(aff_futu_base, ending,  { = true }))
		end
	end
	
	data.aff_neg_futu = {}
	for i, ending in pairs(neg_futu_endings) do
		table.insert(data.aff_neg_futu, export.agglutinate(data.inf, ending,  { = true }))
	end
	
	data.aff_neg = export.agglutinate(data.inf, "வில்லை",  { = true })
	data.neg_imperat_sg = export.agglutinate(data.inf, "ஆதே",  { = true })
	data.neg_imperat_pl = export.agglutinate(data.inf, "ஆதீர்கள்",  { = true })
	local avp = data.adv_part
	data.pres_perf = export.agglutinate(avp, "விடு")
	data.past_perf = export.agglutinate(avp, "விட்டிரு")
	data.futu_perf = export.agglutinate(avp, "விடு")
	data.progressive = export.agglutinate(avp, "க்கொண்டிரு")
	data.eff = export.agglutinate(data.inf, "ப்படு")
	data.neg_inf = export.agglutinate(data.inf, "ஆமல் இருக்க", { = true })
	data.pot = export.agglutinate(data.inf, "லாம்", { = true })
	data.neg_pot = export.agglutinate(data.inf, "ஆமல் இருக்கலாம்", { = true })
	data.cohortative = export.agglutinate(data.inf, "ட்டும்", { = true })
	data.neg_cohortative = export.agglutinate(data.inf, "ஆமல் இருக்கட்டும்", { = true })
	
	data.neg_casual_conditional = export.agglutinate(data.inf, "ஆத்தால்", { = true })
	data.conditional = export.agglutinate(aff_past_base, "ஆல்", { = true })
	data.neg_conditional = export.agglutinate(data.inf, "ஆவிட்டால்", { = true })
	
	data.neg_adv_part = export.agglutinate(data.inf, "ஆமல்", { = true })
	
	data.pres_adj_part = aff_pres_base
	data.past_adj_part = aff_past_base
	data.futu_adj_part = export.agglutinate(data.inf, "உம்",  { = true })
	data.neg_adj_part = export.agglutinate(data.inf, "ஆத", { = true })
	
	data.verbal_noun_pres = {}
	for i, ending in pairs(verbal_noun_endings) do
		table.insert(data.verbal_noun_pres, export.agglutinate(aff_pres_base, ending,  { = true }))
	end
	
	data.verbal_noun_past = {}
	for i, ending in pairs(verbal_noun_endings) do
		table.insert(data.verbal_noun_past, export.agglutinate(aff_past_base, ending,  { = true }))
	end
	
	data.verbal_noun_futu = {}
	local verbal_noun_futu_base = aff_futu_base
	if suffixes.future == "வ" then
		verbal_noun_futu_base = export.agglutinate(base, "ப",  { = true })
	end
	local verbal_noun = export.agglutinate(aff_futu_base, "அது",  { = true })
	for i, ending in pairs(verbal_noun_endings) do
		if i == 4 then
			table.insert(data.verbal_noun_futu, verbal_noun)
		else
			table.insert(data.verbal_noun_futu, export.agglutinate(verbal_noun_futu_base, ending,  { = true }))
		end
	end

	data.casual_conditional = export.agglutinate(verbal_noun, "ஆல்", { = true,  = true  })
	
	data.verbal_noun_neg = {}
	local verbal_noun_neg_base = export.agglutinate(data.inf, "ஆத",  { = true })
	for i, ending in pairs(verbal_noun_endings) do
		table.insert(data.verbal_noun_neg, export.agglutinate(verbal_noun_neg_base, ending,  { = true }))
	end
	
	data.gerunds = {
		verbal_noun,
		data.gerunds2,
		export.agglutinate(data.inf, "அல்", { = true })
	}
	
	local pres_perf = data.pres_perf
	local past_perf = data.past_perf
	local futu_perf = data.futu_perf
	for k, v in pairs(data) do
		if type(v) == "table" then
			for k1, v1 in pairs(v) do
				if (v1 ~= "-") then
					data = '' .. v1 .. ' ' .. ' 
' .. m_translit.tr(v1) .. '' end end else if (v ~= "-") then data = '' .. v .. '' .. '
' .. m_translit.tr(v) .. '' end end end data.base = base .. ' (' .. m_translit.tr(base) .. ')' data.pres_perf = '' .. pres_perf .. ' (' .. m_translit.tr(pres_perf) .. ')' data.past_perf = '' .. past_perf .. ' (' .. m_translit.tr(past_perf) .. ')' data.futu_perf = '' .. futu_perf .. ' (' .. m_translit.tr(futu_perf) .. ')' data.categories = "" if not (args.nocat or namespace ~= "") then data.categories = "" end return data end function export.show(frame) local args = clone_args(frame) local data = export.do_generate_forms(args) local res = {frame:expandTemplate{ title = 'inflection-box-top', args = { title = 'Conjugation of ' .. data.base, flow = 'vertical', } }} table.insert(res, frame:expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'blue', class = 'wide tr-alongside', } }) table.insert(res, '|-') table.insert(res, '! class="outer" rowspan="2" | singular
affective') table.insert(res, '! first') table.insert(res, '! second') table.insert(res, '! third masculine') table.insert(res, '! third feminine') table.insert(res, '! third honorific') table.insert(res, '! third neuter') table.insert(res, '|-') table.insert(res, '! நான்') table.insert(res, '! நீ') table.insert(res, '! அவன்') table.insert(res, '! அவள்') table.insert(res, '! அவர்') table.insert(res, '! அது') table.insert(res, '|-') table.insert(res, '! present') table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '|-') table.insert(res, '! past') table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '|-') table.insert(res, '! future') table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '|-') table.insert(res, '! future negative') table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '|-') table.insert(res, '! negative') table.insert(res, '| colspan="6" | ' .. data.aff_neg) table.insert(res, '|-') table.insert(res, '! class="outer" rowspan="2" | plural
affective') table.insert(res, '! first') table.insert(res, '! second
(or singular polite)') table.insert(res, '! colspan="2" | third epicene') table.insert(res, '! colspan="2" | third neuter') table.insert(res, '|-') table.insert(res, '! நாம் (inclusive)
நாங்கள் (exclusive)') table.insert(res, '! நீங்கள்') table.insert(res, '! colspan="2" | அவர்கள்') table.insert(res, '! colspan="2" | அவை') table.insert(res, '|-') table.insert(res, '! present') table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| ' .. data.aff_pres) table.insert(res, '| colspan="2" | ' .. data.aff_pres) table.insert(res, '| colspan="2" | ' .. data.aff_pres) table.insert(res, '|-') table.insert(res, '! past') table.insert(res, '| ' .. data.aff_past) table.insert(res, '| ' .. data.aff_past) table.insert(res, '| colspan="2" | ' .. data.aff_past) table.insert(res, '| colspan="2" | ' .. data.aff_past) table.insert(res, '|-') table.insert(res, '! future') table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| ' .. data.aff_futu) table.insert(res, '| colspan="2" | ' .. data.aff_futu) table.insert(res, '| colspan="2" | ' .. data.aff_futu) table.insert(res, '|-') table.insert(res, '! future negative') table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| ' .. data.aff_neg_futu) table.insert(res, '| colspan="2" | ' .. data.aff_neg_futu) table.insert(res, '| colspan="2" | ' .. data.aff_neg_futu) table.insert(res, '|-') table.insert(res, '! negative') table.insert(res, '| colspan="6" | ' .. data.aff_neg) table.insert(res, '|-') table.insert(res, '! class="outer" | imperative') table.insert(res, '! colspan="3" | singular') table.insert(res, '! colspan="3" | plural (or singular polite)') table.insert(res, '|-') table.insert(res, '! positive') table.insert(res, '| colspan="3" | ' .. data.imperat_sg) table.insert(res, '| colspan="3" | ' .. data.imperat_pl) table.insert(res, '|-') table.insert(res, '! negative') table.insert(res, '| colspan="3" | ' .. data.neg_imperat_sg) table.insert(res, '| colspan="3" | ' .. data.neg_imperat_pl) table.insert(res, frame:expandTemplate{ title = 'inflection-table-bottom' }) table.insert(res, frame:expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'green', class = 'wide tr-alongside', } }) table.insert(res, '! class="outer" rowspan="2" | perfect') table.insert(res, '! colspan="2" | present') table.insert(res, '! colspan="2" | past') table.insert(res, '! colspan="2" | future') table.insert(res, '|-') table.insert(res, '| class="secondary" colspan="2" | past of ' .. data.pres_perf) table.insert(res, '| class="secondary" colspan="2" | past of ' .. data.past_perf) table.insert(res, '| class="secondary" colspan="2" | future of ' .. data.futu_perf) table.insert(res, '|-') table.insert(res, '! pro­gress­ive') table.insert(res, '| class="secondary" colspan="7" | ' .. data.progressive) table.insert(res, '|-') table.insert(res, '! effective') table.insert(res, '| class="secondary" colspan="7" | ' .. data.eff) table.insert(res, frame:expandTemplate{ title = 'inflection-table-bottom' }) table.insert(res, frame:expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'yellow', class = 'wide tr-alongside', } }) table.insert(res, '! class="outer" | non-finite forms') table.insert(res, '! colspan="3" | plain') table.insert(res, '! colspan="3" | negative') table.insert(res, '|-') table.insert(res, '! infinitive') table.insert(res, '| colspan="3" | ' .. data.inf) table.insert(res, '| colspan="3" | ' .. data.neg_inf) table.insert(res, '|-') table.insert(res, '! potential') table.insert(res, '| colspan="3" | ' .. data.pot) table.insert(res, '| colspan="3" | ' .. data.neg_pot) table.insert(res, '|-') table.insert(res, '! cohortative') table.insert(res, '| colspan="3" | ' .. data.cohortative) table.insert(res, '| colspan="3" | ' .. data.neg_cohortative) table.insert(res, '|-') table.insert(res, '! casual conditional') table.insert(res, '| colspan="3" | ' .. data.casual_conditional) table.insert(res, '| colspan="3" | ' .. data.neg_casual_conditional) table.insert(res, '|-') table.insert(res, '! conditional') table.insert(res, '| colspan="3" | ' .. data.conditional) table.insert(res, '| colspan="3" | ' .. data.neg_conditional) table.insert(res, '|-') table.insert(res, '! adverbial participle') table.insert(res, '| colspan="3" | ' .. data.adv_part) table.insert(res, '| colspan="3" | ' .. data.neg_adv_part) table.insert(res, '|-') table.insert(res, '! rowspan="2" | adjectival participle') table.insert(res, '! present') table.insert(res, '! past') table.insert(res, '! future') table.insert(res, '! colspan="3" | negative') table.insert(res, '|-') table.insert(res, '| ' .. data.pres_adj_part) table.insert(res, '| ' .. data.past_adj_part) table.insert(res, '| ' .. data.futu_adj_part) table.insert(res, '| colspan="3" | ' .. data.neg_adj_part) table.insert(res, frame:expandTemplate{ title = 'inflection-table-bottom' }) table.insert(res, frame:expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'orange', class = 'wide tr-alongside', } }) table.insert(res, '! class="outer" rowspan="2" | verbal noun') table.insert(res, '! colspan="4" | singular') table.insert(res, '! colspan="2" | plural') table.insert(res, '|-') table.insert(res, '! masculine') table.insert(res, '! feminine') table.insert(res, '! honorific') table.insert(res, '! neuter') table.insert(res, '! epicene') table.insert(res, '! neuter') table.insert(res, '|-') table.insert(res, '! present') table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '| ' .. data.verbal_noun_pres) table.insert(res, '|-') table.insert(res, '! past') table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '| ' .. data.verbal_noun_past) table.insert(res, '|-') table.insert(res, '! future') table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '| ' .. data.verbal_noun_futu) table.insert(res, '|-') table.insert(res, '! negative') table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '| ' .. data.verbal_noun_neg) table.insert(res, '|-') table.insert(res, '! rowspan="2" | gerund') table.insert(res, '! colspan="2" | form I') table.insert(res, '! colspan="2" | form II') table.insert(res, '! colspan="2" | form III') table.insert(res, '|-') table.insert(res, '| colspan="2" | ' .. data.gerunds) table.insert(res, '| colspan="2" | ' .. data.gerunds) table.insert(res, '| colspan="2" | ' .. data.gerunds) table.insert(res, frame:expandTemplate{ title = 'inflection-table-bottom' }) table.insert(res, frame:expandTemplate{ title = 'inflection-box-bottom' }) if data.categories ~= "" then table.insert(res, data.categories) end return table.concat(res, "\n") end return export