Sunday, April 21, 2013

Wiktionary - Recent changes [en]: Module:ru-verb

Wiktionary - Recent changes [en]
Track the most recent changes to the wiki in this feed. // via fulltextrssfeed.com
  --[=[      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")         local forms, title, categories         if conjugations[conj_type] then          forms, title, categories = conjugations[conj_type](args)      else          error("Unknown conjugation type '" .. conj_type .. "'")      end         -- This form is not always present on verbs, so it needs to be specified explicitly.      forms["past_pasv_part"] = args["past_pasv_part"] or ""         local intr = (verb_type == "impf-intr" or verb_type == "pf-intr")      local refl = (verb_type == "impf-refl" or verb_type == "pf-refl")      local perf = (verb_type == "pf" or verb_type == "pf-intr" or verb_type == "pf-refl")         -- Perfective/imperfective      if perf then          table.insert(categories, "Russian perfective verbs")      else          table.insert(categories, "Russian imperfective verbs")      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         local ret = ""         if NAMESPACE == "" then          local sort_key = com.sort_key(PAGENAME)          for key, cat in ipairs(categories) do              ret = ret .. "[[Category:" .. cat .. "|" .. sort_key .. "]]"          end      end         return make_table(forms, title, perf, intr or refl) .. ret  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")         forms["infinitive"] = stem .. "ть"         forms["pres_actv_part"] = stem .. "ющий"      forms["past_actv_part"] = stem .. "вший"      forms["pres_pasv_part"] = stem .. "емый"      forms["pres_adv_part"] = stem .. "я"      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["1irreg"] = function(args)      -- for irregular verbs in this group "живописа́ть" and "минова́ть", mixture of types 1 and 2      local forms = {}      local categories = {"Russian class 1 verbs"}      local title = "class 1"         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")         if pres_stem == nil then          local pres_stem = inf_stem      end         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["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, "[ео]ва$", "у")      pres_stem = mw.ustring.gsub(pres_stem, "[ео]́ва$", "у́")      pres_stem = mw.ustring.gsub(pres_stem, "[ео]ва́$", "у́")         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")      -- "y" if no short past forms to be used      local no_short_past = args[3]      -- "y" if no short past participle forms to be used      local no_short_past_partcpl = args[4]      -- "нь" if "-нь"/"-ньте" instead of "-ни"/"-ните" in the imperative      local impr_end = args[5]      -- optional full infinitive form for verbs like достичь      local full_inf = args[6]      -- optional short masculine past form for verbs like вять      local past_m_short = args[7]         -- if full infinitive is not passed, build from the stem, otherwise use the optional parameter      if full_inf == nil or 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 "нь"      if impr_end ~= nil then          forms["impr_sg"] = stem .. impr_end          forms["impr_pl"] = stem .. impr_end .. "те"      else -- default          forms["impr_sg"] = stem .. "ни"          forms["impr_pl"] = stem .. "ни" .. "те"      end         -- if the 4rd argument is not equal "y", is empty or is absent, add short past active participle,      -- both short and long will be used      if no_short_past_partcpl ~= "y" or no_short_past_partcpl == nil or no_short_past_partcpl == "" then           forms["past_actv_part_short"] = stem .. "ший"      elseif no_short_past_partcpl == "y" then          forms["past_actv_part_short"] = ""      end         forms["past_m"] = stem .. "нул"      forms["past_f"] = stem .. "нула"      forms["past_n"] = stem .. "нуло"      forms["past_pl"] = stem .. "нули"         -- if the 3rd argument is not equal "y", is empty or is absent, add short past forms      if no_short_past ~= "y" or no_short_past == nil or 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 == "n" then          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      if past_m_short ~= nil then          forms["past_m_short"] = past_m_short              end         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          if forms["past_actv_part_short"] ~= "" then          forms["past_actv_part"] = forms["past_actv_part_short"] .. ", " .. forms["past_actv_part"]      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["3irreg"] = function(args)      -- for an irregular verb in this group "ми́нуть"      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_c(forms, stem)         forms["pres_futr_1sg"] = "(" .. forms["pres_futr_1sg"] .. ")"         -- no imperative      forms["impr_sg"] = ""      forms["impr_pl"] = ""         forms["past_m"] = stem .. "у́л"      forms["past_f"] = stem .. "у́ла"      forms["past_n"] = stem .. "у́ло"      forms["past_pl"] = stem .. "у́ли"         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 = args[3]         --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      if mw.ustring.find(stem, "[аэыоуяеиёю́]$") and impr_end == nil then          impr_end = "й"      -- "и" after two consonants in a row (мо́рщить, зафре́ндить), no parameter passed      elseif mw.ustring.find(stem, "[бвгджзклмнпрстфхцчшщ][бвгджзклмнпрстфхцчшщ]$") and impr_end == nil then          impr_end = "и"      -- "ь" after a single consonant (бре́дить), no parameter passed      elseif mw.ustring.find(stem, "[аэыоуяеиёю́C$]$") and impr_end == nil 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 .. "ив"         present_i_a(forms, stem)         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")         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 .. "и́в"         present_i_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["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")         -- 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 .. "и́те"         present_i_c(forms, stem)         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["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        --[=[      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)      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_c(forms, stem)      local stem_noa = com.remove_accents(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)      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_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.remove_accents(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 -i-.  function present_i_a(forms, stem)      local iotated_stem = com.iotation(stem)         -- 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)      -- Verbs ending in a hushing consonant do not get j-vowels in the endings.      local iotated_stem = com.iotation(stem)         if mw.ustring.find(iotated_stem, "[шщжч]$") then          forms["pres_futr_1sg"] = iotated_stem .. "у́"      else          forms["pres_futr_1sg"] = iotated_stem .. "ю́"      end         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_i_c(forms, stem)         local stem_noa = com.remove_accents(stem)      local iotated_stem = com.iotation(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_futr_1sg"] = iotated_stem .. "у́  TEST: here1"      else          forms["pres_futr_1sg"] = iotated_stem .. "ю́ TEST: here2"      end         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     -- 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          if 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)      if forms["past_adv_part_short"] ~= "" then          forms["past_adv_part"] = forms["past_adv_part_short"] .. ", " .. forms["past_adv_part"]      end         -- Intransitive verbs have no passive participles.      if intr then          forms["pres_pasv_part"] = ""          forms["past_pasv_part"] = ""      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"] = ""             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"]      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["futr_1sg"] = "бу́ду " .. forms["infinitive"]          forms["futr_2sg"] = "бу́дешь " .. forms["infinitive"]          forms["futr_3sg"] = "бу́дет " .. forms["infinitive"]          forms["futr_1pl"] = "бу́дем " .. forms["infinitive"]          forms["futr_2pl"] = "бу́дете " .. forms["infinitive"]          forms["futr_3pl"] = "бу́дут " .. forms["infinitive"]      end         local title = "Conjugation of <span lang=\"ru\" class=\"Cyrl\">''" .. forms["infinitive"] .. "''</span>" .. (title and " (" .. title .. ")" or "")         -- Add transliterations to all forms      for key, form in pairs(forms) do          if form ~= "" then              forms[key] = "<span lang=\"ru\" class=\"Cyrl\">" .. form .. "</span><br/>" .. translit.tr(form)          else              forms[key] = "&mdash;"          end      end         return [=[<div class="NavFrame" style="width:49.6em;">  <div class="NavHead" style="text-align:left; background:#e0e0ff;">]=] .. title .. [=[</div>  <div class="NavContent">  {| class="inflection inflection-ru inflection-verb"  |+ Note 1: for declension of participles, see their entries. Adverbial participles are indeclinable.  |- class="rowgroup"  ! colspan="3" | ]=] .. (perf and [=[[[совершенный вид|perfective aspect]]]=] or [=[[[несовершенный вид|imperfective aspect]]]=]) .. [=[     |-  ! [[неопределённая форма|infinitive]]  | colspan="2" | ]=] .. forms["infinitive"] .. [=[     |- class="rowgroup"  ! style="width:15em" | [[причастие|participles]]  ! [[настоящее время|present tense]]  ! [[прошедшее время|past tense]]  |-  ! [[действительный залог|active]]  | ]=] .. forms["pres_actv_part"] .. [=[ || ]=] .. forms["past_actv_part"] .. [=[     |-  ! [[страдательный залог|passive]]  | ]=] .. forms["pres_pasv_part"] .. [=[ || ]=] .. forms["past_pasv_part"] .. [=[     |-  ! [[деепричастие|adverbial]]  | ]=] .. forms["pres_adv_part"] .. [=[ || ]=] .. forms["past_adv_part"] .. [=[     |- class="rowgroup"  !   ! [[настоящее время|present tense]]  ! [[будущее время|future tense]]  |-  ! [[первое лицо|1st]] [[единственное число|singular]] (<span lang="ru" class="Cyrl">я</span>)  | ]=] .. forms["pres_1sg"] .. [=[ || ]=] .. forms["futr_1sg"] .. [=[     |-  ! [[второе лицо|2nd]] [[единственное число|singular]] (<span lang="ru" class="Cyrl">ты</span>)  | ]=] .. forms["pres_2sg"] .. [=[ || ]=] .. forms["futr_2sg"] .. [=[     |-  ! [[третье лицо|3rd]] [[единственное число|singular]] (<span lang="ru" class="Cyrl">он/она́/оно́</span>)  | ]=] .. forms["pres_3sg"] .. [=[ || ]=] .. forms["futr_3sg"] .. [=[     |-  ! [[первое лицо|1st]] [[множественное число|plural]] (<span lang="ru" class="Cyrl">мы</span>)  | ]=] .. forms["pres_1pl"] .. [=[ || ]=] .. forms["futr_1pl"] .. [=[     |-  ! [[второе лицо|2nd]] [[множественное число|plural]] (<span lang="ru" class="Cyrl">вы</span>)  | ]=] .. forms["pres_2pl"] .. [=[ || ]=] .. forms["futr_2pl"] .. [=[     |-  ! [[третье лицо|3rd]] [[множественное число|plural]] (<span lang="ru" class="Cyrl">они́</span>)  | ]=] .. forms["pres_3pl"] .. [=[ || ]=] .. forms["futr_3pl"] .. [=[     |- class="rowgroup"  ! [[повелительное наклонение|imperative]]  ! [[единственное число|singular]]  ! [[множественное число|plural]]  |-  !   | ]=] .. forms["impr_sg"] .. [=[ || ]=] .. forms["impr_pl"] .. [=[     |- class="rowgroup"  ! [[прошедшее время|past tense]]  ! [[единственное число|singular]]  ! [[множественное число|plural]]<br/>(<span lang="ru" class="Cyrl">мы/вы/они́</span>)  |-  ! [[мужской род|masculine]] (<span lang="ru" class="Cyrl">я/ты/он</span>)  | ]=] .. forms["past_m"] .. [=[ || rowspan="3" | ]=] .. forms["past_pl"] .. [=[     |-  ! [[женский род|feminine]] (<span lang="ru" class="Cyrl">я/ты/она́</span>)  | ]=] .. forms["past_f"] .. [=[     |-   ! style="background-color:#ffffe0; text-align:left;" | [[средний род|neuter]] (<span lang="ru" class="Cyrl">оно́</span>)  | ]=] .. forms["past_n"] .. [=[     |}  </div>  </div>]=]  end     return export  

