text:
Module:User:Ignatus/ru-verb/sandbox

--[=[   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[1] 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[1] 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["reflex_stress"] -- "ся́" local forms, title, categories if conjugations[conj_type] then forms, title, categories = conjugations[conj_type](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=]+)(%=?)(%S*)') do       forms[k] = e~= and (pref or )..v or nil end end

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

conjugations["1a"] = function(args) local forms = {} local categories = {"Russian class 1 verbs"} local title = "class 1" local stem = args[2] 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["2a"] = function(args) local forms = {} local categories = {"Russian class 2 verbs"} local title = "class 2" local inf_stem = args[2] 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["infinitive"] = inf_stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ющий" forms["past_actv_part"] = inf_stem .. "вший" forms["pres_pasv_part"] = pres_stem .. "емый" forms["pres_adv_part"] = pres_stem .. "я" forms["past_adv_part"] = inf_stem .. "вши"; forms["past_adv_part_short"] = inf_stem .. "в" present_je_a(forms, pres_stem) forms["impr_sg"] = pres_stem .. "й" forms["impr_pl"] = pres_stem .. "йте" forms["past_m"] = inf_stem .. "л" forms["past_f"] = inf_stem .. "ла" forms["past_n"] = inf_stem .. "ло" forms["past_pl"] = inf_stem .. "ли" return forms, title, categories end

conjugations["2b"] = function(args) local forms = {} local categories = {"Russian class 2 verbs"} local title = "class 2" local inf_stem = args[2] 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["infinitive"] = inf_stem .. "ть" forms["pres_actv_part"] = pres_stem_noa .. "ю́щий" forms["past_actv_part"] = inf_stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem_noa .. "я́" forms["past_adv_part"] = inf_stem .. "вши"; forms["past_adv_part_short"] = inf_stem .. "в" present_je_b(forms, pres_stem_noa) forms["impr_sg"] = pres_stem .. "й" forms["impr_pl"] = pres_stem .. "йте" forms["past_m"] = inf_stem .. "л" forms["past_f"] = inf_stem .. "ла" forms["past_n"] = inf_stem .. "ло" forms["past_pl"] = inf_stem .. "ли" return forms, title, categories end

conjugations["3a"] = function(args) local forms = {} local categories = {"Russian class 3 verbs"} local title = "class 3" local stem = args[2] 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[3]; 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[4]; if no_short_past_partcpl == "" then no_short_past_partcpl = nil end -- "нь" if "-нь"/"-ньте" instead of "-ни"/"-ните" in the imperative local impr_end = args[5] -- optional full infinitive form for verbs like достичь local full_inf = args[6]; if full_inf == "" then full_inf = nil end -- optional short masculine past form for verbs like вять local past_m_short = args[7]; 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["infinitive"] = stem .. "нуть" else forms["infinitive"] = full_inf end forms["pres_actv_part"] = stem .. "нущий" forms["past_actv_part"] = stem .. "нувший" -- default is blank forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem .. "нувши"; forms["past_adv_part_short"] = stem .. "нув" present_e_a(forms, stem .. "н") -- "ни" or "нь" forms["impr_sg"] = stem .. (impr_end or "ни") forms["impr_pl"] = 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["past_actv_part_short"] = "" else forms["past_actv_part_short"] = stem .. "ший" end forms["past_m"] = stem .. "нул" forms["past_f"] = stem .. "нула" forms["past_n"] = stem .. "нуло" forms["past_pl"] = stem .. "нули" -- if the 3rd argument is empty add short past forms if not no_short_past then -- use long and short past forms forms["past_m_short"] = stem forms["past_f_short"] = stem .. "ла" forms["past_n_short"] = stem .. "ло" forms["past_pl_short"] = stem .. "ли" elseif no_short_past then forms["past_m_short"] = "" forms["past_f_short"] = "" forms["past_n_short"] = "" forms["past_pl_short"] = "" else   -- default forms["past_m_short"] = stem forms["past_f_short"] = stem .. "ла" forms["past_n_short"] = stem .. "ло" forms["past_pl_short"] = stem .. "ли" end -- if past_m_short is special, e.g. вять - вял, then use it, otherwise use the current value forms["past_m_short"] = (past_m_short or forms["past_m_short"]) if forms["past_m_short"] ~= "" then forms["past_m"] = forms["past_m_short"] .. ", " .. forms["past_m"] end if forms["past_f_short"] ~= "" then forms["past_f"] = forms["past_f_short"] .. ", " .. forms["past_f"] end if forms["past_n_short"] ~= "" then forms["past_n"] = forms["past_n_short"] .. ", " .. forms["past_n"] end if forms["past_pl_short"] ~= "" then forms["past_pl"] = forms["past_pl_short"] .. ", " .. forms["past_pl"] end return forms, title, categories end

conjugations["3b"] = function(args) local forms = {} local categories = {"Russian class 3 verbs"} local title = "class 3" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "у́ть" forms["pres_actv_part"] = stem .. "у́щий" forms["past_actv_part"] = stem .. "у́вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem .. "у́вши"; forms["past_adv_part_short"] = stem .. "у́в" present_e_b(forms, stem) forms["impr_sg"] = stem .. "и́" forms["impr_pl"] = stem .. "и́те" forms["past_m"] = stem .. "у́л" forms["past_f"] = stem .. "у́ла" forms["past_n"] = stem .. "у́ло" forms["past_pl"] = stem .. "у́ли" return forms, title, categories end

conjugations["3c"] = function(args) local forms = {} local categories = {"Russian class 3 verbs"} local title = "class 3" local stem = args[2] 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["infinitive"] = stem_noa .. "у́ть" forms["pres_actv_part"] = stem_noa .. "у́щий" forms["past_actv_part"] = stem_noa .. "у́вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem_noa .. "у́вши"; forms["past_adv_part_short"] = stem_noa .. "у́в" present_e_c(forms, stem) forms["impr_sg"] = stem_noa .. "и́" forms["impr_pl"] = stem_noa .. "и́те" forms["past_m"] = stem_noa .. "у́л" forms["past_f"] = stem_noa .. "у́ла" forms["past_n"] = stem_noa .. "у́ло" forms["past_pl"] = stem_noa .. "у́ли" return forms, title, categories end

conjugations["4a"] = function(args) local forms = {} local categories = {"Russian class 4 verbs"} local title = "class 4" local stem = args[2] 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[3] -- optional parameter for verbs like похитить (похи́щу) (4a), защитить (защищу́) (4b), поглотить (поглощу́) (4c) with a different iotation (т -> щ, not ч) local shch = args[4]; 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["infinitive"] = stem .. "ить" -- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem .. "ащий" forms["pres_adv_part"] = stem .. "а" -- use the passed parameter or default forms["impr_sg"] = stem .. impr_end forms["impr_pl"] = stem .. impr_end .. "те" else forms["pres_actv_part"] = stem .. "ящий" forms["pres_adv_part"] = stem .. "я" -- use the passed parameter or default forms["impr_sg"] = stem .. impr_end forms["impr_pl"] = stem .. impr_end .. "те" end forms["past_actv_part"] = stem .. "ивший" forms["pres_pasv_part"] = stem .. "имый" forms["past_adv_part"] = stem .. "ивши"; forms["past_adv_part_short"] = 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["past_m"] = stem .. "ил" forms["past_f"] = stem .. "ила" forms["past_n"] = stem .. "ило" forms["past_pl"] = stem .. "или" return forms, title, categories end

conjugations["4b"] = function(args) local forms = {} local categories = {"Russian class 4 verbs"} local title = "class 4" local stem = args[2] 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[3]; 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["past_f"] if not args["no_1sg_futr"] then no_1sg_futr = 0 elseif args["no_1sg_futr"] == "1" then no_1sg_futr = 1 else no_1sg_futr = 0 end forms["infinitive"] = stem .. "и́ть" -- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem .. "а́щий" forms["pres_adv_part"] = stem .. "а́" else forms["pres_actv_part"] = stem .. "я́щий" forms["pres_adv_part"] = stem .. "я́" end forms["past_actv_part"] = stem .. "и́вший" forms["pres_pasv_part"] = stem .. "и́мый" forms["past_adv_part"] = stem .. "и́вши"; forms["past_adv_part_short"] = 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["pres_futr_1sg"] = "" end forms["impr_sg"] = stem .. "и́" forms["impr_pl"] = stem .. "и́те" forms["past_m"] = stem .. "и́л" forms["past_n"] = stem .. "и́ло" forms["past_pl"] = stem .. "и́ли" if past_f then forms["past_f"] = past_f else forms["past_f"] = stem .. "и́ла" end return forms, title, categories end

conjugations["4c"] = function(args) local forms = {} local categories = {"Russian class 4 verbs"} local title = "class 4" local stem = args[2] 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[3]; 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["infinitive"] = stem_noa .. "и́ть" forms["past_actv_part"] = stem_noa .. "и́вший" forms["pres_pasv_part"] = stem_noa .. "и́мый" forms["past_adv_part"] = stem_noa .. "и́вши"; forms["past_adv_part_short"] = stem_noa .. "и́в"

-- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem_noa .. "а́щий" forms["pres_adv_part"] = stem_noa .. "а́" else forms["pres_actv_part"] = stem_noa .. "я́щий" forms["pres_adv_part"] = stem_noa .. "я́" end

forms["impr_sg"] = stem_noa .. "и́" forms["impr_pl"] = 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["past_m"] = stem_noa .. "и́л" forms["past_f"] = stem_noa .. "и́ла" forms["past_n"] = stem_noa .. "и́ло" forms["past_pl"] = stem_noa .. "и́ли" return forms, title, categories end

conjugations["5a"] = function(args) local forms = {} local categories = {"Russian class 5 verbs"} local title = "class 5" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") -- обидеть, выстоять have different past tense and infinitive forms local past_stem = args[3]; if past_stem == "" then past_stem = nil end -- imperative ending, выгнать - выгони local impr_end = args[4]; 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["infinitive"] = past_stem .. "ть" -- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem .. "ащий" forms["pres_adv_part"] = stem .. "а" else forms["pres_actv_part"] = stem .. "ящий" forms["pres_adv_part"] = stem .. "я" end forms["past_actv_part"] = past_stem .. "вший" forms["pres_pasv_part"] = stem .. "имый" forms["past_adv_part"] = past_stem .. "вши"; forms["past_adv_part_short"] = 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["impr_sg"] = stem .. impr_end forms["impr_pl"] = stem .. impr_end .. "те" present_i_a(forms, stem) forms["past_m"] = past_stem .. "л" forms["past_f"] = past_stem .. "ла" forms["past_n"] = past_stem .. "ло" forms["past_pl"] = past_stem .. "ли" return forms, title, categories end conjugations["5b"] = function(args) local forms = {} local categories = {"Russian class 5 verbs"} local title = "class 5" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local past_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") -- irreg: лежать - лёжа local pres_adv_part = args[4]; if pres_adv_part == "" then pres_adv_part = nil end if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem .. "а́щий" else forms["pres_actv_part"] = stem .. "я́щий" end -- override if passed as a parameter, e.g. лёжа if pres_adv_part then forms["pres_adv_part"] = pres_adv_part elseif mw.ustring.find(stem, "[шщжч]$") and not pres_adv_part then forms["pres_adv_part"] = stem .. "а́" else forms["pres_adv_part"] = stem .. "я́" end forms["infinitive"] = past_stem .. "ть" forms["past_actv_part"] = past_stem .. "вший" forms["past_adv_part"] = past_stem .. "вши"; forms["past_adv_part_short"] = past_stem .. "в" forms["past_m"] = past_stem .. "л" forms["past_f"] = past_stem .. "ла" forms["past_n"] = past_stem .. "ло" forms["past_pl"] = past_stem .. "ли" forms["pres_pasv_part"] = "и́мый" 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["impr_sg"] = stem .. impr_end forms["impr_pl"] = stem .. impr_end .. "те" return forms, title, categories end conjugations["5c"] = function(args) local forms = {} local categories = {"Russian class 5 verbs"} local title = "class 5" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local past_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") -- e.g. гнать - гнала́ local fem_past = args[4]; 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["infinitive"] = past_stem .. "ть" forms["past_actv_part"] = past_stem .. "вший" forms["pres_pasv_part"] = stem_noa .. "и́мый" forms["past_adv_part"] = past_stem .. "вши"; forms["past_adv_part_short"] = past_stem .. "в" -- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(stem, "[шщжч]$") then forms["pres_actv_part"] = stem_noa .. "а́щий" forms["pres_adv_part"] = stem_noa .. "а́" else forms["pres_actv_part"] = stem_noa .. "я́щий" forms["pres_adv_part"] = stem_noa .. "я́" end forms["impr_sg"] = stem_noa .. "и́" forms["impr_pl"] = 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_f"] = past_stem .. "ла" else forms["past_f"] = fem_past end forms["past_m"] = past_stem .. "л" forms["past_n"] = past_stem .. "ло" forms["past_pl"] = past_stem .. "ли" return forms, title, categories end

conjugations["6a"] = function(args) local forms = {} local categories = {"Russian class 6 verbs"} local title = "class 6" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local impr_end = args[3]; 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[4]; if impr_sg == "" then impr_sg = nil end -- optional full infinitive form for verbs like колебать local full_inf = args[5]; if full_inf == "" then full_inf = nil end -- no iotation, e.g. вырвать - вы́рву local no_iotation = nil if args["no_iotation"] == "1" then no_iotation = "1" end -- вызвать - вы́зову (в́ызов) local pres_stem = args["pres_stem"]; 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["pres_actv_part"] = iotated_stem .. "ущий" else forms["pres_actv_part"] = iotated_stem .. "ющий" end if mw.ustring.find(iotated_stem, "[шщжч]$") then forms["pres_adv_part"] = iotated_stem .. "а" else forms["pres_adv_part"] = iotated_stem .. "я" end if no_iotation then forms["pres_adv_part"] = pres_stem .. "я" end if mw.ustring.find(stem, "[аэыоуяеиёю́]$") then forms["infinitive"] = stem .. "ять" forms["past_actv_part"] = stem .. "явший" forms["past_adv_part"] = stem .. "явши"; forms["past_adv_part_short"] = stem .. "яв" forms["past_m"] = stem .. "ял" forms["past_f"] = stem .. "яла" forms["past_n"] = stem .. "яло" forms["past_pl"] = stem .. "яли" else forms["infinitive"] = stem .. "ать" forms["past_actv_part"] = stem .. "авший" forms["past_adv_part"] = stem .. "авши"; forms["past_adv_part_short"] = stem .. "ав" forms["past_m"] = stem .. "ал" forms["past_f"] = stem .. "ала" forms["past_n"] = stem .. "ало" forms["past_pl"] = stem .. "али" end -- if full infinitive is not passed, build from the stem, otherwise use the optional parameter if full_inf then forms["infinitive"] = full_inf end if no_iotation then forms["pres_pasv_part"] = stem .. "емый" else forms["pres_pasv_part"] = 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["impr_sg"] = pres_stem .. impr_end forms["impr_pl"] = pres_stem .. impr_end .. "те" else forms["impr_sg"] = iotated_stem .. impr_end forms["impr_pl"] = iotated_stem .. impr_end .. "те" end -- irreg: сыпать - сыпь, сыпьте if impr_sg then forms["impr_sg"] = impr_sg forms["impr_pl"] = impr_sg .. "те" end return forms, title, categories end

conjugations["6b"] = function(args) local forms = {} local categories = {"Russian class 6 verbs"} local title = "class 6" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") -- звать - зов, драть - дер local pres_stem = args[3]; if pres_stem == "" or not pres_stem then pres_stem = stem end local past_f = args[4]; if past_f == "" then past_f = nil end local past_n2 = args["past_n2"] local past_pl2 = args["past_pl2"]

forms["pres_pasv_part"] = "" 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["impr_sg"] = pres_stem .. impr_end forms["impr_pl"] = pres_stem .. impr_end .. "те"

if mw.ustring.find(pres_stem, "[шщжч]$") then forms["pres_adv_part"] = pres_stem .. "а́" else forms["pres_adv_part"] = pres_stem .. "я́" end

if mw.ustring.find(pres_stem, "[аэыоуяеиёю́]$") then forms["pres_actv_part"] = pres_stem .. "ю́щий" else forms["pres_actv_part"] = pres_stem .. "у́щий" end if mw.ustring.find(stem, "[аэыоуяеиёю́]$") then forms["infinitive"] = stem .. "я́ть" forms["past_actv_part"] = stem .. "я́вший" forms["past_adv_part"] = stem .. "я́вши"; forms["past_adv_part_short"] = stem .. "́яв" forms["past_m"] = stem .. "я́л" forms["past_f"] = stem .. "я́ла" forms["past_n"] = stem .. "я́ло" forms["past_pl"] = stem .. "я́ли" else forms["infinitive"] = stem .. "а́ть" forms["past_actv_part"] = stem .. "а́вший" forms["past_adv_part"] = stem .. "а́вши"; forms["past_adv_part_short"] = stem .. "а́в" forms["past_m"] = stem .. "а́л" forms["past_f"] = stem .. "а́ла" forms["past_n"] = stem .. "а́ло" forms["past_pl"] = stem .. "а́ли" end

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

conjugations["6c"] = function(args) local forms = {} local categories = {"Russian class 6 verbs"} local title = "class 6" local stem = args[2] 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["infinitive"] = stem_noa .. "а́ть" forms["past_actv_part"] = stem_noa .. "а́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = stem_noa .. "а́вши"; forms["past_adv_part_short"] = stem_noa .. "а́в"

-- Verbs ending in a hushing consonant do not get j-vowels in the endings. if mw.ustring.find(iotated_stem, "[шщжч]$") then forms["pres_actv_part"] = iotated_stem .. "ущий" else forms["pres_actv_part"] = 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["pres_adv_part"] = iotated_stem_noa .. "а́" else forms["pres_adv_part"] = iotated_stem_noa .. "я́" end present_je_c(forms, stem) forms["impr_sg"] = iotated_stem_noa .. "и́" forms["impr_pl"] = iotated_stem_noa .. "и́те" forms["past_m"] = stem_noa .. "а́л" forms["past_f"] = stem_noa .. "а́ла" forms["past_n"] = stem_noa .. "а́ло" forms["past_pl"] = stem_noa .. "а́ли" return forms, title, categories end

conjugations["7a"] = function(args) local forms = {} local categories = {"Russian class 7 verbs"} local title = "class 7" local full_inf = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_stem = args[4] or (NAMESPACE == "Template" and "-") or error("Fourth parameter has not been provided") local impr_sg = args[5] or (NAMESPACE == "Template" and "-") or error("Fifth parameter has not been provided") local past_adv_part = args[6] or (NAMESPACE == "Template" and "-") or error("Sixth parameter has not been provided") local past_m = args["past_m"] local pres_adv_part = args["pres_adv_part"] local past_actv_part = args["past_actv_part"] forms["infinitive"] = full_inf forms["pres_actv_part"] = pres_stem .. "ущий" -- вычесть - "" (non-existent) if past_actv_part then forms["past_actv_part"] = past_actv_part else forms["past_actv_part"] = past_stem .. "ший" end -- лезть - ле́зши (non-existent) if pres_adv_part then forms["pres_adv_part"] = pres_adv_part else forms["pres_adv_part"] =pres_stem .. "я" end forms["pres_pasv_part"] = "" forms["past_adv_part"] = past_adv_part; forms["past_adv_part_short"] = "" present_e_a(forms, pres_stem) forms["impr_sg"] = impr_sg forms["impr_pl"] = impr_sg .. "те" -- 0 ending if the past stem ends in a consonant if mw.ustring.find(past_stem, "[аэыоуяеиёю́]$") then forms["past_m"] = past_stem .. "л" else forms["past_m"] = past_stem end -- вычесть - вы́чел if past_m then forms["past_m"] = past_m end forms["past_f"] = past_stem .. "ла" forms["past_n"] = past_stem .. "ло" forms["past_pl"] = past_stem .. "ли" return forms, title, categories end conjugations["7b"] = function(args) local forms = {} local categories = {"Russian class 7 verbs"} local title = "class 7" local full_inf = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_stem = args[4] or (NAMESPACE == "Template" and "-") or error("Fourth parameter has not been provided") local pres_pasv_part = args["pres_pasv_part"] local past_actv_part = args["past_actv_part"] local past_adv_part = args["past_adv_part"] local past_adv_part_short = args["past_adv_part_short"] local past_m = args["past_m"] local past_n = args["past_n"] local past_f = args["past_f"] local past_pl = args["past_pl"] forms["infinitive"] = full_inf forms["pres_actv_part"] = pres_stem .. "у́щий" forms["pres_adv_part"] = pres_stem .. "я́" if past_actv_part then forms["past_actv_part"] = past_actv_part else forms["past_actv_part"] = past_stem .. "ший" end if past_adv_part then forms["past_adv_part"] = past_adv_part else forms["past_adv_part"] = past_stem .. "вши" end if past_adv_part_short then forms["past_adv_part_short"] = past_adv_part_short else forms["past_adv_part_short"] = past_stem .. "в" end if pres_pasv_part then forms["pres_pasv_part"] = pres_pasv_part else forms["pres_pasv_part"] = "" end present_e_b(forms, pres_stem) forms["impr_sg"] = pres_stem .. "и́" forms["impr_pl"] = pres_stem .. "и́те" -- 0 ending if the past stem ends in a consonant if mw.ustring.find(past_stem, "[аэыоуяеиёю́]$") then forms["past_m"] = past_stem .. "л" else forms["past_m"] = past_stem end if past_m then forms["past_m"] = past_m end if past_f then forms["past_f"] = past_f else forms["past_f"] = past_stem .. "ла" end if past_n then forms["past_n"] = past_n else forms["past_n"] = past_stem .. "ло" end if past_pl then forms["past_pl"] = past_pl else forms["past_pl"] = past_stem .. "ли" end return forms, title, categories end

conjugations["8a"] = function(args) local forms = {} local categories = {"Russian class 8 verbs"} local title = "class 8" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local full_inf = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_m = args["past_m"] 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["infinitive"] = full_inf forms["pres_actv_part"] = stem .. "ущий" forms["past_actv_part"] = past_m .. "ший" -- default is blank forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = past_m .. "ши"; forms["past_adv_part_short"] = "" local iotated_stem = com.iotation(stem) forms["pres_futr_1sg"] = stem .. "у" forms["pres_futr_2sg"] = iotated_stem .. "ешь" forms["pres_futr_3sg"] = iotated_stem .. "ет" forms["pres_futr_1pl"] = iotated_stem .. "ем" forms["pres_futr_2pl"] = iotated_stem .. "ете" forms["pres_futr_3pl"] = stem .. "ут" forms["impr_sg"] = stem .. "и" forms["impr_pl"] = stem .. "ите" forms["past_m"] = past_m forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["8b"] = function(args) local forms = {} local categories = {"Russian class 8 verbs"} local title = "class 8" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local full_inf = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_m = args["past_m"] 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["infinitive"] = full_inf forms["pres_actv_part"] = stem .. "у́щий" forms["past_actv_part"] = past_m .. "ший" -- default is blank forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = past_m .. "ши"; forms["past_adv_part_short"] = "" local iotated_stem = com.iotation(stem) forms["pres_futr_1sg"] = stem .. "у́" forms["pres_futr_3pl"] = stem .. "у́т" forms["pres_futr_2sg"] = iotated_stem .. "ёшь" forms["pres_futr_3sg"] = iotated_stem .. "ёт" forms["pres_futr_1pl"] = iotated_stem .. "ём" forms["pres_futr_2pl"] = iotated_stem .. "ёте" forms["impr_sg"] = stem .. "и́" forms["impr_pl"] = stem .. "и́те" forms["past_m"] = past_m forms["past_f"] = stem .. "ла́" forms["past_n"] = stem .. "ло́" forms["past_pl"] = stem .. "ли́" return forms, title, categories end conjugations["9a"] = function(args) local forms = {} local categories = {"Russian class 9 verbs"} local title = "class 9" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") forms["infinitive"] = stem .. "еть" -- prefective only forms["pres_actv_part"] = "" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_actv_part"] = stem .. "евший" -- default is blank forms["past_adv_part"] = stem .. "евши"; forms["past_adv_part_short"] = stem .. "ев" present_e_a(forms, pres_stem) forms["impr_sg"] = pres_stem .. "и" forms["impr_pl"] = pres_stem .. "ите" forms["past_m"] = stem forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["9b"] = function(args) local forms = {} local categories = {"Russian class 9 verbs"} local title = "class 9" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_adv_part2 = args["past_adv_part2"] -- remove stress, replace ё with е local stem_noa = com.make_unstressed(stem) forms["infinitive"] = stem_noa .. "е́ть" forms["pres_actv_part"] = pres_stem .. "у́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_actv_part"] = stem .. "ший" -- default is blank forms["past_adv_part"] = stem_noa .. "е́вши"; forms["past_adv_part_short"] = stem_noa .. "е́в" --eg тереть - тёрши if past_adv_part2 then forms["past_adv_part2"] = past_adv_part2 end present_e_b(forms, pres_stem) forms["impr_sg"] = pres_stem .. "и́" forms["impr_pl"] = pres_stem .. "и́те" forms["past_m"] = stem forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end

conjugations["10a"] = function(args) local forms = {} local categories = {"Russian class 10 verbs"} local title = "class 10" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "оть" forms["pres_actv_part"] = "" forms["past_actv_part"] = stem .. "овший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem .. "овши"; forms["past_adv_part_short"] = stem .. "ов" present_je_a(forms, stem) forms["impr_sg"] = stem .. "и" forms["impr_pl"] = stem .. "ите" forms["past_m"] = stem .. "ол" forms["past_f"] = stem .. "ола" forms["past_n"] = stem .. "оло" forms["past_pl"] = stem .. "оли" return forms, title, categories end

conjugations["10c"] = function(args) local forms = {} local categories = {"Russian class 10 verbs"} local title = "class 10" local inf_stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") -- present tense stressed stem "моло́ть" - м́елет local pres_stem = args[3] 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["infinitive"] = inf_stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ющий" forms["past_actv_part"] = inf_stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem_noa .. "я́" forms["past_adv_part"] = inf_stem .. "вши"; forms["past_adv_part_short"] = inf_stem .. "в" present_je_c(forms, pres_stem) forms["impr_sg"] = pres_stem_noa .. "и́" forms["impr_pl"] = pres_stem_noa .. "и́те" forms["past_m"] = inf_stem .. "л" forms["past_f"] = inf_stem .. "ла" forms["past_n"] = inf_stem .. "ло" forms["past_pl"] = inf_stem .. "ли" return forms, title, categories end

conjugations["11a"] = function(args) local forms = {} local categories = {"Russian class 11 verbs"} local title = "class 11" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "ить" -- prefective only forms["pres_actv_part"] = "" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_actv_part"] = stem .. "ивший" -- default is blank forms["past_adv_part"] = stem .. "ивши"; forms["past_adv_part_short"] = stem .. "ив" forms["pres_futr_1sg"] = stem .. "ью" forms["pres_futr_2sg"] = stem .. "ьешь" forms["pres_futr_3sg"] = stem .. "ьет" forms["pres_futr_1pl"] = stem .. "ьем" forms["pres_futr_2pl"] = stem .. "ьете" forms["pres_futr_3pl"] = stem .. "ьют" forms["impr_sg"] = stem .. "ей" forms["impr_pl"] = stem .. "ейте" forms["past_m"] = stem .. "ил" forms["past_f"] = stem .. "ила" forms["past_n"] = stem .. "ило" forms["past_pl"] = stem .. "или" return forms, title, categories end conjugations["11b"] = function(args) local forms = {} local categories = {"Russian class 11 verbs"} local title = "class 11" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") local past_f = args["past_f"] forms["infinitive"] = stem .. "и́ть" forms["pres_actv_part"] = pres_stem .. "ью́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem .. "ья́" forms["past_actv_part"] = stem .. "и́вший" -- default is blank forms["past_adv_part"] = stem .. "и́вши"; forms["past_adv_part_short"] = stem .. "и́в" forms["pres_futr_1sg"] = pres_stem .. "ью́" forms["pres_futr_2sg"] = pres_stem .. "ьёшь" forms["pres_futr_3sg"] = pres_stem .. "ьёт" forms["pres_futr_1pl"] = pres_stem .. "ьём" forms["pres_futr_2pl"] = pres_stem .. "ьёте" forms["pres_futr_3pl"] = pres_stem .. "ью́т" forms["impr_sg"] = stem .. "е́й" forms["impr_pl"] = stem .. "е́йте" forms["past_m"] = stem .. "и́л" forms["past_f"] = stem .. "и́ла" forms["past_n"] = stem .. "и́ло" forms["past_pl"] = stem .. "и́ли" -- пила́, лила́ if past_f then forms["past_f"] =past_f else forms["past_f"] = stem .. "и́ла" end return forms, title, categories end conjugations["12a"] = function(args) local forms = {} local categories = {"Russian class 12 verbs"} local title = "class 12" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ющий" forms["pres_pasv_part"] = pres_stem .. "емый" forms["pres_adv_part"] = pres_stem .. "я" forms["past_actv_part"] = stem .. "вший" -- default is blank forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" forms["pres_futr_1sg"] = pres_stem .. "ю" forms["pres_futr_2sg"] = pres_stem .. "ешь" forms["pres_futr_3sg"] = pres_stem .. "ет" forms["pres_futr_1pl"] = pres_stem .. "ем" forms["pres_futr_2pl"] = pres_stem .. "ете" forms["pres_futr_3pl"] = pres_stem .. "ют" forms["impr_sg"] = pres_stem .. "й" forms["impr_pl"] = pres_stem .. "йте" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["12b"] = function(args) local forms = {} local categories = {"Russian class 12 verbs"} local title = "class 12" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") -- гнила́ needs a parameter, default - пе́ла local past_f = args["past_f"] forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ю́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem .. "я́" forms["past_actv_part"] = stem .. "вший" -- default is blank forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" forms["pres_futr_1sg"] = pres_stem .. "ю́" forms["pres_futr_2sg"] = pres_stem .. "ёшь" forms["pres_futr_3sg"] = pres_stem .. "ёт" forms["pres_futr_1pl"] = pres_stem .. "ём" forms["pres_futr_2pl"] = pres_stem .. "ёте" forms["pres_futr_3pl"] = pres_stem .. "ю́т" -- the preceding vowel is stressed forms["impr_sg"] = pres_stem .. "́й" forms["impr_pl"] = pres_stem .. "́йте" -- гнила́ if past_f then forms["past_f"] = past_f else forms["past_f"] = stem .. "ла" end forms["past_m"] = stem .. "л" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["13b"] = function(args) local forms = {} local categories = {"Russian class 13 verbs"} local title = "class 13" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ю́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = stem .. "я" forms["past_actv_part"] = stem .. "вший" -- default is blank forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" forms["pres_futr_1sg"] = pres_stem .. "ю́" forms["pres_futr_2sg"] = pres_stem .. "ёшь" forms["pres_futr_3sg"] = pres_stem .. "ёт" forms["pres_futr_1pl"] = pres_stem .. "ём" forms["pres_futr_2pl"] = pres_stem .. "ёте" forms["pres_futr_3pl"] = pres_stem .. "ю́т" -- the preceding vowel is stressed forms["impr_sg"] = stem .. "́й" forms["impr_pl"] = stem .. "́йте" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["14a"] = function(args) -- only one verb: вы́жать local forms = {} local categories = {"Russian class 14 verbs"} local title = "class 14" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") forms["infinitive"] = stem .. "ть" -- perfective only forms["pres_actv_part"] = "" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_actv_part"] = stem .. "вший" -- default is blank forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_a(forms, pres_stem) forms["impr_sg"] = pres_stem .. "и" forms["impr_pl"] = pres_stem .. "ите" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["14b"] = function(args) local forms = {} local categories = {"Russian class 14 verbs"} local title = "class 14" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") -- заня́ться has three forms: за́нялся, зан́ялся, занялся́ local past_m = args["past_m"] local past_m2 = args["past_m2"] local past_m3 = args["past_m3"] local past_f = args["past_f"] local past_n = args["past_n"] local past_n2 = args["past_n2"] local past_pl = args["past_pl"] local past_pl2 = args["past_pl2"] forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = pres_stem .. "у́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem .. "я́" forms["past_actv_part"] = stem .. "вший" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_b(forms, pres_stem) forms["impr_sg"] = pres_stem .. "и́" forms["impr_pl"] = pres_stem .. "и́те" if past_m then forms["past_m"] = past_m forms["past_n"] = past_m .. "о" forms["past_pl"] = past_m .. "и" else forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" end if past_f then forms["past_f"] = past_f end -- override these if supplied if past_n then forms["past_n"] = past_n end if past_pl then forms["past_pl"] = past_pl end if past_m2 then forms["past_m2"] = past_m2 end if past_m3 then forms["past_m3"] = past_m3 end if past_n2 then forms["past_n2"] = past_n2 end if past_pl2 then forms["past_pl2"] = past_pl2 end return forms, title, categories end conjugations["14c"] = function(args) local forms = {} local categories = {"Russian class 14 verbs"} local title = "class 14" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] 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["past_m"] local past_f = args["past_f"] local past_n = args["past_n"] local past_pl = args["past_pl"] local past_m2 = args["past_m2"] local past_n2 = args["past_n2"] local past_pl2 = args["past_pl2"] forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = pres_stem .. "у́щий" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem .. "я́" forms["past_actv_part"] = stem .. "вший" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_c(forms, pres_stem) forms["impr_sg"] = pres_stem_noa .. "и́" forms["impr_pl"] = pres_stem_noa .. "и́те" if past_m then forms["past_m"] = past_m forms["past_n"] = past_m .. "о" forms["past_pl"] = past_m .. "и" else forms["past_m"] = stem .. "л" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" end if past_n then forms["past_n"] = past_n end --изъя́ла but приняла́ if past_f then forms["past_f"] = past_f else forms["past_f"] = stem .. "ла" end --two forms: при́нялся, принялс́я if past_m2 then forms["past_m2"] = past_m2 end if past_n2 then forms["past_n2"] = past_n2 end if past_pl then forms["past_pl"] = past_pl end if past_pl2 then forms["past_pl2"] = past_pl2 end return forms, title, categories end conjugations["15a"] = function(args) local forms = {} local categories = {"Russian class 15 verbs"} local title = "class 15" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = stem .. "нущий" forms["past_actv_part"] = stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_a(forms, stem .. "н") forms["impr_sg"] = stem .. "нь" forms["impr_pl"] = stem .. "ньте" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["16a"] = function(args) local forms = {} local categories = {"Russian class 16 verbs"} local title = "class 16" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = stem .. "ву́щий" forms["past_actv_part"] = stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_a(forms, stem .. "в") forms["impr_sg"] = stem .. "ви" forms["impr_pl"] = stem .. "вите" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["16b"] = function(args) local forms = {} local categories = {"Russian class 16 verbs"} local title = "class 16" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local stem_noa = com.make_unstressed(stem) local past_n2 = args["past_n2"] local past_pl2 = args["past_pl2"] forms["infinitive"] = stem .. "ть" forms["pres_actv_part"] = stem_noa .. "ву́щий" forms["past_actv_part"] = stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = stem_noa .. "вя́" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" present_e_b(forms, stem_noa .. "в") forms["impr_sg"] = stem_noa .. "ви́" forms["impr_pl"] = stem_noa .. "ви́те" forms["past_m"] = stem .. "л" forms["past_f"] = stem_noa .. "ла́" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" -- прижило́сь, прижи́лось if past_n2 then forms["past_n2"] = past_n2 end if past_pl2 then forms["past_pl2"] = past_pl2 end return forms, title, categories end

conjugations["irreg-бежать"] = 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[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "бежа́ть" forms["past_actv_part"] = prefix .. "бежа́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "бежа́вши"; forms["past_adv_part_short"] = prefix .. "бежа́в" forms["pres_actv_part"] = prefix .. "бегу́щий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "беги́" forms["impr_pl"] = prefix .. "беги́те" forms["pres_futr_1sg"] = prefix .. "бегу́" forms["pres_futr_2sg"] = prefix .. "бежи́шь" forms["pres_futr_3sg"] = prefix .. "бежи́т" forms["pres_futr_1pl"] = prefix .. "бежи́м" forms["pres_futr_2pl"] = prefix .. "бежи́те" forms["pres_futr_3pl"] = prefix .. "бегу́т" forms["past_m"] = prefix .. "бежа́л" forms["past_f"] = prefix .. "бежа́ла" forms["past_n"] = prefix .. "бежа́ло" forms["past_pl"] = prefix .. "бежа́ли" -- вы́бежать (perfective) if prefix == "вы́" then forms["infinitive"] = prefix .. "бежать" forms["past_actv_part"] = prefix .. "бежавший" forms["past_adv_part"] = prefix .. "бежавши"; forms["past_adv_part_short"] = prefix .. "бежав" forms["impr_sg"] = prefix .. "беги" forms["impr_pl"] = prefix .. "бегите" forms["pres_futr_1sg"] = prefix .. "бегу" forms["pres_futr_2sg"] = prefix .. "бежишь" forms["pres_futr_3sg"] = prefix .. "бежит" forms["pres_futr_1pl"] = prefix .. "бежим" forms["pres_futr_2pl"] = prefix .. "бежите" forms["pres_futr_3pl"] = prefix .. "бегут" forms["past_m"] = prefix .. "бежал" forms["past_f"] = prefix .. "бежала" forms["past_n"] = prefix .. "бежало" forms["past_pl"] = prefix .. "бежали" end return forms, title, categories end

conjugations["irreg-спать"] = function(args) -- irregular, only for verbs derived from спать local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "спа́ть" forms["past_actv_part"] = prefix .. "спа́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "спа́вши"; forms["past_adv_part_short"] = prefix .. "спа́в" forms["pres_actv_part"] = prefix .. "спя́щий" forms["pres_adv_part"] = prefix .. "спя́" forms["impr_sg"] = prefix .. "спи́" forms["impr_pl"] = prefix .. "спи́те" forms["pres_futr_1sg"] = prefix .. "сплю́" forms["pres_futr_2sg"] = prefix .. "спи́шь" forms["pres_futr_3sg"] = prefix .. "спи́т" forms["pres_futr_1pl"] = prefix .. "спи́м" forms["pres_futr_2pl"] = prefix .. "спи́те" forms["pres_futr_3pl"] = prefix .. "спя́т"

forms["past_m"] = prefix .. "спа́л" forms["past_f"] = prefix .. "спала́" forms["past_n"] = prefix .. "спа́ло" forms["past_pl"] = prefix .. "спа́ли"

-- вы́спаться (perfective, reflexive), reflexive endings are added later if prefix == "вы́" then forms["infinitive"] = prefix .. "спать" forms["past_actv_part"] = prefix .. "спавший" forms["past_adv_part"] = prefix .. "спавши"; forms["past_adv_part_short"] = ""

forms["impr_sg"] = prefix .. "спи" forms["impr_pl"] = prefix .. "спите" forms["pres_futr_1sg"] = prefix .. "сплю" forms["pres_futr_2sg"] = prefix .. "спишь" forms["pres_futr_3sg"] = prefix .. "спит" forms["pres_futr_1pl"] = prefix .. "спим" forms["pres_futr_2pl"] = prefix .. "спите" forms["pres_futr_3pl"] = prefix .. "спят"

forms["past_m"] = prefix .. "спал" forms["past_f"] = prefix .. "спала" forms["past_n"] = prefix .. "спало" forms["past_pl"] = prefix .. "спали" end return forms, title, categories end

conjugations["irreg-хотеть"] = 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[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "хоте́ть" forms["past_actv_part"] = prefix .. "хоте́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "хоте́вши"; forms["past_adv_part_short"] = prefix .. "хоте́в" forms["pres_actv_part"] = prefix .. "хотя́щий" forms["pres_adv_part"] = prefix .. "хотя́" forms["impr_sg"] = prefix .. "хоти́" forms["impr_pl"] = prefix .. "хоти́те" forms["pres_futr_1sg"] = prefix .. "хочу́" forms["pres_futr_2sg"] = prefix .. "хо́чешь" forms["pres_futr_3sg"] = prefix .. "хо́чет" forms["pres_futr_1pl"] = prefix .. "хоти́м" forms["pres_futr_2pl"] = prefix .. "хоти́те" forms["pres_futr_3pl"] = prefix .. "хотя́т" forms["past_m"] = prefix .. "хоте́л" forms["past_f"] = prefix .. "хоте́ла" forms["past_n"] = prefix .. "хоте́ло" forms["past_pl"] = prefix .. "хоте́ли" return forms, title, categories end

conjugations["irreg-дать"] = 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[2]; if not prefix then prefix = "" end -- alternative past masculine forms: со́здал/созд́ал, п́ередал/переда́л, ́отдал/отд́ал, etc.   local past_m = args["past_m"] local past_m2 = args["past_m2"] local past_f = args["past_f"] local past_n = args["past_n"] local past_pl = args["past_pl"] forms["infinitive"] = prefix .. "да́ть" forms["past_actv_part"] = prefix .. "да́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "да́вши"; forms["past_adv_part_short"] = prefix .. "да́в" forms["pres_actv_part"] = "даю́щий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "да́й" forms["impr_pl"] = prefix .. "да́йте" forms["pres_futr_1sg"] = prefix .. "да́м" forms["pres_futr_2sg"] = prefix .. "да́шь" forms["pres_futr_3sg"] = prefix .. "да́ст" forms["pres_futr_1pl"] = prefix .. "дади́м" forms["pres_futr_2pl"] = prefix .. "дади́те" forms["pres_futr_3pl"] = prefix .. "даду́т" forms["past_m"] = prefix .. "да́л" -- пе́редал, ́отдал, пр́одал, з́адал, etc.   forms["past_m2"] = past_m2 forms["past_f"] = prefix .. "дала́" forms["past_n"] = prefix .. "да́ло" forms["past_n2"] = prefix .. "дало́" --same with "взять" forms["past_pl"] = prefix .. "да́ли"

-- вы́дать (perfective) if prefix == "вы́" then forms["infinitive"] = prefix .. "дать" forms["past_actv_part"] = prefix .. "давший"

forms["past_adv_part"] = prefix .. "давши"; forms["past_adv_part_short"] = prefix .. "дав" forms["impr_sg"] = prefix .. "дай" forms["impr_pl"] = prefix .. "дайте" forms["pres_futr_1sg"] = prefix .. "дам" forms["pres_futr_2sg"] = prefix .. "дашь" forms["pres_futr_3sg"] = prefix .. "даст" forms["pres_futr_1pl"] = prefix .. "дадим" forms["pres_futr_2pl"] = prefix .. "дадите" forms["pres_futr_3pl"] = prefix .. "дадут" forms["past_m"] = prefix .. "дал" forms["past_f"] = prefix .. "дала" forms["past_n"] = prefix .. "дало" forms["past_pl"] = prefix .. "дали" end if past_m then forms["past_m"] = past_m end if past_f then forms["past_f"] = past_f end if past_n then forms["past_n"] = past_n end if past_pl then forms["past_pl"] = past_pl end return forms, title, categories end

conjugations["irreg-есть"] = function(args) -- irregular, only for verbs derived from есть local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "е́сть" forms["past_actv_part"] = prefix .. "е́вший" forms["pres_pasv_part"] = "едо́мый" forms["past_adv_part"] = prefix .. "е́вши"; forms["past_adv_part_short"] = prefix .. "е́в" forms["pres_actv_part"] = "едя́щий" forms["pres_adv_part"] = "едя́" forms["impr_sg"] = prefix .. "е́шь" forms["impr_pl"] = prefix .. "е́шьте" forms["pres_futr_1sg"] = prefix .. "е́м" forms["pres_futr_2sg"] = prefix .. "е́шь" forms["pres_futr_3sg"] = prefix .. "е́ст" forms["pres_futr_1pl"] = prefix .. "еди́м" forms["pres_futr_2pl"] = prefix .. "еди́те" forms["pres_futr_3pl"] = prefix .. "едя́т" forms["past_m"] = prefix .. "е́л" forms["past_f"] = prefix .. "е́ла" forms["past_n"] = prefix .. "е́ло" forms["past_pl"] = prefix .. "е́ли"

-- вы́есть (perfective) if prefix == "вы́" then forms["infinitive"] = prefix .. "есть" forms["past_actv_part"] = prefix .. "евший" forms["past_adv_part"] = prefix .. "евши"; forms["past_adv_part_short"] = prefix .. "ев" forms["impr_sg"] = prefix .. "ешь" forms["impr_pl"] = prefix .. "ешьте" forms["pres_futr_1sg"] = prefix .. "ем" forms["pres_futr_2sg"] = prefix .. "ешь" forms["pres_futr_3sg"] = prefix .. "ест" forms["pres_futr_1pl"] = prefix .. "едим" forms["pres_futr_2pl"] = prefix .. "едите" forms["pres_futr_3pl"] = prefix .. "едят" forms["past_m"] = prefix .. "ел" forms["past_f"] = prefix .. "ела" forms["past_n"] = prefix .. "ело" forms["past_pl"] = prefix .. "ели" end return forms, title, categories end

conjugations["irreg-сыпать"] = function(args) -- irregular, only for verbs derived from сыпать local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "сы́пать" forms["past_actv_part"] = prefix .. "сы́павший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "сы́павши"; forms["past_adv_part_short"] = prefix .. "сы́пав" forms["pres_actv_part"] = prefix .. "сы́плющий" forms["pres_adv_part"] = prefix .. "сы́пля" forms["pres_adv_part2"] = prefix .. "сы́пя" forms["impr_sg"] = prefix .. "сы́пь" forms["impr_pl"] = prefix .. "сы́пьте" forms["pres_futr_1sg"] = prefix .. "сы́плю" forms["pres_futr_2sg"] = prefix .. "сы́плешь" forms["pres_futr_2sg2"] = prefix .. "сы́пешь" forms["pres_futr_3sg"] = prefix .. "сы́плет" forms["pres_futr_3sg2"] = prefix .. "сы́пет" forms["pres_futr_1pl"] = prefix .. "сы́плем" forms["pres_futr_1pl2"] = prefix .. "сы́пем" forms["pres_futr_2pl"] = prefix .. "сы́плете" forms["pres_futr_2pl2"] = prefix .. "сы́пете" forms["pres_futr_3pl"] = prefix .. "сы́плют" forms["pres_futr_3pl2"] = prefix .. "сы́пют" forms["past_m"] = prefix .. "сы́пал" forms["past_f"] = prefix .. "сы́пала" forms["past_n"] = prefix .. "сы́пало" forms["past_pl"] = prefix .. "сы́пали" -- вы́сыпать (perfective), not to confuse with высыпа́ть (1a, imperfective) if prefix == "вы́" then forms["infinitive"] = prefix .. "сыпать" forms["past_actv_part"] = prefix .. "сыпавший" forms["past_adv_part"] = prefix .. "сыпавши"; forms["past_adv_part_short"] = prefix .. "сыпав" forms["impr_sg"] = prefix .. "сыпь" forms["impr_pl"] = prefix .. "сыпьте" forms["pres_futr_1sg"] = prefix .. "сыплю" forms["pres_futr_2sg"] = prefix .. "сыплешь" forms["pres_futr_2sg2"] = prefix .. "сыпешь" forms["pres_futr_3sg"] = prefix .. "сыплет" forms["pres_futr_3sg2"] = prefix .. "сыпет" forms["pres_futr_1pl"] = prefix .. "сыплем" forms["pres_futr_1pl2"] = prefix .. "сыпем" forms["pres_futr_2pl"] = prefix .. "сыплете" forms["pres_futr_2pl2"] = prefix .. "сыпете" forms["pres_futr_3pl"] = prefix .. "сыплют" forms["pres_futr_3pl2"] = prefix .. "сыпют" forms["past_m"] = prefix .. "сыпал" forms["past_f"] = prefix .. "сыпала" forms["past_n"] = prefix .. "сыпало" forms["past_pl"] = prefix .. "сыпали" end return forms, title, categories end

conjugations["irreg-лгать"] = 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[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "лга́ть" forms["past_actv_part"] = prefix .. "лга́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "лга́вши"; forms["past_adv_part_short"] = prefix .. "лга́в" forms["pres_actv_part"] = prefix .. "лгу́щий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "лги́" forms["impr_pl"] = prefix .. "лги́те" forms["pres_futr_1sg"] = prefix .. "лгу́" forms["pres_futr_2sg"] = prefix .. "лжёшь" forms["pres_futr_3sg"] = prefix .. "лжёт" forms["pres_futr_1pl"] = prefix .. "лжём" forms["pres_futr_2pl"] = prefix .. "лжёте" forms["pres_futr_3pl"] = prefix .. "лгу́т" forms["past_m"] = prefix .. "лга́л" forms["past_f"] = prefix .. "лгала́" forms["past_n"] = prefix .. "лга́ло" forms["past_pl"] = prefix .. "лга́ли" return forms, title, categories end

conjugations["irreg-мочь"] = 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[2]; if not prefix then prefix = "" end local no_past_adv = "0" local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "мо́чь" forms["past_actv_part"] = prefix .. "мо́гший" forms["pres_pasv_part"] = ""

forms["past_adv_part"] = ""; forms["past_adv_part_short"] = "" forms["pres_actv_part"] = prefix .. "мо́гущий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "моги́" forms["impr_pl"] = prefix .. "моги́те" forms["pres_futr_1sg"] = prefix .. "могу́" forms["pres_futr_2sg"] = prefix .. "мо́жешь" forms["pres_futr_3sg"] = prefix .. "мо́жет" forms["pres_futr_1pl"] = prefix .. "мо́жем" forms["pres_futr_2pl"] = prefix .. "мо́жете" forms["pres_futr_3pl"] = prefix .. "мо́гут" forms["past_m"] = prefix .. "мо́г" forms["past_f"] = prefix .. "могла́" forms["past_n"] = prefix .. "могло́" forms["past_pl"] = prefix .. "могли́" return forms, title, categories end

conjugations["irreg-слать"] = function(args) -- irregular, only for verbs derived from слать local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "сла́ть" forms["past_actv_part"] = prefix .. "сла́вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "сла́вши"; forms["past_adv_part_short"] = prefix .. "сла́в" forms["pres_actv_part"] = prefix .. "шлю́щий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "шли́" forms["impr_pl"] = prefix .. "шли́те" forms["pres_futr_1sg"] = prefix .. "шлю́" forms["pres_futr_2sg"] = prefix .. "шлёшь" forms["pres_futr_3sg"] = prefix .. "шлёт" forms["pres_futr_1pl"] = prefix .. "шлём" forms["pres_futr_2pl"] = prefix .. "шлёте" forms["pres_futr_3pl"] = prefix .. "шлю́т" forms["past_m"] = prefix .. "сла́л" forms["past_f"] = prefix .. "сла́ла" forms["past_n"] = prefix .. "сла́ло" forms["past_pl"] = prefix .. "сла́ли" -- вы́слать (perfective) if prefix == "вы́" then forms["infinitive"] = prefix .. "слать" forms["past_actv_part"] = prefix .. "славший" forms["past_adv_part"] = prefix .. "славши"; forms["past_adv_part_short"] = prefix .. "слав"

forms["impr_sg"] = prefix .. "шли" forms["impr_pl"] = prefix .. "шлите" forms["pres_futr_1sg"] = prefix .. "шлю" forms["pres_futr_2sg"] = prefix .. "шлешь" forms["pres_futr_3sg"] = prefix .. "шлет" forms["pres_futr_1pl"] = prefix .. "шлем" forms["pres_futr_2pl"] = prefix .. "шлете" forms["pres_futr_3pl"] = prefix .. "шлют" forms["past_m"] = prefix .. "слал" forms["past_f"] = prefix .. "слала" forms["past_n"] = prefix .. "слало" forms["past_pl"] = prefix .. "слали" end return forms, title, categories end

conjugations["irreg-идти"] = function(args) -- irregular, only for verbs derived from идти, including прийти́ and в́ыйти local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["pres_pasv_part"] = ""

if prefix == "вы́" then forms["infinitive"] = prefix .. "йти" forms["impr_sg"] = prefix .. "йди" forms["impr_pl"] = prefix .. "йдите" present_e_a(forms, prefix .. "йд") forms["past_adv_part"] = prefix .. "шедши"; forms["past_adv_part_short"] = prefix .. "йдя" elseif prefix == "при" then forms["infinitive"] = prefix .. "йти́" forms["impr_sg"] = prefix .. "ди́" forms["impr_pl"] = prefix .. "ди́те" present_e_b(forms, prefix .. "д") forms["past_adv_part"] = prefix .. "ше́дши"; forms["past_adv_part_short"] = prefix .. "дя́" else forms["infinitive"] = prefix .. "йти́" forms["pres_actv_part"] = prefix .. "иду́щий" forms["impr_sg"] = prefix .. "йди́" forms["impr_pl"] = prefix .. "йди́те" present_e_b(forms, prefix .. "йд") forms["past_adv_part"] = prefix .. "ше́дши"; forms["past_adv_part_short"] = prefix .. "йдя́" end -- only идти, present imperfective if prefix == "" then --only used with imperfective идти forms["pres_adv_part"] = "идя́" forms["pres_actv_part"] = "иду́щий" forms["infinitive"] = "идти́" forms["pres_actv_part"] = "иду́щий" forms["impr_sg"] = "иди́" forms["impr_pl"] = "иди́те" present_e_b(forms, "ид") forms["past_adv_part"] = "ше́дши"; forms["past_adv_part_short"] = "" end -- вы́йти (perfective) if prefix == "вы́" then forms["past_actv_part"] = prefix .. "шедший" forms["past_m"] = prefix .. "шел" forms["past_f"] = prefix .. "шла" forms["past_n"] = prefix .. "шло" forms["past_pl"] = prefix .. "шли" else forms["past_actv_part"] = prefix .. "ше́дший" forms["past_m"] = prefix .. "шёл" forms["past_f"] = prefix .. "шла́" forms["past_n"] = prefix .. "шло́" forms["past_pl"] = prefix .. "шли́" end return forms, title, categories end

conjugations["irreg-ехать"] = function(args) -- irregular, only for verbs derived from ехать local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; 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["infinitive"] = past_stem .. "ать" forms["past_actv_part"] = past_stem .. "авший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = past_stem .. "авши"; forms["past_adv_part_short"] = past_stem .. "ав" --вы́ехать has no present forms["pres_actv_part"] = pres_stem .. "ущий" forms["pres_adv_part"] = "" --literary (special) imperative forms for ехать are поезжа́й, поезжа́йте if prefix == "" then forms["impr_sg"] = "поезжа́й" forms["impr_pl"] = "поезжа́йте" forms["impr_sg2"] = "езжа́й" forms["impr_pl2"] = "езжа́йте" elseif prefix == "вы́" then forms["impr_sg"] = "выезжа́й" forms["impr_pl"] = "выезжа́йте" else forms["impr_sg"] = prefix .. "езжа́й" forms["impr_pl"] = prefix .. "езжа́йте" end present_e_a(forms, pres_stem) forms["past_m"] = past_stem .. "ал" forms["past_f"] = past_stem .. "ала" forms["past_n"] = past_stem .. "ало" forms["past_pl"] = past_stem .. "али" return forms, title, categories end

conjugations["irreg-минуть"] = function(args) -- for the irregular verb "ми́нуть" local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local stem = args[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local stem_noa = com.make_unstressed(stem) forms["infinitive"] = stem .. "уть" forms["pres_actv_part"] = stem .. "у́щий" forms["past_actv_part"] = stem_noa .. "у́вший" forms["past_actv_part2"] = stem .. "увший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = stem_noa .. "у́вши"; forms["past_adv_part_short"] = stem_noa .. "у́в" forms["past_adv_part2"] = stem .. "увши"; forms["past_adv_part_shor2t"] = stem .. "ув" present_e_c(forms, stem)

-- no imperative forms["impr_sg"] = "" forms["impr_pl"] = "" forms["past_m"] = stem_noa .. "у́л" forms["past_f"] = stem_noa .. "у́ла" forms["past_n"] = stem_noa .. "у́ло" forms["past_pl"] = stem_noa .. "у́ли" forms["past_m2"] = stem .. "ул" forms["past_f2"] = stem .. "ула" forms["past_n2"] = stem .. "уло" forms["past_pl2"] = stem .. "ули" return forms, title, categories end

conjugations["irreg-живописать-миновать"] = 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[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local pres_stem = args[3] or (NAMESPACE == "Template" and "-") or error("Third parameter has not been provided") forms["infinitive"] = inf_stem .. "ть" forms["pres_actv_part"] = pres_stem .. "ющий" forms["past_actv_part"] = inf_stem .. "вший" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = pres_stem .. "я" forms["past_adv_part"] = inf_stem .. "вши"; forms["past_adv_part_short"] = inf_stem .. "в" present_je_a(forms, pres_stem) forms["impr_sg"] = pres_stem .. "й" forms["impr_pl"] = pres_stem .. "йте" forms["past_m"] = inf_stem .. "л" forms["past_f"] = inf_stem .. "ла" forms["past_n"] = inf_stem .. "ло" forms["past_pl"] = inf_stem .. "ли" return forms, title, categories end

conjugations["irreg-лечь"] = 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[2]; if not prefix then prefix = "" end local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "ле́чь" forms["past_actv_part"] = prefix .. "лёгший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "лёгши"; forms["past_adv_part_short"] = "" forms["pres_actv_part"] = "" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "ля́г" forms["impr_pl"] = prefix .. "ля́гте" forms["pres_futr_1sg"] = prefix .. "ля́гу" forms["pres_futr_2sg"] = prefix .. "ля́жешь" forms["pres_futr_3sg"] = prefix .. "ля́жет" forms["pres_futr_1pl"] = prefix .. "ля́жем" forms["pres_futr_2pl"] = prefix .. "ля́жете" forms["pres_futr_3pl"] = prefix .. "ля́гут" forms["past_m"] = prefix .. "лёг" forms["past_f"] = prefix .. "легла́" forms["past_n"] = prefix .. "легло́" forms["past_pl"] = prefix .. "легли́" return forms, title, categories end conjugations["irreg-зиждиться"] = 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[2]; if not prefix then prefix = "" end local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "зи́ждить" forms["past_actv_part"] = prefix .. "зи́ждивший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = prefix .. "зи́ждивши"; forms["past_adv_part_short"] = "" forms["pres_actv_part"] = prefix .. "зи́ждущий" forms["pres_adv_part"] = prefix .. "зи́ждя" forms["impr_sg"] = prefix .. "зи́жди" forms["impr_pl"] = prefix .. "зи́ждите" forms["pres_futr_1sg"] = prefix .. "зи́жду" forms["pres_futr_2sg"] = prefix .. "зи́ждешь" forms["pres_futr_3sg"] = prefix .. "зи́ждет" forms["pres_futr_1pl"] = prefix .. "зи́ждем" forms["pres_futr_2pl"] = prefix .. "зи́ждете" forms["pres_futr_3pl"] = prefix .. "зи́ждут" forms["past_m"] = prefix .. "зи́ждил" forms["past_f"] = prefix .. "зи́ждила" forms["past_n"] = prefix .. "зи́ждило" forms["past_pl"] = prefix .. "зи́ждили" return forms, title, categories end conjugations["irreg-клясть"] = 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[2]; if not prefix then prefix = "" end local forms = {} local categories = {"Russian irregular verbs"} local title = "irregular" local prefix = args[2]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. "кля́сть" forms["past_actv_part"] = prefix .. "кля́вший" forms["pres_pasv_part"] = prefix .. "кляну́щий" forms["past_adv_part"] = prefix .. "кля́вши"; forms["past_adv_part_short"] =prefix .. "кля́в" forms["pres_actv_part"] = prefix .. "кляну́щий" forms["pres_adv_part"] = prefix .. "кляня́" forms["impr_sg"] = prefix .. "кляни́" forms["impr_pl"] = prefix .. "кляни́те" forms["pres_futr_1sg"] = prefix .. "кляну́" forms["pres_futr_2sg"] = prefix .. "клянёшь" forms["pres_futr_3sg"] = prefix .. "клянёт" forms["pres_futr_1pl"] = prefix .. "клянём" forms["pres_futr_2pl"] = prefix .. "клянёте" forms["pres_futr_3pl"] = prefix .. "кляну́т" if args["past_m"] then forms["past_m"] = args["past_m"] forms["past_n"] = args["past_m"] .. "о" forms["past_pl"] = args["past_m"] .. "и" else forms["past_m"] = prefix .. "кля́л" forms["past_n"] = prefix .. "кля́ло" forms["past_pl"] = prefix .. "кля́ли" end forms["past_f"] = prefix .. "кляла́" return forms, title, categories end conjugations["irreg-слыхать-видать"] = 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[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") forms["infinitive"] = stem .. "ть" forms["past_actv_part"] = stem .. "вший" forms["pres_pasv_part"] = "" forms["past_adv_part"] = stem .. "вши"; forms["past_adv_part_short"] = stem .. "в" -- no present forms or imperatives forms["pres_actv_part"] = "" forms["pres_adv_part"] = "" forms["impr_sg"] = "" forms["impr_pl"] = "" forms["pres_futr_1sg"] = "" forms["pres_futr_2sg"] = "" forms["pres_futr_3sg"] = "" forms["pres_futr_1pl"] = "" forms["pres_futr_2pl"] = "" forms["pres_futr_3pl"] = "" forms["past_m"] = stem .. "л" forms["past_f"] = stem .. "ла" forms["past_n"] = stem .. "ло" forms["past_pl"] = stem .. "ли" return forms, title, categories end conjugations["irreg-стелить-стлать"] = 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[2] or (NAMESPACE == "Template" and "-") or error("Second parameter has not been provided") local prefix = args[3]; if not prefix then prefix = "" end forms["infinitive"] = prefix .. stem .. "ть" forms["past_actv_part"] = prefix .. stem .. "вший" forms["pres_pasv_part"] = prefix .. "стели́мый" forms["past_adv_part"] = prefix .. stem .. "вши"; forms["past_adv_part_short"] = prefix .. stem .. "в" forms["pres_actv_part"] = prefix .. "сте́лющий" forms["pres_adv_part"] = prefix .. "стеля́" forms["impr_sg"] = prefix .. "стели́" forms["impr_pl"] = prefix .. "стели́те" forms["pres_futr_1sg"] = prefix .. "стелю́" forms["pres_futr_2sg"] = prefix .. "сте́лешь" forms["pres_futr_3sg"] = prefix .. "сте́лет" forms["pres_futr_1pl"] = prefix .. "сте́лем" forms["pres_futr_2pl"] = prefix .. "сте́лете" forms["pres_futr_3pl"] = prefix .. "сте́лют" forms["past_m"] = prefix .. stem .. "л" forms["past_f"] = prefix .. stem .. "ла" forms["past_n"] = prefix .. stem .. "ло" forms["past_pl"] = prefix .. stem .. "ли" return forms, title, categories end

conjugations["irreg-быть"] = 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[2]; if not prefix then prefix = "" end local past_m = args["past_m"] local past_f = args["past_f"] local past_n = args["past_n"] local past_pl = args["past_pl"] if prefix == "" then forms["infinitive"] = "бы́ть" else forms["infinitive"] = prefix .. "бы́ть" end forms["past_actv_part"] = prefix .. "бы́вший" forms["pres_pasv_part"] = "" --only for "бы́ть" - бу́дучи if forms["infinitive"] == "бы́ть" then forms["past_adv_part"] = "бу́дучи"; forms["past_adv_part_short"] = "" end forms["past_adv_part"] = prefix .. "бы́вши"; forms["past_adv_part_short"] = prefix .. "бы́в" -- if the prefix is stressed if mw.ustring.find(prefix, "[́]") then forms["past_adv_part"] = prefix .. "бывши"; forms["past_adv_part_short"] = prefix .. "быв" end forms["pres_actv_part"] = "су́щий" forms["pres_adv_part"] = "" forms["impr_sg"] = prefix .. "бу́дь" forms["impr_pl"] = prefix .. "бу́дьте" -- only for "бы́ть", some forms are archaic if forms["infinitive"] == "бы́ть" then forms["pres_futr_1sg"] = "есмь" forms["pres_futr_2sg"] = "еси́" forms["pres_futr_3sg"] = "есть" forms["pres_futr_1pl"] = "есмы́" forms["pres_futr_2pl"] = "е́сте" forms["pres_futr_3pl"] = "суть" else forms["pres_futr_1sg"] = prefix .. "бу́ду" forms["pres_futr_2sg"] = prefix .. "бу́дешь" forms["pres_futr_3sg"] = prefix .. "бу́дет" forms["pres_futr_1pl"] = prefix .. "бу́дем" forms["pres_futr_2pl"] = prefix .. "бу́дете" forms["pres_futr_3pl"] = prefix .. "бу́дут" end -- if the prefix is stressed, e.g. "вы́быть" if mw.ustring.find(prefix, "[́]") then forms["pres_futr_1sg"] = prefix .. "буду" forms["pres_futr_2sg"] = prefix .. "будешь" forms["pres_futr_3sg"] = prefix .. "будет" forms["pres_futr_1pl"] = prefix .. "будем" forms["pres_futr_2pl"] = prefix .. "будете" forms["pres_futr_3pl"] = prefix .. "будут" end forms["past_m"] = prefix .. "бы́л" forms["past_f"] = prefix .. "была́" forms["past_n"] = prefix .. "бы́ло" forms["past_pl"] = prefix .. "бы́ли" -- if the prefix is stressed if mw.ustring.find(prefix, "[́]") then forms["past_m"] = prefix .. "был" forms["past_f"] = prefix .. "была" forms["past_n"] = prefix .. "было" forms["past_pl"] = prefix .. "были" end -- при́был if past_m then forms["past_m"] = past_m end -- прибыла́ if past_f then forms["past_f"] = past_f end -- сбыло́сь if past_n then forms["past_n"] = past_n end -- сбыли́сь if past_pl then forms["past_pl"] = 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["pres_futr_1sg"] = stem .. "у" forms["pres_futr_2sg"] = stem .. "ешь" forms["pres_futr_3sg"] = stem .. "ет" forms["pres_futr_1pl"] = stem .. "ем" forms["pres_futr_2pl"] = stem .. "ете" forms["pres_futr_3pl"] = stem .. "ут" end function present_e_b(forms, stem) if mw.ustring.find(stem, "[аэыоуяеиёю́]$") then forms["pres_futr_1sg"] = stem .. "ю́" forms["pres_futr_3pl"] = stem .. "ю́т" else forms["pres_futr_1sg"] = stem .. "у́" forms["pres_futr_3pl"] = stem .. "у́т" end forms["pres_futr_2sg"] = stem .. "ёшь" forms["pres_futr_3sg"] = stem .. "ёт" forms["pres_futr_1pl"] = stem .. "ём" forms["pres_futr_2pl"] = stem .. "ёте" end function present_e_c(forms, stem) local stem_noa = com.make_unstressed(stem) forms["pres_futr_1sg"] = stem_noa .. "у́" forms["pres_futr_2sg"] = stem .. "ешь" forms["pres_futr_3sg"] = stem .. "ет" forms["pres_futr_1pl"] = stem .. "ем" forms["pres_futr_2pl"] = stem .. "ете" forms["pres_futr_3pl"] = 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["pres_futr_1sg"] = iotated_stem .. "у" else forms["pres_futr_1sg"] = iotated_stem .. "ю" end if mw.ustring.find(iotated_stem, "[шщжч]$") then forms["pres_futr_3pl"] = iotated_stem .. "ут" else forms["pres_futr_3pl"] = iotated_stem .. "ют" end forms["pres_futr_2sg"] = iotated_stem .. "ешь" forms["pres_futr_3sg"] = iotated_stem .. "ет" forms["pres_futr_1pl"] = iotated_stem .. "ем" forms["pres_futr_2pl"] = iotated_stem .. "ете" if no_iotation then forms["pres_futr_1sg"] = stem .. "у" forms["pres_futr_3pl"] = stem .. "ут" forms["pres_futr_2sg"] = stem .. "ешь" forms["pres_futr_3sg"] = stem .. "ет" forms["pres_futr_1pl"] = stem .. "ем" forms["pres_futr_2pl"] = stem .. "ете" end end function present_je_b(forms, stem) forms["pres_futr_1sg"] = stem .. "ю́" forms["pres_futr_2sg"] = stem .. "ёшь" forms["pres_futr_3sg"] = stem .. "ёт" forms["pres_futr_1pl"] = stem .. "ём" forms["pres_futr_2pl"] = stem .. "ёте" forms["pres_futr_3pl"] = 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["pres_futr_1sg"] = iotated_stem_noa .. "у́" else forms["pres_futr_1sg"] = 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["pres_futr_3pl"] = iotated_stem .. "ут" else forms["pres_futr_3pl"] = iotated_stem .. "ют" end forms["pres_futr_2sg"] = iotated_stem .. "ешь" forms["pres_futr_3sg"] = iotated_stem .. "ет" forms["pres_futr_1pl"] = iotated_stem .. "ем" forms["pres_futr_2pl"] = 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["pres_futr_1sg"] = iotated_stem .. "у" else forms["pres_futr_1sg"] = iotated_stem .. "ю" end if mw.ustring.find(stem, "[шщжч]$") then forms["pres_futr_3pl"] = stem .. "ат" else forms["pres_futr_3pl"] = stem .. "ят" end forms["pres_futr_2sg"] = stem .. "ишь" forms["pres_futr_3sg"] = stem .. "ит" forms["pres_futr_1pl"] = stem .. "им" forms["pres_futr_2pl"] = 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["pres_futr_1sg"] = "" -- Verbs ending in a hushing consonant do not get j-vowels in the endings. elseif mw.ustring.find(iotated_stem, "[шщжч]$") then forms["pres_futr_1sg"] = iotated_stem .. "у́" else forms["pres_futr_1sg"] = iotated_stem .. "ю́" end if mw.ustring.find(stem, "[шщжч]$") then forms["pres_futr_3pl"] = stem .. "а́т" else forms["pres_futr_3pl"] = stem .. "я́т" end forms["pres_futr_2sg"] = stem .. "и́шь" forms["pres_futr_3sg"] = stem .. "и́т" forms["pres_futr_1pl"] = stem .. "и́м" forms["pres_futr_2pl"] = 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["pres_futr_1sg"] = iotated_stem .. "у́" else forms["pres_futr_1sg"] = iotated_stem .. "ю́" end if mw.ustring.find(stem, "[шщжч]$") then forms["pres_futr_3pl"] = stem .. "ат" else forms["pres_futr_3pl"] = stem .. "ят" end if mw.ustring.find(stem, "[шщжч]$") then forms["pres_futr_3pl"] = stem .. "ат" else forms["pres_futr_3pl"] = stem .. "ят" end forms["pres_futr_2sg"] = stem .. "ишь" forms["pres_futr_3sg"] = stem .. "ит" forms["pres_futr_1pl"] = stem .. "им" forms["pres_futr_2pl"] = 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[key] = 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[key] = form .. "сь" else forms[key] = form .. "ся" end end end -- This form does not exist for reflexive verbs. forms["past_adv_part_short"] = "" end -- Make the table function make_table(forms, title, perf, intr, impers) local title = ("Conjugation of %s %s"):format( forms["infinitive"], title and " (" .. title .. ")" or "" ) -- Intransitive verbs have no passive participles. if intr then forms["pres_pasv_part"] = "" forms["pres_pasv_part2"] = nil forms["past_pasv_part"] = "" forms["past_pasv_part2"] = nil end if impers then forms["pres_futr_1sg"] = "" forms["pres_futr_2sg"] = "" forms["pres_futr_1pl"] = "" forms["pres_futr_2pl"] = "" forms["pres_futr_3pl"] = "" forms["past_m"] = "" forms["past_f"] = "" forms["past_pl"] = "" forms["pres_actv_part"] = "" forms["past_actv_part"] = "" forms["pres_adv_part"] = "" forms["past_adv_part"] = "" forms["past_adv_part_short"] = "" forms["impr_sg"] = "" forms["impr_pl"] = "" --alternatives forms["pres_futr_1sg2"] = nil forms["pres_futr_2sg2"] = nil forms["pres_futr_1pl2"] = nil forms["pres_futr_2pl2"] = nil forms["pres_futr_3pl2"] = nil forms["past_m2"] = nil forms["past_m3"] = nil forms["past_f2"] = nil forms["past_pl2"] = nil forms["pres_actv_part2"] = nil forms["past_actv_part2"] = nil forms["pres_adv_part2"] = nil forms["past_adv_part2"] = nil forms["past_adv_part_short2"] = nil forms["impr_sg2"] = nil forms["impr_pl2"] = nil end -- Perfective verbs have no present forms. if perf then forms["pres_actv_part"] = "" forms["pres_pasv_part"] = "" forms["pres_adv_part"] = "" forms["pres_1sg"] = "" forms["pres_2sg"] = "" forms["pres_3sg"] = "" forms["pres_1pl"] = "" forms["pres_2pl"] = "" forms["pres_3pl"] = "" --alternatives forms["pres_actv_part2"] = nil forms["pres_pasv_part2"] = nil forms["pres_adv_part2"] = nil forms["pres_1sg2"] = nil forms["pres_2sg2"] = nil forms["pres_3sg2"] = nil forms["pres_1pl2"] = nil forms["pres_2pl2"] = nil forms["pres_3pl2"] = nil forms["futr_1sg"] = forms["pres_futr_1sg"] forms["futr_2sg"] = forms["pres_futr_2sg"] forms["futr_3sg"] = forms["pres_futr_3sg"] forms["futr_1pl"] = forms["pres_futr_1pl"] forms["futr_2pl"] = forms["pres_futr_2pl"] forms["futr_3pl"] = forms["pres_futr_3pl"] -- alternatives forms["futr_1sg2"] = forms["pres_futr_1sg2"] forms["futr_2sg2"] = forms["pres_futr_2sg2"] forms["futr_3sg2"] = forms["pres_futr_3sg2"] forms["futr_1pl2"] = forms["pres_futr_1pl2"] forms["futr_2pl2"] = forms["pres_futr_2pl2"] forms["futr_3pl2"] = forms["pres_futr_3pl2"] else forms["pres_1sg"] = forms["pres_futr_1sg"] forms["pres_2sg"] = forms["pres_futr_2sg"] forms["pres_3sg"] = forms["pres_futr_3sg"] forms["pres_1pl"] = forms["pres_futr_1pl"] forms["pres_2pl"] = forms["pres_futr_2pl"] forms["pres_3pl"] = forms["pres_futr_3pl"] forms["pres_2sg"] = forms["pres_futr_2sg"] -- alternatives forms["pres_1sg2"] = forms["pres_futr_1sg2"] forms["pres_2sg2"] = forms["pres_futr_2sg2"] forms["pres_3sg2"] = forms["pres_futr_3sg2"] forms["pres_1pl2"] = forms["pres_futr_1pl2"] forms["pres_2pl2"] = forms["pres_futr_2pl2"] forms["pres_3pl2"] = forms["pres_futr_3pl2"] end local inf = forms["infinitive"] local inf_tr = translit.tr(forms["infinitive"]) -- 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[key] = "" .. form .. " " .. translit.tr(form) .. " "       else forms[key] = "—" end end if not perf then forms["futr_1sg"] = "бу́ду " .. inf .. " búdu " .. inf_tr .. " "        forms["futr_2sg"] = "бу́дешь " .. inf .. " búdešʹ " .. inf_tr .. " "       forms["futr_3sg"] = "бу́дет " .. inf .. " búdet " .. inf_tr .. " "       forms["futr_1pl"] = "бу́дем " .. inf .. " búdem " .. inf_tr .. " "       forms["futr_2pl"] = "бу́дете " .. inf .. " búdete " .. inf_tr .. " "       forms["futr_3pl"] = "бу́дут " .. inf .. " búdut " .. inf_tr .. " "   end

-- only for "бы́ть" the future forms are бу́ду, бу́дешь, etc.   if inf == "бы́ть" then forms["futr_1sg"] = "бу́ду " .. " <span style=\"color: #888\">búdu " .. " "        forms["futr_2sg"] = "<span lang=\"ru\" class=\"Cyrl\">бу́дешь " .. " <span style=\"color: #888\">búdešʹ " .. " "       forms["futr_3sg"] = "<span lang=\"ru\" class=\"Cyrl\">бу́дет "  .. " <span style=\"color: #888\">búdet " .. " "       forms["futr_1pl"] = "<span lang=\"ru\" class=\"Cyrl\">бу́дем "  .. " <span style=\"color: #888\">búdem "  .. " "       forms["futr_2pl"] = "<span lang=\"ru\" class=\"Cyrl\">бу́дете "  .. " <span style=\"color: #888\">búdete "  .. " "       forms["futr_3pl"] = "<span lang=\"ru\" class=\"Cyrl\">бу́дут "  .. " <span style=\"color: #888\">búdut "  .. " "   end if impers then forms["futr_1sg"] = "" forms["futr_2sg"] = "" forms["futr_1pl"] = "" forms["futr_2pl"] = "" forms["futr_3pl"] = "" --alternatives forms["futr_1sg2"] = nil forms["futr_2sg2"] = nil forms["futr_1pl2"] = nil forms["futr_2pl2"] = nil forms["futr_3pl2"] = nil end if forms["past_adv_part_short"] ~= "—" then forms["past_adv_part"] = forms["past_adv_part_short"] .. ", " .. forms["past_adv_part"] 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[k])=='table' then forms[k][n] = v               else forms[k] = { [1]=forms[k]; [n]=v } end else if type(forms[k])=='table' then forms[k][1] = v               else forms[k] = v               end end end end -- concatenate alt-forms for k, v in forms do       if type(v) == 'table' then forms[k] = table.concat(v,', ') end end return table.concat({[=[ ]=], title , [=[  ]=]}) end return export

title: Module:User:Ignatus/ru-verb/sandbox


text:
underdrag

Etymology
From.

Noun

 * 1)  The tensile stress exerted by an overthrust rock mass upon overlying rocks which themselves are not under compressive thrusting stress and therefore tend to be stretched and broken by normal faulting.

Verb

 * 1)  To exert pull on the underside of (something).
 * 2)  To undergo a pull from the underside.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

authors: Celui qui crée ébauches de football anglais

title: underdrag


text:
trúss

Noun

 * 1) baggage

title: trúss


text: stub-tailed morphos

title: stub-tailed morphos


text:
færi

Etymology 1
From, from.

Noun

 * 1) opportunity, chance
 * 2)  line and tackle
 * 3) range

title: færi


text:
dorminhoco

Etymology
From.

Noun

 * 1)  sleepyhead

Adjective

 * 1)  sleepy, dozy

title: dorminhoco


text:
telugo

Etymology
From.

Noun

 * 1) Telugu Dravidian language of India

title: telugo


text: tentá

title: tentá


text:
tenção

Noun

 * 1) purpose, intent, design, plan
 * 2) devotion

title: tenção


text:
venalidade

Noun

 * 1) venality

title: venalidade


text: gentinhas

title: gentinhas


text: geômetras

title: geômetras


text: incompreensões

title: incompreensões


text: lavatórios

title: lavatórios


text: lavouras

title: lavouras


text: louçanias

title: louçanias


text: louças

title: louças


text: malquerenças

title: malquerenças


text: malevolências

title: malevolências


text: pantanais

title: pantanais


text: papelinhos

title: papelinhos


text: papelzinhos

title: papelzinhos


text: papelões

title: papelões


text: perdições

title: perdições


text: perebas

title: perebas


text: poentes

title: poentes


text: prestígios

title: prestígios


text: pretensões

title: pretensões


text: imperscrutáveis

title: imperscrutáveis


text: receituários

title: receituários


text: recheados

title: recheados


text: impiedosa

title: impiedosa


text: sentinelas

title: sentinelas


text: impiedosos

title: impiedosos


text: senzalas

title: senzalas


text: sociocracias

title: sociocracias


text: impiedosas

title: impiedosas


text: dorminhocos

title: dorminhocos


text: incompreensíveis

title: incompreensíveis


text: tenções

title: tenções


text: venalidades

title: venalidades


text: compreensíveis

title: compreensíveis


text: plutônica

title: plutônica


text: plutônicos

title: plutônicos


text: plutônicas

title: plutônicas


text: pressurosa

title: pressurosa


text: pressurosos

title: pressurosos


text: pressurosas

title: pressurosas


text: recheada

title: recheada


text: recheadas

title: recheadas


text: socialística

title: socialística


text: socialísticos

title: socialísticos


text: socialísticas

title: socialísticas


text: dorminhoca

title: dorminhoca


text: dorminhocas

title: dorminhocas


text: abotoares

title: abotoares


text: abotoarmos

title: abotoarmos


text: abotoardes

title: abotoardes


text: abotoarem

title: abotoarem


text: abotoando

title: abotoando


text: abotoado

title: abotoado


text: abotoados

title: abotoados


text: abotoada

title: abotoada


text: abotoadas

title: abotoadas


text: abotoo

title: abotoo


text: abotôo

title: abotôo


text: abotoas

title: abotoas


text: abotoa

title: abotoa


text: abotoamos

title: abotoamos


text: abotoais

title: abotoais


text: abotoam

title: abotoam


text: abotoava

title: abotoava


text: abotoavas

title: abotoavas


text: abotoávamos

title: abotoávamos


text: abotoáveis

title: abotoáveis


text: abotoavam

title: abotoavam


text: abotoei

title: abotoei


text: abotoaste

title: abotoaste


text: abotoou

title: abotoou


text: abotoámos

title: abotoámos


text: abotoastes

title: abotoastes


text: abotoaram

title: abotoaram


text: abotoara

title: abotoara


text:
ensonado

Etymology
From.

Adjective

 * 1) sleepy, drowsy

title: ensonado


text: abotoaras

title: abotoaras


text: abotoáramos

title: abotoáramos


text: abotoáreis

title: abotoáreis


text: abotoarei

title: abotoarei


text: abotoarás

title: abotoarás


text: abotoará

title: abotoará


text: abotoaremos

title: abotoaremos


text: abotoareis

title: abotoareis


text: abotoarão

title: abotoarão


text: abotoaria

title: abotoaria


text: abotoarias

title: abotoarias


text: abotoaríamos

title: abotoaríamos


text: abotoaríeis

