Module:User:Atitarev/ru-verb/2

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

This is a private module sandbox of Atitarev, for his own experimentation. Items in this module may be added and removed at Atitarev's discretion; do not rely on this module's stability.


--[=[
	This module contains functions for creating inflection tables for Russian
	verbs.
]=]--

local m_utilities = require("Module:utilities")
local com = require("Module:ru-common")

local export = {}

-- Within this module, conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb.
-- They are defined further down.
local conjugations = {}

local lang = require("Module:languages").getByCode("ru")

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	local conj_type = frame.args or error("Conjugation type has not been specified. Please pass parameter 1 to the module invocation")
	local args = frame:getParent().args
	PAGENAME = mw.title.getCurrentTitle().text
	NAMESPACE = mw.title.getCurrentTitle().nsText

	-- Verb type, one of impf, pf, impf-intr, pf-intr, impf-refl, pf-refl.
	-- Default to impf on the template page so that there is no script error.
	local verb_type = args or (NAMESPACE == "Template" and "impf") or error("Verb type (first parameter) has not been provided")
	-- verbs may have reflexive ending stressed in the masculine singular: занялся́, начался́, etc.
	local reflex_stress = args -- "ся́"

	local forms, title, categories

	if conjugations then
		forms, title, categories = conjugations(args)
	else
		error("Unknown conjugation type '" .. conj_type .. "'")
	end

	-- This form is not always present on verbs, so it needs to be specified explicitly.
	forms = args or ""

	--alternative forms
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args
	forms = forms or args

	local intr = (verb_type == "impf-intr" or verb_type == "pf-intr" or verb_type == "pf-impers" or verb_type == "impf-impers" or verb_type == "pf-impers-refl" or verb_type == "impf-impers-refl")
	local refl = (verb_type == "impf-refl" or verb_type == "pf-refl" or verb_type == "pf-impers-refl" or verb_type == "impf-impers-refl")
	local perf = (verb_type == "pf" or verb_type == "pf-intr" or verb_type == "pf-refl" or verb_type == "pf-impers" or verb_type == "pf-impers-refl")
	--impersonal
	local impers = (verb_type == "pf-impers" or verb_type == "impf-impers" or verb_type == "pf-impers-refl" or verb_type == "impf-impers-refl")

	-- Perfective/imperfective
	if perf then
		table.insert(categories, "Russian perfective verbs")
	else
		table.insert(categories, "Russian imperfective verbs")
	end

	-- call alternative reflexive form to add a stressed "ся́" particle
	if reflex_stress then
		make_reflexive_alt(forms)
	end

	-- Reflexive/intransitive/transitive
	if refl then
		make_reflexive(forms)
		table.insert(categories, "Russian reflexive verbs")
	elseif intr then
		table.insert(categories, "Russian intransitive verbs")
	else
		table.insert(categories, "Russian transitive verbs")
	end

	-- Impersonal
	if impers then
		table.insert(categories, "Russian impersonal verbs")
	end

	return make_table(forms, title, perf, intr or refl, impers) .. m_utilities.format_categories(categories, lang)
end

--[=[
	Conjugation functions
]=]--

conjugations = function(args)
	local forms = {}
	local categories = {"Russian class 6 verbs"}
	local title = "class 6"

	local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
	local impr_end = args; if impr_end == "" then impr_end = nil end
	-- irregular imperatives (сыпать  - сыпь is moved to a separate function but the parameter may still be needed)
	local impr_sg = args; if impr_sg == "" then impr_sg = nil end
	-- optional full infinitive form for verbs like колебать
	local full_inf = args; if full_inf == "" then full_inf = nil end
	-- no iotation, e.g. вырвать - вы́рву
	local no_iotation = nil
	if args == "1" then
		no_iotation = "1"
	end
	-- вызвать - вы́зову (в́ызов)
	local pres_stem = args; if pres_stem == "" or not pres_stem then pres_stem = stem end

	-- replace consonants for 1st person singular present/future
	local iotated_stem = com.iotation(pres_stem)

	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "ущий"
	else
		forms = iotated_stem .. "ющий"
	end

	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "а"
	else
		forms = iotated_stem .. "я"
	end

	if no_iotation then
		forms = pres_stem .. "я"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "ять"
		forms = stem .. "явший"
		forms = stem .. "явши"; forms = stem .. "яв"
		forms = stem .. "ял"
		forms = stem .. "яла"
		forms = stem .. "яло"
		forms = stem .. "яли"
	else
		forms = stem .. "ать"
		forms = stem .. "авший"
		forms = stem .. "авши"; forms = stem .. "ав"
		forms = stem .. "ал"
		forms = stem .. "ала"
		forms = stem .. "ало"
		forms = stem .. "али"
	end

	-- if full infinitive is not passed, build from the stem, otherwise use the optional parameter
	if full_inf then
		forms = full_inf
	end

	if no_iotation then
		forms = stem .. "емый"
	else
		forms = iotated_stem .. "емый"
	end

	present_je_a(forms, pres_stem, no_iotation)

	if not impr_end and mw.ustring.find(stem, "$") and not impr_end then
		impr_end = "й"
	elseif not impr_end and not mw.ustring.find(stem, "$") and not impr_end then
		impr_end = "и"
	end

	if no_iotation then
		forms = pres_stem .. impr_end
		forms = pres_stem .. impr_end .. "те"
	else
		forms = iotated_stem .. impr_end
		forms = iotated_stem .. impr_end .. "те"
	end

	-- irreg: сыпать  - сыпь, сыпьте
	if impr_sg then
		forms = impr_sg
		forms = impr_sg .. "те"
	end

	return forms, title, categories
end

conjugations = function(args)
	local forms = {}
	local categories = {"Russian class 6 verbs"}
	local title = "class 6"

	local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
	-- звать - зов, драть - дер
	local pres_stem = args; if pres_stem == "" or not pres_stem then pres_stem = stem end
	local past_f = args; if past_f == "" then past_f = nil end
	local past_n2 = args
	local past_pl2 = args

	forms = ""

	present_e_b(forms, pres_stem)

	if not impr_end and mw.ustring.find(stem, "$") and not impr_end then
		impr_end = "́й" -- accent on the preceding vowel
	elseif not impr_end and not mw.ustring.find(stem, "$") and not impr_end then
		impr_end = "и́"
	end

	forms = pres_stem .. impr_end
	forms = pres_stem .. impr_end .. "те"

	if mw.ustring.find(pres_stem, "$") then
		forms = pres_stem .. "а́"
	else
		forms = pres_stem .. "я́"
	end

	if mw.ustring.find(pres_stem, "$") then
		forms = pres_stem .. "ю́щий"
	else
		forms = pres_stem .. "у́щий"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "я́ть"
		forms = stem .. "я́вший"
		forms = stem .. "я́вши"; forms = stem .. "́яв"
		forms = stem .. "я́л"
		forms = stem .. "я́ла"
		forms = stem .. "я́ло"
		forms = stem .. "я́ли"
	else
		forms = stem .. "а́ть"
		forms = stem .. "а́вший"
		forms = stem .. "а́вши"; forms = stem .. "а́в"
		forms = stem .. "а́л"
		forms = stem .. "а́ла"
		forms = stem .. "а́ло"
		forms = stem .. "а́ли"
	end

	-- ждала́, подождала́
	if past_f then
		forms = past_f
	end
	--разобрало́сь (разобрало́)
	forms = past_n2
	--разобрали́сь (разобрали́)
	forms = past_pl2

	return forms, title, categories
end

conjugations = function(args)
	local forms = {}
	local categories = {"Russian class 6 verbs"}
	local title = "class 6"

	local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
	-- no iotation, e.g. стонать - стону́
	local no_iotation = nil
	if args == "1" then
		no_iotation = "1"
	end
	-- remove accent for some forms
	local stem_noa = com.make_unstressed(stem)
	-- iotate the stem
	local iotated_stem = com.iotation(stem)
	-- iotate the 2nd stem
	local iotated_stem_noa = com.iotation(stem_noa)

	forms = stem_noa .. "а́ть"

	forms = stem_noa .. "а́вший"
	forms = ""
	forms = stem_noa .. "а́вши"; forms = stem_noa .. "а́в"

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem ..  "ущий"
	else
		forms = iotated_stem ..  "ющий"
	end

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem_noa, "$") then
		forms = iotated_stem_noa ..  "а́"
	else
		forms = iotated_stem_noa ..  "я́"
	end
	
	present_je_c(forms, pres_stem, no_iotation)

	forms = iotated_stem_noa .. "и́"
	forms = iotated_stem_noa .. "и́те"

	forms = stem_noa .. "а́л"
	forms = stem_noa .. "а́ла"
	forms = stem_noa .. "а́ло"
	forms = stem_noa .. "а́ли"

	return forms, title, categories
end

--[=[
	Partial conjugation functions
]=]--

-- Present forms with -e-, no j-vowels.
function present_e_a(forms, stem)

	forms = stem .. "у"
	forms = stem .. "ешь"
	forms = stem .. "ет"
	forms = stem .. "ем"
	forms = stem .. "ете"
	forms = stem .. "ут"
end

function present_e_b(forms, stem)

	if mw.ustring.find(stem, "$") then
		forms = stem .. "ю́"
		forms = stem .. "ю́т"
	else
		forms = stem .. "у́"
		forms = stem .. "у́т"
	end

	forms = stem .. "ёшь"
	forms = stem .. "ёт"
	forms = stem .. "ём"
	forms = stem .. "ёте"
end

function present_e_c(forms, stem)
	local stem_noa = com.make_unstressed(stem)

	forms = stem_noa .. "у́"
	forms = stem .. "ешь"
	forms = stem .. "ет"
	forms = stem .. "ем"
	forms = stem .. "ете"
	forms = stem .. "ут"
end

-- Present forms with -e-, with j-vowels.
function present_je_a(forms, stem, no_iotation)
	local iotated_stem = com.iotation(stem, shch)

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "у"
	else
		forms = iotated_stem .. "ю"
	end

	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "ут"
	else
		forms = iotated_stem .. "ют"
	end

	forms = iotated_stem .. "ешь"
	forms = iotated_stem .. "ет"
	forms = iotated_stem .. "ем"
	forms = iotated_stem .. "ете"

	if no_iotation then
		forms = stem .. "у"
		forms = stem .. "ут"
		forms = stem .. "ешь"
		forms = stem .. "ет"
		forms = stem .. "ем"
		forms = stem .. "ете"
	end
end

function present_je_b(forms, stem)

	forms = stem .. "ю́"
	forms = stem .. "ёшь"
	forms = stem .. "ёт"
	forms = stem .. "ём"
	forms = stem .. "ёте"
	forms = stem .. "ю́т"
end

function present_je_c(forms, stem, no_iotation)
	local stem_noa = com.make_unstressed(stem)
	-- iotate the stem
	local iotated_stem = com.iotation(stem)
	-- iotate the 2nd stem
	local iotated_stem_noa = com.iotation(stem_noa)

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem_noa, "$") then
		forms = iotated_stem_noa .. "у́"
	else
		forms = iotated_stem_noa .. "ю́"
	end

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "ут"
	else
		forms = iotated_stem .. "ют"
	end

	forms = iotated_stem .. "ешь"
	forms = iotated_stem .. "ет"
	forms = iotated_stem .. "ем"
	forms = iotated_stem .. "ете"

	-- pres_futr_1sg and pres_futr_3pl are uniotated
	if no_iotation then
		forms = stem_noa .. "у́"
		forms = stem .. "ешь"
		forms = stem .. "ет"
		forms = stem .. "ем"
		forms = stem .. "ете"
		forms = stem .. "ут"
	end

end

-- Present forms with -i-.
function present_i_a(forms, stem, shch)
	-- shch - iotatate final т as щ, not ч
	-- iotate the stem
	local iotated_stem = com.iotation(stem, shch)

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "у"
	else
		forms = iotated_stem .. "ю"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "ат"
	else
		forms = stem .. "ят"
	end

	forms = stem .. "ишь"
	forms = stem .. "ит"
	forms = stem .. "им"
	forms = stem .. "ите"
end

function present_i_b(forms, stem, no_1sg_futr, shch)
	-- parameter no_1sg_futr - no 1st person singular future if no_1sg_futr = 1
	if not no_1sg_futr then
		no_1sg_futr = 0
	end

	-- parameter shch - iotatate final т as щ, not ч
	if not shch then
		shch = ""
	end

	-- iotate the stem
	local iotated_stem = com.iotation(stem, shch)

	-- Make 1st person future singular blank if no_1sg_futr = 1
	if no_1sg_futr == 1 then
		forms = ""
	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	elseif mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "у́"
	else
		forms = iotated_stem .. "ю́"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "а́т"
	else
		forms = stem .. "я́т"
	end

	forms = stem .. "и́шь"
	forms = stem .. "и́т"
	forms = stem .. "и́м"
	forms = stem .. "и́те"

end

function present_i_c(forms, stem, shch)
	-- shch - iotatate final т as щ, not ч

	local stem_noa = com.make_unstressed(stem)
	-- iotate the stem
	local iotated_stem = com.iotation(stem_noa, shch)

	-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
	if mw.ustring.find(iotated_stem, "$") then
		forms = iotated_stem .. "у́"
	else
		forms = iotated_stem .. "ю́"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "ат"
	else
		forms = stem .. "ят"
	end

	if mw.ustring.find(stem, "$") then
		forms = stem .. "ат"
	else
		forms = stem .. "ят"
	end

	forms = stem .. "ишь"
	forms = stem .. "ит"
	forms = stem .. "им"
	forms = stem .. "ите"
end

-- add alternative form stressed on the reflexive particle
function make_reflexive_alt(forms)

	for key, form in pairs(forms) do
		if form ~= "" then
			-- if a form doesn't contain a stress, add a stressed particle "ся́"
			if not mw.ustring.find(form, "") then
				-- only applies to past masculine forms
				if key == "past_m" or key == "past_m2" or key == "past_m3" then
					forms = form .. "ся́"
				end
			end
		end
	end
end

-- Add the reflexive particle to all verb forms
function make_reflexive(forms)
	for key, form in pairs(forms) do
		-- The particle is "сь" after a vowel, "ся" after a consonant
		-- append "ся" if "ся́" was not attached already
		if form ~= "" and not mw.ustring.find(form, "ся́$") then
			if mw.ustring.find(form, "$") then
				forms = form .. "сь"
			else
				forms = form .. "ся"
			end
		end
	end

	-- This form does not exist for reflexive verbs.
	forms = ""
end