Module:ru-verb
Apr 22nd 2013, 02:46

(One intermediate revision by one user not shown)
Line 506: Line 506:
 

forms["pres_adv_part"] = stem_noa .. "я́"

 

forms["pres_adv_part"] = stem_noa .. "я́"

 

end

 

end

 

-- Verbs ending in a hushing consonant do not get j-vowels in the endings, same check for pres_futr_1sg

 

-- the same for stressed stem

 

--[=[

 
 

if mw.ustring.find(iotated_stem, "[шщжч]$") then

 

forms["pres_futr_1sg"] = iotated_stem .. "у́"

 

else

 

forms["pres_futr_1sg"] = iotated_stem .. "ю́"

 

end

 
 

forms["pres_futr_2sg"] = stem .. "ишь"

 

forms["pres_futr_3sg"] = stem .. "ит"

 

forms["pres_futr_1pl"] = stem .. "им"

 

forms["pres_futr_2pl"] = stem .. "ите"

 
 

]=]--

 
   
 

forms["impr_sg"] = stem_noa .. "и́"

 

forms["impr_sg"] = stem_noa .. "и́"

 

forms["impr_pl"] = stem_noa .. "и́те"

 

forms["impr_pl"] = stem_noa .. "и́те"

   

-- TESTING

+

present_i_c(forms, stem)

--present_i_c(forms, stem)

 
   
 

forms["past_m"] = stem_noa .. "и́л"

 

forms["past_m"] = stem_noa .. "и́л"

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions