. 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.
--[=[
This module contains functions for creating inflection tables for Russian
verbs.
]=]--
local com = require("Module:ru-common")
local translit = require("Module:ru-translit")
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 = {}
-- 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
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
local ret=''
if NAMESPACE == "" then
local sort_key = com.sort_key(PAGENAME)
ret = "]\n]'
end
return make_table(forms, title, perf, intr or refl, impers) .. ret
end
-- Auxiliary function to build piece of paradigm
function specforms(forms, spec, pref)
-- spec is a string in format "pres_actv_part=ющий pres_pasv_part=емый"
-- pref is optional
for k,e,v in spec:gmatch('(+)(%=?)(%S*)') do
forms = e~='' and (pref or '')..v or nil
end
end
--[=[
Conjugation functions
]=]--
conjugations = function(args)
local forms = {}
local categories = {"Russian class 1 verbs"}
local title = "class 1"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
specforms(forms,[=[
infinitive=ть
pres_actv_part=ющий
past_actv_part=вший
pres_pasv_part=емый
pres_adv_part=я
past_adv_part=вши past_adv_part_short=в
]=],stem);
present_je_a(forms, stem);
specforms(forms,[=[
impr_sg=й
impr_pl=йте
past_m=л past_f=ла past_n=ло past_pl=ли
]=],stem)
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 2 verbs"}
local title = "class 2"
local inf_stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = inf_stem
pres_stem = mw.ustring.gsub(pres_stem, "(́?)ва(́?)$","у%1%2")
forms = inf_stem .. "ть"
forms = pres_stem .. "ющий"
forms = inf_stem .. "вший"
forms = pres_stem .. "емый"
forms = pres_stem .. "я"
forms = inf_stem .. "вши"; forms = inf_stem .. "в"
present_je_a(forms, pres_stem)
forms = pres_stem .. "й"
forms = pres_stem .. "йте"
forms = inf_stem .. "л"
forms = inf_stem .. "ла"
forms = inf_stem .. "ло"
forms = inf_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 2 verbs"}
local title = "class 2"
local inf_stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = inf_stem
pres_stem = mw.ustring.gsub(pres_stem, "о(́?)ва(́?)$", "у%1%2")
pres_stem = mw.ustring.gsub(pres_stem, "е(́?)ва(́?)$", "ю%1%2")
local pres_stem_noa = com.remove_accents(pres_stem)
forms = inf_stem .. "ть"
forms = pres_stem_noa .. "ю́щий"
forms = inf_stem .. "вший"
forms = ""
forms = pres_stem_noa .. "я́"
forms = inf_stem .. "вши"; forms = inf_stem .. "в"
present_je_b(forms, pres_stem_noa)
forms = pres_stem .. "й"
forms = pres_stem .. "йте"
forms = inf_stem .. "л"
forms = inf_stem .. "ла"
forms = inf_stem .. "ло"
forms = inf_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 3 verbs"}
local title = "class 3"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- non-empty if no short past forms to be used
local no_short_past = args; if no_short_past == "" then no_short_past = nil end
-- non-empty if no short past participle forms to be used
local no_short_past_partcpl = args; if no_short_past_partcpl == "" then no_short_past_partcpl = nil end
-- "нь" if "-нь"/"-ньте" instead of "-ни"/"-ните" in the imperative
local impr_end = args
-- optional full infinitive form for verbs like достичь
local full_inf = args; if full_inf == "" then full_inf = nil end
-- optional short masculine past form for verbs like вять
local past_m_short = args; if past_m_short == "" then past_m_short = nil end
-- if full infinitive is not passed, build from the stem, otherwise use the optional parameter
if not full_inf then
forms = stem .. "нуть"
else
forms = full_inf
end
forms = stem .. "нущий"
forms = stem .. "нувший"
-- default is blank
forms = ""
forms = ""
forms = stem .. "нувши"; forms = stem .. "нув"
present_e_a(forms, stem .. "н")
-- "ни" or "нь"
forms = stem .. (impr_end or "ни")
forms = stem .. (impr_end or "ни") .. "те"
-- if the 4rd argument is empty, add short past active participle,
-- both short and long will be used
if no_short_past_partcpl then
forms = ""
else
forms = stem .. "ший"
end
forms = stem .. "нул"
forms = stem .. "нула"
forms = stem .. "нуло"
forms = stem .. "нули"
-- if the 3rd argument is empty add short past forms
if not no_short_past then
-- use long and short past forms
forms = stem
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
elseif no_short_past then
forms = ""
forms = ""
forms = ""
forms = ""
else -- default
forms = stem
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
end
-- if past_m_short is special, e.g. вять - вял, then use it, otherwise use the current value
forms = (past_m_short or forms)
if forms ~= "" then
forms = forms .. ", " .. forms
end
if forms ~= "" then
forms = forms .. ", " .. forms
end
if forms ~= "" then
forms = forms .. ", " .. forms
end
if forms ~= "" then
forms = forms .. ", " .. forms
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 3 verbs"}
local title = "class 3"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "у́ть"
forms = stem .. "у́щий"
forms = stem .. "у́вший"
forms = ""
forms = ""
forms = stem .. "у́вши"; forms = stem .. "у́в"
present_e_b(forms, stem)
forms = stem .. "и́"
forms = stem .. "и́те"
forms = stem .. "у́л"
forms = stem .. "у́ла"
forms = stem .. "у́ло"
forms = stem .. "у́ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 3 verbs"}
local title = "class 3"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- remove accent for some forms
local stem_noa = com.remove_accents(stem)
forms = stem_noa .. "у́ть"
forms = stem_noa .. "у́щий"
forms = stem_noa .. "у́вший"
forms = ""
forms = ""
forms = stem_noa .. "у́вши"; forms = stem_noa .. "у́в"
present_e_c(forms, stem)
forms = stem_noa .. "и́"
forms = stem_noa .. "и́те"
forms = stem_noa .. "у́л"
forms = stem_noa .. "у́ла"
forms = stem_noa .. "у́ло"
forms = stem_noa .. "у́ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 4 verbs"}
local title = "class 4"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- for "a" stress type "й" - after vowels, "ь" - after single consonants, "и" - after consonant clusters
local impr_end_param = args
-- optional parameter for verbs like похитить (похи́щу) (4a), защитить (защищу́) (4b), поглотить (поглощу́) (4c) with a different iotation (т -> щ, not ч)
local shch = args; if shch == "" then shch = nil end
--set defaults if nothing is passed, "й" for stems ending in a vowel, "ь" for single consonant ending, "и" for double consonant ending
-- "й" after any vowel, with or without an acute accent (беспоко́ить), no parameter passed
local impr_end = ""
if impr_end_param then
impr_end = impr_end_param
elseif mw.ustring.find(stem, "$") then
impr_end = "й"
-- "и" after two consonants in a row (мо́рщить, зафре́ндить), no parameter passed
elseif mw.ustring.find(stem, "$") then
impr_end = "и"
-- "ь" after a single consonant (бре́дить), no parameter passed
elseif mw.ustring.find(stem, "$") then
impr_end = "ь"
-- default
else --default
impr_end = "ь"
end
forms = stem .. "ить"
-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
if mw.ustring.find(stem, "$") then
forms = stem .. "ащий"
forms = stem .. "а"
-- use the passed parameter or default
forms = stem .. impr_end
forms = stem .. impr_end .. "те"
else
forms = stem .. "ящий"
forms = stem .. "я"
-- use the passed parameter or default
forms = stem .. impr_end
forms = stem .. impr_end .. "те"
end
forms = stem .. "ивший"
forms = stem .. "имый"
forms = stem .. "ивши"; forms = stem .. "ив"
-- if shch is nil, pass nothing, otherwise pass "щ"
if not shch then
present_i_a(forms, stem) -- param #3 must be a string
else -- tell the conjugator that this is an exception
present_i_a(forms, stem, shch)
end
forms = stem .. "ил"
forms = stem .. "ила"
forms = stem .. "ило"
forms = stem .. "или"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 4 verbs"}
local title = "class 4"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- optional parameter for verbs like похитить (похи́щу) (4a), защитить (защищу́) (4b), поглотить (поглощу́) (4c) with a different iotation (т -> щ, not ч)
local shch = args; if shch == "" then shch = nil end
-- some verbs don't have 1st person singular - победить, возродить, use "no_1sg_futr=1" in the template
local no_1sg_futr = "0"
local past_f = args
if not args then
no_1sg_futr = 0
elseif args == "1" then
no_1sg_futr = 1
else
no_1sg_futr = 0
end
forms = stem .. "и́ть"
-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
if mw.ustring.find(stem, "$") then
forms = stem .. "а́щий"
forms = stem .. "а́"
else
forms = stem .. "я́щий"
forms = stem .. "я́"
end
forms = stem .. "и́вший"
forms = stem .. "и́мый"
forms = stem .. "и́вши"; forms = stem .. "и́в"
-- if shch is nil, pass nothing, otherwise pass "щ"
if not shch then
present_i_b(forms, stem)
elseif no_1sg_futr then -- no 1st person future
present_i_b(forms, stem, no_1sg_futr)
else -- т-щ, not т-ч
present_i_b(forms, stem, 0, shch)
end
-- make 1st person future singular blank if no_1sg_futr = 1
if no_1sg_futr == 1 then
forms = ""
end
forms = stem .. "и́"
forms = stem .. "и́те"
forms = stem .. "и́л"
forms = stem .. "и́ло"
forms = stem .. "и́ли"
if past_f then
forms = past_f
else
forms = stem .. "и́ла"
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 4 verbs"}
local title = "class 4"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- optional parameter for verbs like похитить (похи́щу) (4a), защитить (защищу́) (4b), поглотить (поглощу́) (4c) with a different iotation (т -> щ, not ч)
local shch = args; if shch == "" then shch = nil end
-- remove accent for some forms
local stem_noa = com.remove_accents(stem)
-- replace consonants for 1st person singular present/future
local iotated_stem = com.iotation(stem_noa)
forms = stem_noa .. "и́ть"
forms = stem_noa .. "и́вший"
forms = stem_noa .. "и́мый"
forms = stem_noa .. "и́вши"; forms = stem_noa .. "и́в"
-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
if mw.ustring.find(stem, "$") then
forms = stem_noa .. "а́щий"
forms = stem_noa .. "а́"
else
forms = stem_noa .. "я́щий"
forms = stem_noa .. "я́"
end
forms = stem_noa .. "и́"
forms = stem_noa .. "и́те"
-- if shch is nil, pass nothing, otherwise pass "щ"
if not shch then
present_i_c(forms, stem) -- param #3 must be a string
else -- tell the conjugator that this is an exception
present_i_c(forms, stem, shch)
end
forms = stem_noa .. "и́л"
forms = stem_noa .. "и́ла"
forms = stem_noa .. "и́ло"
forms = stem_noa .. "и́ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 5 verbs"}
local title = "class 5"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- обидеть, выстоять have different past tense and infinitive forms
local past_stem = args; if past_stem == "" then past_stem = nil end
-- imperative ending, выгнать - выгони
local impr_end = args; if impr_end == "" then impr_end = nil end
if not past_stem then
past_stem = stem .. "е"
end
if not impr_end then
impr_end = "ь"
end
forms = past_stem .. "ть"
-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
if mw.ustring.find(stem, "$") then
forms = stem .. "ащий"
forms = stem .. "а"
else
forms = stem .. "ящий"
forms = stem .. "я"
end
forms = past_stem .. "вший"
forms = stem .. "имый"
forms = past_stem .. "вши"; forms = past_stem .. "в"
-- "й" after any vowel (e.g. выстоять), with or without an acute accent, otherwise "ь"
if mw.ustring.find(stem, "$") and impr_end == nil then
impr_end = "й"
end
forms = stem .. impr_end
forms = stem .. impr_end .. "те"
present_i_a(forms, stem)
forms = past_stem .. "л"
forms = past_stem .. "ла"
forms = past_stem .. "ло"
forms = past_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 5 verbs"}
local title = "class 5"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local past_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
-- irreg: лежать - лёжа
local pres_adv_part = args; if pres_adv_part == "" then pres_adv_part = nil end
if mw.ustring.find(stem, "$") then
forms = stem .. "а́щий"
else
forms = stem .. "я́щий"
end
-- override if passed as a parameter, e.g. лёжа
if pres_adv_part then
forms = pres_adv_part
elseif mw.ustring.find(stem, "$") and not pres_adv_part then
forms = stem .. "а́"
else
forms = stem .. "я́"
end
forms = past_stem .. "ть"
forms = past_stem .. "вший"
forms = past_stem .. "вши"; forms = past_stem .. "в"
forms = past_stem .. "л"
forms = past_stem .. "ла"
forms = past_stem .. "ло"
forms = past_stem .. "ли"
forms = "и́мый"
present_i_b(forms, stem)
-- "й" after any vowel (e.g. выстоять), with or without an acute accent, otherwise "ь"
local impr_end = "и́"
if mw.ustring.find(stem, "$") then
impr_end = "́й" -- the last vowel is stressed (an acute accent before "й")
end
forms = stem .. impr_end
forms = stem .. impr_end .. "те"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 5 verbs"}
local title = "class 5"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local past_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
-- e.g. гнать - гнала́
local fem_past = args; if fem_past == "" then fem_past = nil end
-- remove accent for some forms
local stem_noa = com.remove_accents(stem)
-- replace consonants for 1st person singular present/future
local iotated_stem = com.iotation(stem_noa)
forms = past_stem .. "ть"
forms = past_stem .. "вший"
forms = stem_noa .. "и́мый"
forms = past_stem .. "вши"; forms = past_stem .. "в"
-- Verbs ending in a hushing consonant do not get j-vowels in the endings.
if mw.ustring.find(stem, "$") then
forms = stem_noa .. "а́щий"
forms = stem_noa .. "а́"
else
forms = stem_noa .. "я́щий"
forms = stem_noa .. "я́"
end
forms = stem_noa .. "и́"
forms = stem_noa .. "и́те"
present_i_c(forms, stem)
-- some verbs have a different stress in the feminine past from, e.g. гнать - гнала
if not fem_past then
forms = past_stem .. "ла"
else
forms = fem_past
end
forms = past_stem .. "л"
forms = past_stem .. "ло"
forms = past_stem .. "ли"
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 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")
-- 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, stem)
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
conjugations = function(args)
local forms = {}
local categories = {"Russian class 7 verbs"}
local title = "class 7"
local full_inf = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_stem = args or (NAMESPACE == "Template" and "-") or error("Fourth parameter has not been provided")
local impr_sg = args or (NAMESPACE == "Template" and "-") or error("Fifth parameter has not been provided")
local past_adv_part = args or (NAMESPACE == "Template" and "-") or error("Sixth parameter has not been provided")
local past_m = args
local pres_adv_part = args
local past_actv_part = args
forms = full_inf
forms = pres_stem .. "ущий"
-- вычесть - "" (non-existent)
if past_actv_part then
forms = past_actv_part
else
forms = past_stem .. "ший"
end
-- лезть - ле́зши (non-existent)
if pres_adv_part then
forms = pres_adv_part
else
forms =pres_stem .. "я"
end
forms = ""
forms = past_adv_part; forms = ""
present_e_a(forms, pres_stem)
forms = impr_sg
forms = impr_sg .. "те"
-- 0 ending if the past stem ends in a consonant
if mw.ustring.find(past_stem, "$") then
forms = past_stem .. "л"
else
forms = past_stem
end
-- вычесть - вы́чел
if past_m then
forms = past_m
end
forms = past_stem .. "ла"
forms = past_stem .. "ло"
forms = past_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 7 verbs"}
local title = "class 7"
local full_inf = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_stem = args or (NAMESPACE == "Template" and "-") or error("Fourth parameter has not been provided")
local pres_pasv_part = args
local past_actv_part = args
local past_adv_part = args
local past_adv_part_short = args
local past_m = args
local past_n = args
local past_f = args
local past_pl = args
forms = full_inf
forms = pres_stem .. "у́щий"
forms = pres_stem .. "я́"
if past_actv_part then
forms = past_actv_part
else
forms = past_stem .. "ший"
end
if past_adv_part then
forms = past_adv_part
else
forms = past_stem .. "вши"
end
if past_adv_part_short then
forms = past_adv_part_short
else
forms = past_stem .. "в"
end
if pres_pasv_part then
forms = pres_pasv_part
else
forms = ""
end
present_e_b(forms, pres_stem)
forms = pres_stem .. "и́"
forms = pres_stem .. "и́те"
-- 0 ending if the past stem ends in a consonant
if mw.ustring.find(past_stem, "$") then
forms = past_stem .. "л"
else
forms = past_stem
end
if past_m then
forms = past_m
end
if past_f then
forms = past_f
else
forms = past_stem .. "ла"
end
if past_n then
forms = past_n
else
forms = past_stem .. "ло"
end
if past_pl then
forms = past_pl
else
forms = past_stem .. "ли"
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 8 verbs"}
local title = "class 8"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local full_inf = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_m = args or (NAMESPACE == "Template" and "-") or error("past_m parameter has not been provided")
-- if full infinitive is not passed, build from the stem, otherwise use the optional parameter
forms = full_inf
forms = stem .. "ущий"
forms = past_m .. "ший"
-- default is blank
forms = ""
forms = ""
forms = past_m .. "ши"; forms = ""
local iotated_stem = com.iotation(stem)
forms = stem .. "у"
forms = iotated_stem .. "ешь"
forms = iotated_stem .. "ет"
forms = iotated_stem .. "ем"
forms = iotated_stem .. "ете"
forms = stem .. "ут"
forms = stem .. "и"
forms = stem .. "ите"
forms = past_m
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 8 verbs"}
local title = "class 8"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local full_inf = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_m = args or (NAMESPACE == "Template" and "-") or error("past_m parameter has not been provided")
-- if full infinitive is not passed, build from the stem, otherwise use the optional parameter
forms = full_inf
forms = stem .. "у́щий"
forms = past_m .. "ший"
-- default is blank
forms = ""
forms = ""
forms = past_m .. "ши"; forms = ""
local iotated_stem = com.iotation(stem)
forms = stem .. "у́"
forms = stem .. "у́т"
forms = iotated_stem .. "ёшь"
forms = iotated_stem .. "ёт"
forms = iotated_stem .. "ём"
forms = iotated_stem .. "ёте"
forms = stem .. "и́"
forms = stem .. "и́те"
forms = past_m
forms = stem .. "ла́"
forms = stem .. "ло́"
forms = stem .. "ли́"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 9 verbs"}
local title = "class 9"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
forms = stem .. "еть"
-- prefective only
forms = ""
forms = ""
forms = ""
forms = stem .. "евший"
-- default is blank
forms = stem .. "евши"; forms = stem .. "ев"
present_e_a(forms, pres_stem)
forms = pres_stem .. "и"
forms = pres_stem .. "ите"
forms = stem
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 9 verbs"}
local title = "class 9"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_adv_part2 = args
-- remove stress, replace ё with е
local stem_noa = com.make_unstressed(stem)
forms = stem_noa .. "е́ть"
forms = pres_stem .. "у́щий"
forms = ""
forms = ""
forms = stem .. "ший"
-- default is blank
forms = stem_noa .. "е́вши"; forms = stem_noa .. "е́в"
--eg тереть - тёрши
if past_adv_part2 then
forms = past_adv_part2
end
present_e_b(forms, pres_stem)
forms = pres_stem .. "и́"
forms = pres_stem .. "и́те"
forms = stem
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 10 verbs"}
local title = "class 10"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "оть"
forms = ""
forms = stem .. "овший"
forms = ""
forms = ""
forms = stem .. "овши"; forms = stem .. "ов"
present_je_a(forms, stem)
forms = stem .. "и"
forms = stem .. "ите"
forms = stem .. "ол"
forms = stem .. "ола"
forms = stem .. "оло"
forms = stem .. "оли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 10 verbs"}
local title = "class 10"
local inf_stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
-- present tense stressed stem "моло́ть" - м́елет
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
-- remove accent for some forms
local pres_stem_noa = com.remove_accents(pres_stem)
forms = inf_stem .. "ть"
forms = pres_stem .. "ющий"
forms = inf_stem .. "вший"
forms = ""
forms = pres_stem_noa .. "я́"
forms = inf_stem .. "вши"; forms = inf_stem .. "в"
present_je_c(forms, pres_stem)
forms = pres_stem_noa .. "и́"
forms = pres_stem_noa .. "и́те"
forms = inf_stem .. "л"
forms = inf_stem .. "ла"
forms = inf_stem .. "ло"
forms = inf_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 11 verbs"}
local title = "class 11"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "ить"
-- prefective only
forms = ""
forms = ""
forms = ""
forms = stem .. "ивший"
-- default is blank
forms = stem .. "ивши"; forms = stem .. "ив"
forms = stem .. "ью"
forms = stem .. "ьешь"
forms = stem .. "ьет"
forms = stem .. "ьем"
forms = stem .. "ьете"
forms = stem .. "ьют"
forms = stem .. "ей"
forms = stem .. "ейте"
forms = stem .. "ил"
forms = stem .. "ила"
forms = stem .. "ило"
forms = stem .. "или"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 11 verbs"}
local title = "class 11"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local past_f = args
forms = stem .. "и́ть"
forms = pres_stem .. "ью́щий"
forms = ""
forms = pres_stem .. "ья́"
forms = stem .. "и́вший"
-- default is blank
forms = stem .. "и́вши"; forms = stem .. "и́в"
forms = pres_stem .. "ью́"
forms = pres_stem .. "ьёшь"
forms = pres_stem .. "ьёт"
forms = pres_stem .. "ьём"
forms = pres_stem .. "ьёте"
forms = pres_stem .. "ью́т"
forms = stem .. "е́й"
forms = stem .. "е́йте"
forms = stem .. "и́л"
forms = stem .. "и́ла"
forms = stem .. "и́ло"
forms = stem .. "и́ли"
-- пила́, лила́
if past_f then
forms =past_f
else
forms = stem .. "и́ла"
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 12 verbs"}
local title = "class 12"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
forms = stem .. "ть"
forms = pres_stem .. "ющий"
forms = pres_stem .. "емый"
forms = pres_stem .. "я"
forms = stem .. "вший"
-- default is blank
forms = stem .. "вши"; forms = stem .. "в"
forms = pres_stem .. "ю"
forms = pres_stem .. "ешь"
forms = pres_stem .. "ет"
forms = pres_stem .. "ем"
forms = pres_stem .. "ете"
forms = pres_stem .. "ют"
forms = pres_stem .. "й"
forms = pres_stem .. "йте"
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 12 verbs"}
local title = "class 12"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
-- гнила́ needs a parameter, default - пе́ла
local past_f = args
forms = stem .. "ть"
forms = pres_stem .. "ю́щий"
forms = ""
forms = pres_stem .. "я́"
forms = stem .. "вший"
-- default is blank
forms = stem .. "вши"; forms = stem .. "в"
forms = pres_stem .. "ю́"
forms = pres_stem .. "ёшь"
forms = pres_stem .. "ёт"
forms = pres_stem .. "ём"
forms = pres_stem .. "ёте"
forms = pres_stem .. "ю́т"
-- the preceding vowel is stressed
forms = pres_stem .. "́й"
forms = pres_stem .. "́йте"
-- гнила́
if past_f then
forms = past_f
else
forms = stem .. "ла"
end
forms = stem .. "л"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 13 verbs"}
local title = "class 13"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
forms = stem .. "ть"
forms = pres_stem .. "ю́щий"
forms = ""
forms = stem .. "я"
forms = stem .. "вший"
-- default is blank
forms = stem .. "вши"; forms = stem .. "в"
forms = pres_stem .. "ю́"
forms = pres_stem .. "ёшь"
forms = pres_stem .. "ёт"
forms = pres_stem .. "ём"
forms = pres_stem .. "ёте"
forms = pres_stem .. "ю́т"
-- the preceding vowel is stressed
forms = stem .. "́й"
forms = stem .. "́йте"
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
-- only one verb: вы́жать
local forms = {}
local categories = {"Russian class 14 verbs"}
local title = "class 14"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
forms = stem .. "ть"
-- perfective only
forms = ""
forms = ""
forms = ""
forms = stem .. "вший"
-- default is blank
forms = stem .. "вши"; forms = stem .. "в"
present_e_a(forms, pres_stem)
forms = pres_stem .. "и"
forms = pres_stem .. "ите"
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 14 verbs"}
local title = "class 14"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
-- заня́ться has three forms: за́нялся, зан́ялся, занялся́
local past_m = args
local past_m2 = args
local past_m3 = args
local past_f = args
local past_n = args
local past_n2 = args
local past_pl = args
local past_pl2 = args
forms = stem .. "ть"
forms = pres_stem .. "у́щий"
forms = ""
forms = pres_stem .. "я́"
forms = stem .. "вший"
forms = stem .. "вши"; forms = stem .. "в"
present_e_b(forms, pres_stem)
forms = pres_stem .. "и́"
forms = pres_stem .. "и́те"
if past_m then
forms = past_m
forms = past_m .. "о"
forms = past_m .. "и"
else
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
end
if past_f then
forms = past_f
end
-- override these if supplied
if past_n then
forms = past_n
end
if past_pl then
forms = past_pl
end
if past_m2 then
forms = past_m2
end
if past_m3 then
forms = past_m3
end
if past_n2 then
forms = past_n2
end
if past_pl2 then
forms = past_pl2
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 14 verbs"}
local title = "class 14"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
local pres_stem_noa = com.make_unstressed(pres_stem)
local past_m = args
local past_f = args
local past_n = args
local past_pl = args
local past_m2 = args
local past_n2 = args
local past_pl2 = args
forms = stem .. "ть"
forms = pres_stem .. "у́щий"
forms = ""
forms = pres_stem .. "я́"
forms = stem .. "вший"
forms = stem .. "вши"; forms = stem .. "в"
present_e_c(forms, pres_stem)
forms = pres_stem_noa .. "и́"
forms = pres_stem_noa .. "и́те"
if past_m then
forms = past_m
forms = past_m .. "о"
forms = past_m .. "и"
else
forms = stem .. "л"
forms = stem .. "ло"
forms = stem .. "ли"
end
if past_n then
forms = past_n
end
--изъя́ла but приняла́
if past_f then
forms = past_f
else
forms = stem .. "ла"
end
--two forms: при́нялся, принялс́я
if past_m2 then
forms = past_m2
end
if past_n2 then
forms = past_n2
end
if past_pl then
forms = past_pl
end
if past_pl2 then
forms = past_pl2
end
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 15 verbs"}
local title = "class 15"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "ть"
forms = stem .. "нущий"
forms = stem .. "вший"
forms = ""
forms = ""
forms = stem .. "вши"; forms = stem .. "в"
present_e_a(forms, stem .. "н")
forms = stem .. "нь"
forms = stem .. "ньте"
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 16 verbs"}
local title = "class 16"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "ть"
forms = stem .. "ву́щий"
forms = stem .. "вший"
forms = ""
forms = ""
forms = stem .. "вши"; forms = stem .. "в"
present_e_a(forms, stem .. "в")
forms = stem .. "ви"
forms = stem .. "вите"
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
local forms = {}
local categories = {"Russian class 16 verbs"}
local title = "class 16"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local stem_noa = com.make_unstressed(stem)
local past_n2 = args
local past_pl2 = args
forms = stem .. "ть"
forms = stem_noa .. "ву́щий"
forms = stem .. "вший"
forms = ""
forms = stem_noa .. "вя́"
forms = stem .. "вши"; forms = stem .. "в"
present_e_b(forms, stem_noa .. "в")
forms = stem_noa .. "ви́"
forms = stem_noa .. "ви́те"
forms = stem .. "л"
forms = stem_noa .. "ла́"
forms = stem .. "ло"
forms = stem .. "ли"
-- прижило́сь, прижи́лось
if past_n2 then
forms = past_n2
end
if past_pl2 then
forms = past_pl2
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from бежать with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "бежа́ть"
forms = prefix .. "бежа́вший"
forms = ""
forms = prefix .. "бежа́вши"; forms = prefix .. "бежа́в"
forms = prefix .. "бегу́щий"
forms = ""
forms = prefix .. "беги́"
forms = prefix .. "беги́те"
forms = prefix .. "бегу́"
forms = prefix .. "бежи́шь"
forms = prefix .. "бежи́т"
forms = prefix .. "бежи́м"
forms = prefix .. "бежи́те"
forms = prefix .. "бегу́т"
forms = prefix .. "бежа́л"
forms = prefix .. "бежа́ла"
forms = prefix .. "бежа́ло"
forms = prefix .. "бежа́ли"
-- вы́бежать (perfective)
if prefix == "вы́" then
forms = prefix .. "бежать"
forms = prefix .. "бежавший"
forms = prefix .. "бежавши"; forms = prefix .. "бежав"
forms = prefix .. "беги"
forms = prefix .. "бегите"
forms = prefix .. "бегу"
forms = prefix .. "бежишь"
forms = prefix .. "бежит"
forms = prefix .. "бежим"
forms = prefix .. "бежите"
forms = prefix .. "бегут"
forms = prefix .. "бежал"
forms = prefix .. "бежала"
forms = prefix .. "бежало"
forms = prefix .. "бежали"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from спать
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "спа́ть"
forms = prefix .. "спа́вший"
forms = ""
forms = prefix .. "спа́вши"; forms = prefix .. "спа́в"
forms = prefix .. "спя́щий"
forms = prefix .. "спя́"
forms = prefix .. "спи́"
forms = prefix .. "спи́те"
forms = prefix .. "сплю́"
forms = prefix .. "спи́шь"
forms = prefix .. "спи́т"
forms = prefix .. "спи́м"
forms = prefix .. "спи́те"
forms = prefix .. "спя́т"
forms = prefix .. "спа́л"
forms = prefix .. "спала́"
forms = prefix .. "спа́ло"
forms = prefix .. "спа́ли"
-- вы́спаться (perfective, reflexive), reflexive endings are added later
if prefix == "вы́" then
forms = prefix .. "спать"
forms = prefix .. "спавший"
forms = prefix .. "спавши"; forms = ""
forms = prefix .. "спи"
forms = prefix .. "спите"
forms = prefix .. "сплю"
forms = prefix .. "спишь"
forms = prefix .. "спит"
forms = prefix .. "спим"
forms = prefix .. "спите"
forms = prefix .. "спят"
forms = prefix .. "спал"
forms = prefix .. "спала"
forms = prefix .. "спало"
forms = prefix .. "спали"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from хотеть with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "хоте́ть"
forms = prefix .. "хоте́вший"
forms = ""
forms = prefix .. "хоте́вши"; forms = prefix .. "хоте́в"
forms = prefix .. "хотя́щий"
forms = prefix .. "хотя́"
forms = prefix .. "хоти́"
forms = prefix .. "хоти́те"
forms = prefix .. "хочу́"
forms = prefix .. "хо́чешь"
forms = prefix .. "хо́чет"
forms = prefix .. "хоти́м"
forms = prefix .. "хоти́те"
forms = prefix .. "хотя́т"
forms = prefix .. "хоте́л"
forms = prefix .. "хоте́ла"
forms = prefix .. "хоте́ло"
forms = prefix .. "хоте́ли"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from дать with the same stress pattern and вы́дать
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
-- alternative past masculine forms: со́здал/созд́ал, п́ередал/переда́л, ́отдал/отд́ал, etc.
local past_m = args
local past_m2 = args
local past_f = args
local past_n = args
local past_pl = args
forms = prefix .. "да́ть"
forms = prefix .. "да́вший"
forms = ""
forms = prefix .. "да́вши"; forms = prefix .. "да́в"
forms = "даю́щий"
forms = ""
forms = prefix .. "да́й"
forms = prefix .. "да́йте"
forms = prefix .. "да́м"
forms = prefix .. "да́шь"
forms = prefix .. "да́ст"
forms = prefix .. "дади́м"
forms = prefix .. "дади́те"
forms = prefix .. "даду́т"
forms = prefix .. "да́л"
-- пе́редал, ́отдал, пр́одал, з́адал, etc.
forms = past_m2
forms = prefix .. "дала́"
forms = prefix .. "да́ло"
forms = prefix .. "дало́" --same with "взять"
forms = prefix .. "да́ли"
-- вы́дать (perfective)
if prefix == "вы́" then
forms = prefix .. "дать"
forms = prefix .. "давший"
forms = prefix .. "давши"; forms = prefix .. "дав"
forms = prefix .. "дай"
forms = prefix .. "дайте"
forms = prefix .. "дам"
forms = prefix .. "дашь"
forms = prefix .. "даст"
forms = prefix .. "дадим"
forms = prefix .. "дадите"
forms = prefix .. "дадут"
forms = prefix .. "дал"
forms = prefix .. "дала"
forms = prefix .. "дало"
forms = prefix .. "дали"
end
if past_m then
forms = past_m
end
if past_f then
forms = past_f
end
if past_n then
forms = past_n
end
if past_pl then
forms = past_pl
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from есть
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "е́сть"
forms = prefix .. "е́вший"
forms = "едо́мый"
forms = prefix .. "е́вши"; forms = prefix .. "е́в"
forms = "едя́щий"
forms = "едя́"
forms = prefix .. "е́шь"
forms = prefix .. "е́шьте"
forms = prefix .. "е́м"
forms = prefix .. "е́шь"
forms = prefix .. "е́ст"
forms = prefix .. "еди́м"
forms = prefix .. "еди́те"
forms = prefix .. "едя́т"
forms = prefix .. "е́л"
forms = prefix .. "е́ла"
forms = prefix .. "е́ло"
forms = prefix .. "е́ли"
-- вы́есть (perfective)
if prefix == "вы́" then
forms = prefix .. "есть"
forms = prefix .. "евший"
forms = prefix .. "евши"; forms = prefix .. "ев"
forms = prefix .. "ешь"
forms = prefix .. "ешьте"
forms = prefix .. "ем"
forms = prefix .. "ешь"
forms = prefix .. "ест"
forms = prefix .. "едим"
forms = prefix .. "едите"
forms = prefix .. "едят"
forms = prefix .. "ел"
forms = prefix .. "ела"
forms = prefix .. "ело"
forms = prefix .. "ели"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from сыпать
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "сы́пать"
forms = prefix .. "сы́павший"
forms = ""
forms = prefix .. "сы́павши"; forms = prefix .. "сы́пав"
forms = prefix .. "сы́плющий"
forms = prefix .. "сы́пля"
forms = prefix .. "сы́пя"
forms = prefix .. "сы́пь"
forms = prefix .. "сы́пьте"
forms = prefix .. "сы́плю"
forms = prefix .. "сы́плешь"
forms = prefix .. "сы́пешь"
forms = prefix .. "сы́плет"
forms = prefix .. "сы́пет"
forms = prefix .. "сы́плем"
forms = prefix .. "сы́пем"
forms = prefix .. "сы́плете"
forms = prefix .. "сы́пете"
forms = prefix .. "сы́плют"
forms = prefix .. "сы́пют"
forms = prefix .. "сы́пал"
forms = prefix .. "сы́пала"
forms = prefix .. "сы́пало"
forms = prefix .. "сы́пали"
-- вы́сыпать (perfective), not to confuse with высыпа́ть (1a, imperfective)
if prefix == "вы́" then
forms = prefix .. "сыпать"
forms = prefix .. "сыпавший"
forms = prefix .. "сыпавши"; forms = prefix .. "сыпав"
forms = prefix .. "сыпь"
forms = prefix .. "сыпьте"
forms = prefix .. "сыплю"
forms = prefix .. "сыплешь"
forms = prefix .. "сыпешь"
forms = prefix .. "сыплет"
forms = prefix .. "сыпет"
forms = prefix .. "сыплем"
forms = prefix .. "сыпем"
forms = prefix .. "сыплете"
forms = prefix .. "сыпете"
forms = prefix .. "сыплют"
forms = prefix .. "сыпют"
forms = prefix .. "сыпал"
forms = prefix .. "сыпала"
forms = prefix .. "сыпало"
forms = prefix .. "сыпали"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from лгать with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "лга́ть"
forms = prefix .. "лга́вший"
forms = ""
forms = prefix .. "лга́вши"; forms = prefix .. "лга́в"
forms = prefix .. "лгу́щий"
forms = ""
forms = prefix .. "лги́"
forms = prefix .. "лги́те"
forms = prefix .. "лгу́"
forms = prefix .. "лжёшь"
forms = prefix .. "лжёт"
forms = prefix .. "лжём"
forms = prefix .. "лжёте"
forms = prefix .. "лгу́т"
forms = prefix .. "лга́л"
forms = prefix .. "лгала́"
forms = prefix .. "лга́ло"
forms = prefix .. "лга́ли"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from мочь with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local no_past_adv = "0"
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "мо́чь"
forms = prefix .. "мо́гший"
forms = ""
forms = ""; forms = ""
forms = prefix .. "мо́гущий"
forms = ""
forms = prefix .. "моги́"
forms = prefix .. "моги́те"
forms = prefix .. "могу́"
forms = prefix .. "мо́жешь"
forms = prefix .. "мо́жет"
forms = prefix .. "мо́жем"
forms = prefix .. "мо́жете"
forms = prefix .. "мо́гут"
forms = prefix .. "мо́г"
forms = prefix .. "могла́"
forms = prefix .. "могло́"
forms = prefix .. "могли́"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from слать
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "сла́ть"
forms = prefix .. "сла́вший"
forms = ""
forms = prefix .. "сла́вши"; forms = prefix .. "сла́в"
forms = prefix .. "шлю́щий"
forms = ""
forms = prefix .. "шли́"
forms = prefix .. "шли́те"
forms = prefix .. "шлю́"
forms = prefix .. "шлёшь"
forms = prefix .. "шлёт"
forms = prefix .. "шлём"
forms = prefix .. "шлёте"
forms = prefix .. "шлю́т"
forms = prefix .. "сла́л"
forms = prefix .. "сла́ла"
forms = prefix .. "сла́ло"
forms = prefix .. "сла́ли"
-- вы́слать (perfective)
if prefix == "вы́" then
forms = prefix .. "слать"
forms = prefix .. "славший"
forms = prefix .. "славши"; forms = prefix .. "слав"
forms = prefix .. "шли"
forms = prefix .. "шлите"
forms = prefix .. "шлю"
forms = prefix .. "шлешь"
forms = prefix .. "шлет"
forms = prefix .. "шлем"
forms = prefix .. "шлете"
forms = prefix .. "шлют"
forms = prefix .. "слал"
forms = prefix .. "слала"
forms = prefix .. "слало"
forms = prefix .. "слали"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from идти, including прийти́ and в́ыйти
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = ""
if prefix == "вы́" then
forms = prefix .. "йти"
forms = prefix .. "йди"
forms = prefix .. "йдите"
present_e_a(forms, prefix .. "йд")
forms = prefix .. "шедши"; forms = prefix .. "йдя"
elseif prefix == "при" then
forms = prefix .. "йти́"
forms = prefix .. "ди́"
forms = prefix .. "ди́те"
present_e_b(forms, prefix .. "д")
forms = prefix .. "ше́дши"; forms = prefix .. "дя́"
else
forms = prefix .. "йти́"
forms = prefix .. "иду́щий"
forms = prefix .. "йди́"
forms = prefix .. "йди́те"
present_e_b(forms, prefix .. "йд")
forms = prefix .. "ше́дши"; forms = prefix .. "йдя́"
end
-- only идти, present imperfective
if prefix == "" then
--only used with imperfective идти
forms = "идя́"
forms = "иду́щий"
forms = "идти́"
forms = "иду́щий"
forms = "иди́"
forms = "иди́те"
present_e_b(forms, "ид")
forms = "ше́дши"; forms = ""
end
-- вы́йти (perfective)
if prefix == "вы́" then
forms = prefix .. "шедший"
forms = prefix .. "шел"
forms = prefix .. "шла"
forms = prefix .. "шло"
forms = prefix .. "шли"
else
forms = prefix .. "ше́дший"
forms = prefix .. "шёл"
forms = prefix .. "шла́"
forms = prefix .. "шло́"
forms = prefix .. "шли́"
end
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from ехать
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local pres_stem = prefix .. "е́д"
local past_stem = prefix .. "е́х"
-- вы́ехать
if prefix == "вы́" then
pres_stem = prefix .. "ед"
past_stem = prefix .. "ех"
end
forms = past_stem .. "ать"
forms = past_stem .. "авший"
forms = ""
forms = past_stem .. "авши"; forms = past_stem .. "ав"
--вы́ехать has no present
forms = pres_stem .. "ущий"
forms = ""
--literary (special) imperative forms for ехать are поезжа́й, поезжа́йте
if prefix == "" then
forms = "поезжа́й"
forms = "поезжа́йте"
forms = "езжа́й"
forms = "езжа́йте"
elseif prefix == "вы́" then
forms = "выезжа́й"
forms = "выезжа́йте"
else
forms = prefix .. "езжа́й"
forms = prefix .. "езжа́йте"
end
present_e_a(forms, pres_stem)
forms = past_stem .. "ал"
forms = past_stem .. "ала"
forms = past_stem .. "ало"
forms = past_stem .. "али"
return forms, title, categories
end
conjugations = function(args)
-- for the irregular verb "ми́нуть"
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local stem_noa = com.make_unstressed(stem)
forms = stem .. "уть"
forms = stem .. "у́щий"
forms = stem_noa .. "у́вший"
forms = stem .. "увший"
forms = ""
forms = ""
forms = stem_noa .. "у́вши"; forms = stem_noa .. "у́в"
forms = stem .. "увши"; forms = stem .. "ув"
present_e_c(forms, stem)
-- no imperative
forms = ""
forms = ""
forms = stem_noa .. "у́л"
forms = stem_noa .. "у́ла"
forms = stem_noa .. "у́ло"
forms = stem_noa .. "у́ли"
forms = stem .. "ул"
forms = stem .. "ула"
forms = stem .. "уло"
forms = stem .. "ули"
return forms, title, categories
end
conjugations = function(args)
-- for irregular verbs "живописа́ть" and "минова́ть", mixture of types 1 and 2
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local inf_stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local pres_stem = args or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided")
forms = inf_stem .. "ть"
forms = pres_stem .. "ющий"
forms = inf_stem .. "вший"
forms = ""
forms = pres_stem .. "я"
forms = inf_stem .. "вши"; forms = inf_stem .. "в"
present_je_a(forms, pres_stem)
forms = pres_stem .. "й"
forms = pres_stem .. "йте"
forms = inf_stem .. "л"
forms = inf_stem .. "ла"
forms = inf_stem .. "ло"
forms = inf_stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from лечь with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "ле́чь"
forms = prefix .. "лёгший"
forms = ""
forms = prefix .. "лёгши"; forms = ""
forms = ""
forms = ""
forms = prefix .. "ля́г"
forms = prefix .. "ля́гте"
forms = prefix .. "ля́гу"
forms = prefix .. "ля́жешь"
forms = prefix .. "ля́жет"
forms = prefix .. "ля́жем"
forms = prefix .. "ля́жете"
forms = prefix .. "ля́гут"
forms = prefix .. "лёг"
forms = prefix .. "легла́"
forms = prefix .. "легло́"
forms = prefix .. "легли́"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from зиждиться with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "зи́ждить"
forms = prefix .. "зи́ждивший"
forms = ""
forms = prefix .. "зи́ждивши"; forms = ""
forms = prefix .. "зи́ждущий"
forms = prefix .. "зи́ждя"
forms = prefix .. "зи́жди"
forms = prefix .. "зи́ждите"
forms = prefix .. "зи́жду"
forms = prefix .. "зи́ждешь"
forms = prefix .. "зи́ждет"
forms = prefix .. "зи́ждем"
forms = prefix .. "зи́ждете"
forms = prefix .. "зи́ждут"
forms = prefix .. "зи́ждил"
forms = prefix .. "зи́ждила"
forms = prefix .. "зи́ждило"
forms = prefix .. "зи́ждили"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from клясть with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. "кля́сть"
forms = prefix .. "кля́вший"
forms = prefix .. "кляну́щий"
forms = prefix .. "кля́вши"; forms =prefix .. "кля́в"
forms = prefix .. "кляну́щий"
forms = prefix .. "кляня́"
forms = prefix .. "кляни́"
forms = prefix .. "кляни́те"
forms = prefix .. "кляну́"
forms = prefix .. "клянёшь"
forms = prefix .. "клянёт"
forms = prefix .. "клянём"
forms = prefix .. "клянёте"
forms = prefix .. "кляну́т"
if args then
forms = args
forms = args .. "о"
forms = args .. "и"
else
forms = prefix .. "кля́л"
forms = prefix .. "кля́ло"
forms = prefix .. "кля́ли"
end
forms = prefix .. "кляла́"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for isolated verbs derived from слыхать or видать with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
forms = stem .. "ть"
forms = stem .. "вший"
forms = ""
forms = stem .. "вши"; forms = stem .. "в"
-- no present forms or imperatives
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = ""
forms = stem .. "л"
forms = stem .. "ла"
forms = stem .. "ло"
forms = stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from стелить and стлать with the same stress pattern
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local stem = args or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided")
local prefix = args; if not prefix then prefix = "" end
forms = prefix .. stem .. "ть"
forms = prefix .. stem .. "вший"
forms = prefix .. "стели́мый"
forms = prefix .. stem .. "вши"; forms = prefix .. stem .. "в"
forms = prefix .. "сте́лющий"
forms = prefix .. "стеля́"
forms = prefix .. "стели́"
forms = prefix .. "стели́те"
forms = prefix .. "стелю́"
forms = prefix .. "сте́лешь"
forms = prefix .. "сте́лет"
forms = prefix .. "сте́лем"
forms = prefix .. "сте́лете"
forms = prefix .. "сте́лют"
forms = prefix .. stem .. "л"
forms = prefix .. stem .. "ла"
forms = prefix .. stem .. "ло"
forms = prefix .. stem .. "ли"
return forms, title, categories
end
conjugations = function(args)
-- irregular, only for verbs derived from быть with various stress patterns, the actual verb быть different from its derivatives
local forms = {}
local categories = {"Russian irregular verbs"}
local title = "irregular"
local prefix = args; if not prefix then prefix = "" end
local past_m = args
local past_f = args
local past_n = args
local past_pl = args
if prefix == ""
then forms = "бы́ть"
else
forms = prefix .. "бы́ть"
end
forms = prefix .. "бы́вший"
forms = ""
--only for "бы́ть" - бу́дучи
if forms == "бы́ть" then
forms = "бу́дучи"; forms = ""
end
forms = prefix .. "бы́вши"; forms = prefix .. "бы́в"
-- if the prefix is stressed
if mw.ustring.find(prefix, "") then
forms = prefix .. "бывши"; forms = prefix .. "быв"
end
forms = "су́щий"
forms = ""
forms = prefix .. "бу́дь"
forms = prefix .. "бу́дьте"
-- only for "бы́ть", some forms are archaic
if forms == "бы́ть" then
forms = "есмь"
forms = "еси́"
forms = "есть"
forms = "есмы́"
forms = "е́сте"
forms = "суть"
else
forms = prefix .. "бу́ду"
forms = prefix .. "бу́дешь"
forms = prefix .. "бу́дет"
forms = prefix .. "бу́дем"
forms = prefix .. "бу́дете"
forms = prefix .. "бу́дут"
end
-- if the prefix is stressed, e.g. "вы́быть"
if mw.ustring.find(prefix, "") then
forms = prefix .. "буду"
forms = prefix .. "будешь"
forms = prefix .. "будет"
forms = prefix .. "будем"
forms = prefix .. "будете"
forms = prefix .. "будут"
end
forms = prefix .. "бы́л"
forms = prefix .. "была́"
forms = prefix .. "бы́ло"
forms = prefix .. "бы́ли"
-- if the prefix is stressed
if mw.ustring.find(prefix, "") then
forms = prefix .. "был"
forms = prefix .. "была"
forms = prefix .. "было"
forms = prefix .. "были"
end
-- при́был
if past_m then
forms = past_m
end
-- прибыла́
if past_f then
forms = past_f
end
-- сбыло́сь
if past_n then
forms = past_n
end
-- сбыли́сь
if past_pl then
forms = past_pl
end
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)
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 .. "ете"
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\">''%s''</span>%s"):format( forms, 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 = translit.tr(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\">" .. translit.tr(form) .. "</span>"
else
forms = "—"
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 ~= "—" then
forms = forms .. ",<br/>" .. forms
end
-- collect forms specified explicitly
for k,v in pairs(args) do
if type(k)=='string' then
local base,n = k:match('^(.*)(%d)$') -- alternative forms, from 2
if n then --build table of alt-forms
n=tonumber(n)
if type(forms)=='table' then
forms = v
else
forms = { =forms; =v }
end
else
if type(forms)=='table' then
forms = v
else
forms = v
end
end
end
end
-- concatenate alt-forms
for k, v in forms do
if type(v) == 'table' then forms = table.concat(v,',<br/>') end
end
return table.concat({[=[<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"
|+ 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