. In DICTIOUS you will not only get to know all the dictionary meanings for the word
, but we will also tell you about its etymology, its characteristics and you will know how to say
in singular and plural. Everything you need to know about the word
you have here. The definition of the word
will help you to be more precise and correct when speaking or writing your texts. Knowing the definition of
, 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, '! progressive')
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