-- Make the table
function make_table(forms, title, perf, intr, impers)
	local title = "Conjugation of <span lang=\"ru\" class=\"Cyrl\">''" .. forms .. "''</span>" .. (title and " (" .. title .. ")" or "")

	-- Intransitive verbs have no passive participles.
	if intr then
		forms = ""
		forms = nil
		forms = ""
		forms = nil
	end

	if impers then
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		--alternatives
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
	end

	-- Perfective verbs have no present forms.
	if perf then
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		--alternatives
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil

		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		-- alternatives
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
	else
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		-- alternatives
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
		forms = forms
	end

	local inf = forms
	local inf_tr = lang:transliterate(forms)

	-- Add transliterations to all forms
	for key, form in pairs(forms) do
		-- check for empty strings and nil's
		if form ~= "" and form then
			forms = "<span lang=\"ru\" class=\"Cyrl\">]</span><br/><span style=\"color: #888\">" .. lang:transliterate(form) .. "</span>"
		else
			forms = "&mdash;"
		end
	end

	if not perf then
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdu " .. inf_tr .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdešʹ " .. inf_tr .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdet " .. inf_tr .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdem " .. inf_tr .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdete " .. inf_tr .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. inf .. "</span><br/><span style=\"color: #888\">búdut " .. inf_tr .. "</span>"
	end

	-- only for "бы́ть" the future forms are бу́ду, бу́дешь, etc.
	if inf == "бы́ть" then
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. "</span><br/><span style=\"color: #888\">búdu " .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] " .. "</span><br/><span style=\"color: #888\">búdešʹ " .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] "  .. "</span><br/><span style=\"color: #888\">búdet " .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] "  .. "</span><br/><span style=\"color: #888\">búdem "  .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] "  .. "</span><br/><span style=\"color: #888\">búdete "  .. "</span>"
		forms = "<span lang=\"ru\" class=\"Cyrl\">] "  .. "</span><br/><span style=\"color: #888\">búdut "  .. "</span>"
	end

	if impers then
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		forms = ""
		--alternatives
		forms = nil
		forms = nil
		forms = nil
		forms = nil
		forms = nil
	end

	if forms ~= "&mdash;" then
		forms = forms .. ",<br/>" .. forms
	end
	-- alternative forms
	local alt_impr_sg = forms
	if forms then alt_impr_sg = forms .. ",<br/>" .. forms end
	local alt_impr_pl = forms
	if forms then alt_impr_pl = forms .. ",<br/>" .. forms end
	-- со́здал/созд́ал, п́ередал/переда́л, ́отдал/отд́ал
	local alt_past_m = forms
	if forms then alt_past_m = forms .. ",<br/>" .. forms end
	--for verbs with three past masculine sg forms: за́нялся, заня́лся, занялс́я (заня́ться)
	if forms then alt_past_m = alt_past_m .. ",<br/>" .. forms end
	-- short forms in 3a (исчез, сох, etc.)
	if forms then alt_past_m = forms .. ",<br/>" .. alt_past_m end
	local alt_past_f = forms
	if forms then alt_past_f = forms .. ",<br/>" .. forms end
	-- short forms in 3a (исчезла, сохла, etc.)
	if forms then alt_past_f = forms .. ",<br/>" .. alt_past_f end
	-- да́ло, дал́о; вз́яло, взяло́
	local alt_past_n = forms
	if forms then alt_past_n = forms .. ",<br/>" .. forms end
	-- short forms in 3a (исчезло, сохло, etc.)
	if forms then alt_past_n = forms .. ",<br/>" .. alt_past_n end
	-- разобрали́сь (разобрали́)
	local alt_past_pl = forms
	if forms then alt_past_pl = forms .. ",<br/>" .. forms end
	-- short forms in 3a (исчезли, сохли, etc.)
	if forms then alt_past_pl = forms .. ",<br/>" .. alt_past_pl end
	--
	-- тереть: тере́вши, тёрши, short: тере́в
	-- умереть: умере́вши, у́мерши, short: умере́в
	local alt_past_adv_part = forms
	if forms then alt_past_adv_part = forms .. ",<br/>" .. forms end
	-- сыпля, сыпя
	local alt_pres_adv_part = forms
	if forms and not perf then alt_pres_adv_part = forms .. ",<br/>" .. forms end

	local alt_pres_1sg = forms
	if forms and not perf then alt_pres_1sg = forms .. ",<br/>" .. forms end
	-- сыплешь, сыпешь
	local alt_pres_2sg = forms
	if forms and not perf then alt_pres_2sg = forms .. ",<br/>" .. forms end
	-- сыплет, сыпет
	local alt_pres_3sg = forms
	if forms and not perf then alt_pres_3sg = forms .. ",<br/>" .. forms end
	-- сыплем, сыпем
	local alt_pres_1pl = forms
	if forms and not perf then alt_pres_1pl = forms .. ",<br/>" .. forms end
	-- сыплете, сыпете
	local alt_pres_2pl = forms
	if forms and not perf then alt_pres_2pl = forms .. ",<br/>" .. forms end
	-- сыплют, сыпют
	local alt_pres_3pl = forms
	if forms and not perf then alt_pres_3pl = forms .. ",<br/>" .. forms end
	local alt_futr_1sg = forms
	if forms then alt_futr_1sg = forms .. ",<br/>" .. forms end
	-- насыплешь, насыпешь
	local alt_futr_2sg = forms
	if forms then alt_futr_2sg = forms .. ",<br/>" .. forms end
	-- насыплет, насыпет
	local alt_futr_3sg = forms
	if forms then alt_futr_3sg = forms .. ",<br/>" .. forms end
	-- насыплем, насыпем
	local alt_futr_1pl = forms
	if forms then alt_futr_1pl = forms .. ",<br/>" .. forms end
	-- насыплете, насыпете
	local alt_futr_2pl = forms
	if forms then alt_futr_2pl = forms .. ",<br/>" .. forms end
	-- насыплют, насыпют
	local alt_futr_3pl = forms
	if forms then alt_futr_3pl = forms .. ",<br/>" .. forms end

	local alt_pres_actv_part = forms
	if forms then alt_pres_actv_part = forms .. ",<br/>" .. forms end

	local alt_past_actv_part = forms
	if forms then alt_past_actv_part = forms .. ",<br/>" .. forms end

	local alt_pres_pasv_part = forms
	if forms then alt_pres_pasv_part = forms .. ",<br/>" .. forms end

	local alt_past_pasv_part = forms
	if forms then alt_past_pasv_part = forms .. ",<br/>" .. forms end

	return [=[<div class="NavFrame" style="width:49.6em;">
<div class="NavHead" style="text-align:left; background:#e0e0ff;">]=] .. title .. [=[</div>
<div class="NavContent">
{| class="inflection inflection-ru inflection-verb inflection-table"
|+ Note 1: for declension of participles, see their entries. Adverbial participles are indeclinable.
|- class="rowgroup"
! colspan="3" | ]=] .. (perf and ]]=] or ]]=]) .. [=[

|-
! ]
| colspan="2" | ]=] .. forms .. [=[

|- class="rowgroup"
! style="width:15em" | ]
! ]
! ]
|-
! ]
| ]=] .. alt_pres_actv_part .. =] .. alt_past_actv_part .. [=[

|-
! ]
| ]=] .. alt_pres_pasv_part .. =] .. alt_past_pasv_part .. [=[

|-
! ]
| ]=] .. alt_pres_adv_part .. =] .. alt_past_adv_part .. [=[

|- class="rowgroup"
!
! ]
! ]
|-
! ] ] (<span lang="ru" class="Cyrl">я</span>)
| ]=] .. alt_pres_1sg .. =] .. alt_futr_1sg .. [=[

|-
! ] ] (<span lang="ru" class="Cyrl">ты</span>)
| ]=] .. alt_pres_2sg .. =] .. alt_futr_2sg .. [=[

|-
! ] ] (<span lang="ru" class="Cyrl">он/она́/оно́</span>)
| ]=] .. alt_pres_3sg .. =] .. alt_futr_3sg .. [=[

|-
! ] ] (<span lang="ru" class="Cyrl">мы</span>)
| ]=] .. alt_pres_1pl .. =] .. alt_futr_1pl .. [=[

|-
! ] ] (<span lang="ru" class="Cyrl">вы</span>)
| ]=] .. alt_pres_2pl .. =] .. alt_futr_2pl .. [=[

|-
! ] ] (<span lang="ru" class="Cyrl">они́</span>)
| ]=] .. alt_pres_3pl .. =] .. alt_futr_3pl .. [=[

|- class="rowgroup"
! ]
! ]
! ]
|-
!
| ]=] .. alt_impr_sg .. =] .. alt_impr_pl .. [=[

|- class="rowgroup"
! ]
! ]
! ]<br/>(<span lang="ru" class="Cyrl">мы/вы/они́</span>)
|-
! ] (<span lang="ru" class="Cyrl">я/ты/он</span>)
| ]=] .. alt_past_m .. =] .. alt_past_pl .. [=[

|-
! ] (<span lang="ru" class="Cyrl">я/ты/она́</span>)
| ]=] .. alt_past_f .. [=[

|-
! style="background-color:#ffffe0; text-align:left;" | ] (<span lang="ru" class="Cyrl">оно́</span>)
| ]=] .. alt_past_n .. [=[

|}
</div>
</div>]=]
end

return export