title: abotoaríeis


text: abotoariam

title: abotoariam


text: abotoe

title: abotoe


text: abotoes

title: abotoes


text: abotoemos

title: abotoemos


text: abotoeis

title: abotoeis


text: abotoem

title: abotoem


text: abotoasse

title: abotoasse


text: abotoasses

title: abotoasses


text: abotoássemos

title: abotoássemos


text: abotoásseis

title: abotoásseis


text: abotoassem

title: abotoassem


text: abotoai

title: abotoai


text:
Thread:User talk:Yair rand/Problem with the translation editor/reply (3)

Done. The types of edits that were causing problems last time seem to be working fine now, but there still might be problems in other areas.


text:
pässinpää

Noun

 * 1) idiot

title: pässinpää


text:
Thread:User talk:Yair rand/Problem with the translation editor/reply (4)

Ok, thank you.


text: näytteitä

title: näytteitä


text:
couronnâtion

Etymology
or from, borrowed from , from.

Noun

 * 1)  coronation

title: couronnâtion


text: coronâtion

title: coronâtion


text: coronâtions

title: coronâtions


text:
nǫs

Etymology
From, from ,. Compare 🇨🇬.

Noun

 * 1) nose

title: nǫs


text:
Thread:User talk:Yair rand/show the links to senseids/reply (3)

Make the link icons optional? That could work, I guess. Full JS code would be  (possibly buggy), and I guess it could be added to either WT:PREFS or as gadget, or both.

Regular adoption of is still essentially blocked by the fact that the regular linking templates don't support any way to link to the senses. With the deployment of Lua, I had hoped that would have support added (as I proposed here), but things seem to be happening disappointingly slowly...


text: couronnâtions

title: couronnâtions


text:
couorône

Etymology
From, from , from.

Noun

 * 1)  crown

title: couorône


text: couorônes

title: couorônes


text:
Module talk:language utilities

Generating lists
It might be a good idea to add a function or functions to generate lists or tables of languages. WT:LANG has three important listings that are likely to contain out-of-date information at any particular time.

 * 1) WT:LANG
 * 2) WT:LANG
 * 3) WT:LANG}

There’s also the big WT:LANGLIST. Would be nice if they could be generated automatically from the source. —Michael Z. 2013-06-02 22:07 z
 * It's definitely possible, but does it really belong in this module if it's only used for that one page? 22:08, 2 June 2013 (UTC)

 * That’s two pages, including the big list which is now becoming obsolete.

 * A separate module would be okay too, but if such utility scripts are flexible enough to use elsewhere, it makes sense to bundle them here. Unless that adversely affects performance.

 * Might also be useful to output a single language’s vital statistics, for pages like Category:English language and WT:About English. —Michael Z. 2013-06-02 22:20 z
 * I'm thinking more of something that would replace what used to do. Apart from showing all the bits of information associated with the code, it would check for certain pieces of information and add the code to a category if it were missing. So it would show which languages needed a script, or which needed a family, and so on. We can't use categories anymore, but we can make a page that is automatically filled by the function depending on the information, so we could make lists.  22:24, 2 June 2013 (UTC)

I left a note related to this discussion at Module_talk:languages. --Z 09:39, 4 June 2013 (UTC)

title: Module talk:language utilities


text:
ġawhra

Noun

 * : a jewel, pearl, piece of jewellery

title: ġawhra


text:
bruggari

Etymology
From.

Noun

 * 1) brewer

title: bruggari


text:
ABAKO

Etymology
Shortened form of.

Proper noun

 * 1) A cultural and political organization from the 1950s opposed to Belgian colonial rule in what later became the Democratic Republic of the Congo.

title: ABAKO


text: Wiktionary:Foreign Word of the Day/2013/June 3