text:
Module:be-verb

local export = {}

--[=[

Authorship: Ben Wing

]=]

--[=[

TERMINOLOGY:

-- "slot" = A particular combination of tense/mood/person/number/gender/etc. Example slot names for verbs are "pres_1sg" (present first singular) and "past_pasv_part" (past passive participle). Each slot is filled with zero or more forms.

-- "form" = The conjugated Belarusian form representing the value of a given slot.

-- "lemma" = The dictionary form of a given Belarusian term. Generally the infinitive, but may occasionally be another form if the infinitive is missing. ]=]

local lang = require("Module:languages").getByCode("be") local m_links = require("Module:links") local m_table = require("Module:table") local m_string_utilities = require("Module:string utilities") local m_script_utilities = require("Module:script utilities") local iut = require("Module:inflection utilities") local m_para = require("Module:parameters") local com = require("Module:be-common")

local current_title = mw.title.getCurrentTitle local NAMESPACE = current_title.nsText local PAGENAME = current_title.text

local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rgmatch = mw.ustring.gmatch local rsubn = mw.ustring.gsub local ulen = mw.ustring.len local uupper = mw.ustring.upper

local AC = u(0x0301) -- acute = ́

-- version of rsubn that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end

-- version of rsubn that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end

local function tag_text(text) return m_script_utilities.tag_text(text, lang) end

local output_verb_slots = { ["infinitive"] = "inf", ["pres_actv_part"] = "pres|act|part", ["past_pasv_part"] = "past|pass|part", ["pres_adv_part"] = "pres|adv|part", ["past_adv_part"] = "past|adv|part", ["pres_1sg"] = "1|s|pres|ind", ["pres_2sg"] = "2|s|pres|ind", ["pres_3sg"] = "3|s|pres|ind", ["pres_1pl"] = "1|p|pres|ind", ["pres_2pl"] = "2|p|pres|ind", ["pres_3pl"] = "3|p|pres|ind", ["futr_1sg"] = "1|s|fut|ind", ["futr_2sg"] = "2|s|fut|ind", ["futr_3sg"] = "3|s|fut|ind", ["futr_1pl"] = "1|p|fut|ind", ["futr_2pl"] = "2|p|fut|ind", ["futr_3pl"] = "3|p|fut|ind", ["impr_sg"] = "2|s|imp", ["impr_pl"] = "2|p|imp", ["past_m"] = "m|s|past|ind", ["past_f"] = "f|s|past|ind", ["past_n"] = "n|s|past|ind", ["past_pl"] = "p|past|ind", }

local input_verb_slots = {} for slot, _ in pairs(output_verb_slots) do	if rfind(slot, "^pres_[123]") then table.insert(input_verb_slots, rsub(slot, "^pres_", "pres_futr_")) elseif not rfind(slot, "^futr_") then table.insert(input_verb_slots, slot) end end

local budu_forms = { ["1sg"] = "бу́ду", ["2sg"] = "бу́дзеш", ["3sg"] = "бу́дзе", ["1pl"] = "бу́дзем", ["2pl"] = "бу́дзеце", ["3pl"] = "бу́дуць", }

local allowed_class_7_specs = { ["д"] = "д", ["d"] = "д", ["т"] = "т", ["t"] = "т", ["с"] = "с", ["s"] = "с", ["ст"] = "ст", ["st"] = "ст", ["в"] = "в", ["v"] = "в", }

local function destress_ending(ending) if type(ending) == "string" then return com.remove_accents(ending) else for i, e in ipairs(ending) do			ending[i] = destress_ending(e) end return ending end end

local function skip_slot(base, slot) if slot == "infinitive" then return false end if base.nopres and (rfind(slot, "pres") or rfind(slot, "futr")) then return true end if base.nopast and rfind(slot, "past") then return true end if base.noimp and rfind(slot, "impr") then return true end if base.impers then if rfind(slot, "3sg") or rfind(slot, "adv_part") or slot == "past_n" then return false else return true end end if (base.only3 or base.only3pl) and rfind(slot, "[12]") then return true end if (base.onlypl or base.only3pl) and (rfind(slot, "sg") or rfind(slot, "^past_[mfn]$")) then return true end if base.only3orpl and rfind(slot, "[12]sg") then return true end return false end

local function combine_stem_ending(stem, ending) if stem == "?" then return "?" else if com.is_accented(ending) then stem = com.remove_accents(stem) end return com.destress_vowels_after_stress_movement(stem .. ending) end end

local function palatalize_td(stem) stem = rsub(stem, "т$", "ц") stem = rsub(stem, "д$", "дз") return stem end

local function add(base, slot, stem, ending) if skip_slot(base, slot) then return end if type(ending) == "table" then for _, e in ipairs(ending) do			add(base, slot, stem, e)		end return end if rfind(ending, "^[яеіёюь]") then if type(stem) == "table" then local new_form = palatalize_td(stem.form) if new_form ~= stem.form then stem = m_table.shallowcopy(stem) stem.form = new_form end else stem = palatalize_td(stem) end end iut.add_forms(base.forms, slot, stem, ending, combine_stem_ending) end

local function add_user_supplied(base, slot, form) iut.insert_form(base.forms, slot, {form = form}) end

local function add_imperative(base, sg2, footnote) local sg2form = iut.combine_form_and_footnotes(sg2, footnote) add(base, "impr_sg", sg2form, "") add(base, "impr_pl", sg2form, "це") end

local function add_imperative_from_present(base, presstem) local imptype = base.imptype if not imptype then if com.ends_in_vowel(presstem) then imptype = "short" elseif base.accent == "b" or base.accent == "c" then imptype = "long" elseif rfind(presstem, "^вы́") then imptype = "long" elseif rfind(presstem, com.vowel_c .. "́?д[зж]$") then imptype = "short" elseif rfind(presstem, com.cons_c .. com.cons_c .. "$") then imptype = "long" else imptype = "short" end end local sg2 if imptype == "long" then vowel = com.ends_always_hard(presstem) and "ы" or "і" if base.accent == "a" then sg2 = palatalize_td(presstem) .. vowel else sg2 = palatalize_td(com.remove_accents(presstem)) .. vowel .. AC		end elseif com.ends_in_vowel(presstem) then sg2 = presstem .. "й" elseif com.ends_always_hard(presstem) then sg2 = presstem elseif rfind(presstem, "в$") then sg2 = rsub(presstem, "в$", "ў") else sg2 = palatalize_td(presstem) .. "ь" end add_imperative(base, sg2) end

local function add_pres_adv_part(base, stem, pl3) if base.aspect ~= "pf" then if type(base.pradp) == "table" then for _, pradp in ipairs(base.pradp) do				if pradp ~= "-" then add_user_supplied(base, "pres_adv_part", pradp) end end elseif type(pl3) == "string" then local pradp = base.pradp if not pradp then pradp = com.is_accented(pl3) and "+" or "-" end local pl3base = rmatch(pl3, "^(.-)ць$") if not pl3base then error("Invalid third-plural ending, doesn't end in -ць: '" .. pl3 .. "'") end for _, parttype in ipairs(rsplit(pradp, "")) do				local ending if parttype == "-" then ending = com.remove_accents(pl3base) .. "чы" elseif parttype == "!" then ending = com.add_monosyllabic_accent(pl3base) .. "чы" elseif parttype == "+" then ending = com.remove_accents(pl3base) .. "чы́" else error("Internal error: Unrecognized present adverbial participle indicator '" .. parttype .. "'") end add(base, "pres_adv_part", stem, ending) end end end end

local function add_pres_futr(base, stem, sg1, sg2, sg3, pl1, pl2, pl3) add(base, "pres_futr_1sg", stem, sg1) add(base, "pres_futr_2sg", stem, sg2) add(base, "pres_futr_3sg", stem, sg3) add(base, "pres_futr_1pl", stem, pl1) add(base, "pres_futr_2pl", stem, pl2) add(base, "pres_futr_3pl", stem, pl3) -- Do the present adverbial participle, which is based on the third plural present. -- FIXME: Do impersonal verbs have this participle? add_pres_adv_part(base, stem, pl3) end

local function destress_present_endings_per_accent(endings, accent) if accent == "b" then return end for i, ending in ipairs(endings) do		if i ~= 1 or accent == "a" then endings[i] = destress_ending(ending) end end end

local function add_present_e(base, stem, variant, overriding_imp) stem = base.pres_stem or stem -- Determine the stressed endings. We will then destress the endings as appropriate for the -- accent pattern. local endings local iotated_stem = variant == "iotate" and com.iotate(stem) or stem if com.ends_always_hard(stem) or com.ends_always_hard(iotated_stem) then -- р or hushing sounds need non-iotated variants. endings = {"у́", "э́ш", base.is_refl and "э́ць" or "э́", "о́м", "аце́", "у́ць"} else -- The iotated 1sg/3pl sometimes occur after consonants, e.g. in сы́паць (сы́плю, сы́плеш, ...). local y_endings = variant == "yend" or com.ends_in_vowel(stem) or rfind(stem, "['ь]$") endings = {y_endings and "ю́" or "у́", "е́ш", base.is_refl and "е́ць" or "е́", "ё́м", "еце́", y_endings and "ю́ць" or "у́ць"} end destress_present_endings_per_accent(endings, base.accent) local s1, s2, s3, p1, p2, p3 = unpack(endings) if iotated_stem == stem then add_pres_futr(base, stem, s1, s2, s3, p1, p2, p3) else add_pres_futr(base, stem, s1, {}, {}, {}, {}, p3) add_pres_futr(base, iotated_stem, {}, s2, s3, p1, p2, {}) end if overriding_imp == false then -- do nothing elseif overriding_imp then add_imperative(base, overriding_imp) else add_imperative_from_present(base, iotated_stem) end end

local function add_present_i(base, stem, overriding_imp) stem = base.pres_stem or stem -- Determine the stressed endings. We will then destress the endings as appropriate for the -- accent pattern. local endings local iotated_stem if com.ends_always_hard(stem) then -- р or hushing sounds need non-iotated variants. endings = {"у́", "ы́ш", "ы́ць", "ы́м", "ыце́", "а́ць"} iotated_stem = stem else iotated_stem = com.iotate(stem) endings = {com.ends_always_hard(iotated_stem) and "у́" or "ю́", "і́ш", "і́ць", "і́м", "іце́", com.ends_always_hard(stem) and "а́ць" or "я́ць"} end destress_present_endings_per_accent(endings, base.accent) local s1, s2, s3, p1, p2, p3 = unpack(endings) if stem == iotated_stem then add_pres_futr(base, stem, s1, s2, s3, p1, p2, p3) else add_pres_futr(base, iotated_stem, s1, {}, {}, {}, {}, {}) add_pres_futr(base, stem, {}, s2, s3, p1, p2, p3) end if overriding_imp == false then -- do nothing elseif overriding_imp then add_imperative(base, overriding_imp) else add_imperative_from_present(base, stem) end end

local function add_past(base, msgstem, reststem) add(base, "past_m", msgstem, "") add(base, "past_f", reststem, base.past_accent == "b" and "а́" or "а") add(base, "past_n", reststem, base.past_accent == "b" and "о́" or "а") add(base, "past_pl", reststem, base.past_accent == "b" and "і́" or "і") add(base, "past_adv_part", msgstem, "шы") end

local function add_default_past(base, stem) add_past(base, stem .. "ў", stem .. "л") end

local function add_ppp(base, stem) if base.is_refl or not base.ppp or base.trans == "intr" then return end if type(base.ppp) == "table" then for _, ppp in ipairs(base.ppp) do			add_user_supplied(base, "past_pasv_part", ppp) end elseif not base.impers then add(base, "past_pasv_part", stem, "ы") end end

local function add_retractable_ppp(base, stem) if not base.ppp then return end if type(base.ppp) == "table" then add_ppp(base, stem) return end if base.ppp == "+" then add_ppp(base, stem) else local retracted_stem = stem local stembase, last_syl = rmatch(stem, "^(.-)(" .. com.vowel_c .. AC .. "?[нт])$") if not stembase then error("Internal error: Unrecognized stem for past passive participle: '" .. stem .. "'") end if com.is_accented(last_syl) and not com.is_nonsyllabic(stembase) then stembase = com.maybe_accent_final_syllable(stembase) last_syl = com.remove_accents(last_syl) retracted_stem = stembase .. last_syl end if base.ppp == "+-" then add_ppp(base, stem) add_ppp(base, retracted_stem) elseif base.ppp == "-" then add_ppp(base, retracted_stem) elseif base.ppp == "-+" then add_ppp(base, retracted_stem) add_ppp(base, stem) else error("Internal error: Unrecognized PPP indicator '" .. base.ppp .. "'") end end end

local function check_stress_for_accent_type(base, ac) if (base.accent == "b" or base.accent == "c") and ac ~= AC then error("For class " .. base.conj .. ", lemma must be end-stressed: '" .. base.orig_lemma .. "'") end if base.accent == "a" and ac == AC then error("For class " .. base.conj .. ", lemma must be stem-stressed: '" .. base.orig_lemma .. "'") end end

local function separate_stem_suffix_accent(base, regex) local stem, suffix, ac = rmatch(base.lemma, regex) if not stem then error("Unrecognized lemma for class " .. base.conjnum .. ": '" .. base.orig_lemma .. "'") end check_stress_for_accent_type(base, ac) return stem, suffix, ac end

local conjs = {}

conjs["1"] = function(base) local stem, suffix, ac = rmatch(base.lemma, "^(.*)([аяеэ])(́?)ць$") if not stem then error("Unrecognized lemma for class 1: '" .. base.orig_lemma .. "'") end if base.accent ~= "a" then error("Only accent a allowed for class 1: '" .. base.conj .. "'") end local full_stem = stem .. suffix .. ac	base.stressed_stem = full_stem add_present_e(base, full_stem) add_default_past(base, full_stem) add_retractable_ppp(base, full_stem .. ((suffix == "е" or suffix == "э") and "т" or "н")) end

conjs["2"] = function(base) if base.vowel_alternant then error("No need to specify vowel alternant '" .. base.vowel_alternant .. "' in class 2; it's handled automatically") end local stem, last_vowel, suffix = rmatch(base.lemma, "^(.*)([аяе])(ва́?)ць$") if not stem then error("Unrecognized lemma for class 2: '" .. base.orig_lemma .. "'") end if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 2: '" .. base.conj .. "'") end if base.accent == "b" and suffix ~= "ва́" then error("For class 2b, lemma must be end-stressed: '" .. base.orig_lemma .. "'") end local pres_stem = com.maybe_accent_final_syllable(stem .. (last_vowel == "а" and "у" or "ю")) local past_stem = stem .. (last_vowel == "а" and "о" or "ё") .. suffix add_present_e(base, pres_stem) add_default_past(base, past_stem) add_retractable_ppp(base, past_stem .. "н") end

conjs["3"] = function(base) -- FIXME, handle звяць here? local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)(ну)(́?)ць$") local stressed_stem = com.maybe_accent_final_syllable(stem) add_present_e(base, stressed_stem .. "н") local long_stem = stem .. suffix .. ac	if base.conjmod == "" then add_default_past(base, long_stem) elseif base.conjmod == "°" then if base.accent ~= "a" then error("No current support for class 3°" .. base.accent) end add_past(base, stem, stem .. "л") else error("Internal error: Unrecognized conjugation modifier: '" .. base.conjmod .. "'") end add_retractable_ppp(base, long_stem .. "т") end

conjs["4"] = function(base) local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)([іы])(́?)ць$") local stressed_stem = com.maybe_accent_final_syllable(stem) add_present_i(base, stressed_stem) add_default_past(base, stem .. suffix .. ac) local iotated_stem = com.iotate(stem) -- By default, stress will retract one syllable if accent is c but not b,	-- but this can be overridden in both directions using 'ppp-' (for b) -- or 'ppp+' (for c). add_retractable_ppp(base, iotated_stem .. (com.ends_always_hard(iotated_stem) and "о" or "ё") .. ac .. "н") end

conjs["5"] = function(base) local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)([еэая])(́?)ць$") local stem_ends_in_vowel = com.ends_in_vowel(stem) if suffix == "я" and not stem_ends_in_vowel then error("Ending -яць can only be used with a vocalic stem: '" .. base.orig_lemma .. "'") elseif suffix ~= "я" and stem_ends_in_vowel then error("Ending -яць must be used with a vocalic stem: '" .. base.orig_lemma .. "'") end local stressed_stem = com.maybe_accent_final_syllable(stem) add_present_i(base, stressed_stem) add_default_past(base, stem .. suffix .. ac) local iotated_stem = com.iotate(stem) add_retractable_ppp(base, iotated_stem .. (com.ends_always_hard(iotated_stem) and "а" or suffix) .. ac .. "н") end

conjs["6"] = function(base) local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)([еая])(́?)ць$") local stem_ends_in_vowel = com.ends_in_vowel(stem) if suffix == "я" and not stem_ends_in_vowel then error("Ending -яць can only be used with a vocalic stem: '" .. base.orig_lemma .. "'") elseif suffix ~= "я" and stem_ends_in_vowel then error("Ending -яць must be used with a vocalic stem: '" .. base.orig_lemma .. "'") end local pres_stem = com.maybe_accent_final_syllable(stem) if base.conjmod == "" then pres_stem = com.iotate(pres_stem) end local sg2 -- These verbs have non-iotated imperative even though the present tense is iotated. if rfind(base.lemma, "сы́?паць$") then sg2 = stem base.irreg = true elseif rfind(base.lemma, "хоце́ць$") then sg2 = stem .. "і́" base.irreg = true end add_present_e(base, pres_stem, base.conjmod == "" and "yend" or nil, sg2) local full_stem = stem .. suffix .. ac	add_default_past(base, full_stem) add_retractable_ppp(base, full_stem .. "н") end

conjs["7"] = function(base) local stem, last_cons = rmatch(base.lemma, "^(.*)(" .. com.cons_c .. ")ці́?$") if not stem then error("Unrecognized lemma for class 7: '" .. base.orig_lemma .. "'") end if last_cons == "р" then error("Use class 9 for lemmas in -рці: '" .. base.orig_lemma .. "'") end if last_cons == "с" then if base.cons then last_cons = base.cons else error("With lemmas in -сці, must specify final consonant: '" .. base.orig_lemma .. "'") end elseif base.cons then error("Can only specify final consonant '" .. base.cons .. "' with lemma ending in -сці: '" .. base.orig_lemma .. "'") end local stressed_stem = com.maybe_accent_final_syllable(stem) add_present_e(base, stressed_stem .. last_cons) local past_msg, past_rest if base.cons == "д" or base.cons == "т" or base.cons == "в" then past_msg = stressed_stem .. "ў" past_rest = stressed_stem .. "л" elseif base.cons == "ст" then past_msg = stressed_stem .. "с" past_rest = past_msg .. "л" else past_msg = stressed_stem .. last_cons past_rest = past_msg .. "л" end if base.jo then past_msg = rsub(past_msg, "([еэ]́)", {["е́"] = "ё́", ["э́"] = "о́"}) end add_past(base, past_msg, past_rest) add_retractable_ppp(base, com.remove_accents(stem) .. palatalize_td(last_cons) .. "ё́н") end

conjs["8"] = function(base) local stem, last_cons = rmatch(base.lemma, "^(.-)(г?)чы́?$") if not stem then error("Unrecognized lemma for class 8: '" .. base.orig_lemma .. "'") end if last_cons == "" then last_cons = "к" end local palatalized_cons = com.iotate(last_cons) local stressed_stem = com.maybe_accent_final_syllable(stem) add_present_e(base, stressed_stem .. last_cons, "iotate") local past_msg = stressed_stem .. last_cons local past_rest = past_msg .. "л" if base.jo then past_msg = rsub(past_msg, "([еэ]́)", {["е́"] = "ё́", ["э́"] = "о́"}) end add_past(base, past_msg, past_rest) add_retractable_ppp(base, com.remove_accents(stem) .. palatalized_cons .. "о́н") end

local function construct_long_prefix_variant(prefix) if rfind(prefix, "рас$") then return rsub(prefix, "рас$", "разо") end if prefix == "з" then return "со" end return prefix .. "о" end

conjs["9"] = function(base) local stem, suffix = rmatch(base.lemma, "^(.*)(е́?р)ці$") if not stem then error("Unrecognized lemma for class 9: '" .. base.orig_lemma .. "'") end if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 9: '" .. base.conj .. "'") end if base.conj_star then pres_stem = rsub(stem, "^(.*)(.)$", function(prefix, root)			return construct_long_prefix_variant(prefix) .. root		end) else pres_stem = stem end pres_stem = rsub(pres_stem, "ц$", "т") add_present_e(base, pres_stem .. "р") local stressed_stem = rsub(com.maybe_accent_final_syllable(stem .. suffix), "е́", "ё́") add_past(base, stressed_stem, stressed_stem .. "л") add_ppp(base, stressed_stem .. "т") end

conjs["10"] = function(base) local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)([ао][лр][ао])(́?)ць$") if base.accent ~= "a" and base.accent ~= "c" then error("Only accent a or c allowed for class 10: '" .. base.conj .. "'") end suffix = rsub(suffix, "а", "о") local stressed_stem = com.maybe_accent_final_syllable(rsub(stem .. suffix, "о$", "")) add_present_e(base, stressed_stem, "yend") add_default_past(base, stem .. suffix .. ac) -- If explicit present stem given (e.g. for мало́ць), use it in the н-participle. local n_ppp, n_stem if base.pres_stem then n_stem = base.pres_stem else n_stem = stressed_stem end n_ppp = n_stem .. "он" local t_ppp = stressed_stem .. "от" for _, indicator in ipairs(rsplit(base.ppp_ending, "")) do		if indicator == "n" then add_ppp(base, n_ppp) elseif indicator == "t" then add_ppp(base, t_ppp) end end end

conjs["11"] = function(base) local stem, suffix, ac = separate_stem_suffix_accent(base, "^(.*)(і)(́?)ць$") if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 11: '" .. base.conj .. "'") end local pres_stem if base.conj_star then pres_stem = rsub(stem, "^(.*)(.)$", function(prefix, root)			return construct_long_prefix_variant(prefix) .. root		end) else pres_stem = stem end if rfind(pres_stem, "л$") then pres_stem = pres_stem .. "ь" else pres_stem = pres_stem .. "'"	end -- FIXME, віць and ліць should be 11-only due to imperative local full_stem = stem .. suffix .. ac	add_present_e(base, pres_stem, "yend", full_stem) add_default_past(base, full_stem) add_ppp(base, full_stem .. "т") end

conjs["12"] = function(base) -- Handle гні́сці local stem = rmatch(base.lemma, "^(.*" .. com.vowel_c .. AC .. "?)с?ц[ьі]$") if not stem then error("Unrecognized lemma for class 12: '" .. base.orig_lemma .. "'") end if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 12: '" .. base.conj .. "'") end add_present_e(base, stem) add_default_past(base, stem) add_ppp(base, stem .. "т") end

conjs["13"] = function(base) local stem = rmatch(base.lemma, "^(.*а)ва́ць$") if not stem then error("Unrecognized lemma for class 13: '" .. base.orig_lemma .. "'") end if base.accent ~= "b" then error("Only accent b allowed for class 13: '" .. base.conj .. "'") end local full_stem = stem .. "ва́" add_present_e(base, stem, nil, full_stem .. "й") add_default_past(base, full_stem) add_retractable_ppp(base, full_stem .. "н") end

conjs["14"] = function(base) local stem = rmatch(base.lemma, "^(.*[ая]́?)ць$") if not stem then error("Unrecognized lemma for class 14: '" .. base.orig_lemma .. "'") end if not base.pres_stem then error("With class 14, must specify explicit present stem using 'pres:STEM'") end add_present_e(base, "foo") local stressed_stem = com.maybe_accent_final_syllable(stem) add_default_past(base, stressed_stem) add_retractable_ppp(base, stressed_stem .. "т") end

conjs["15"] = function(base) local stem = rmatch(base.lemma, "^(.*" .. com.vowel_c .. AC .. "?)ць$") if not stem then error("Unrecognized lemma for class 15: '" .. base.orig_lemma .. "'") end -- заста́цца is class 15b if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 15: '" .. base.conj .. "'") end add_present_e(base, stem .. "н") add_default_past(base, stem) add_ppp(base, stem .. "т") end

conjs["16"] = function(base) local stem = rmatch(base.lemma, "^(.*" .. com.vowel_c .. AC .. "?)ць$") if not stem then error("Unrecognized lemma for class 15: '" .. base.orig_lemma .. "'") end if base.accent ~= "a" and base.accent ~= "b" then error("Only accent a or b allowed for class 16: '" .. base.conj .. "'") end add_present_e(base, stem .. "в") add_default_past(base, stem) add_ppp(base, stem .. "т") end

conjs["irreg"] = function(base) local prefix local function add_manual_pres_futr_imper(s1, s2, s3, p1, p2, p3, imp) if com.is_accented(prefix) then s1 = destress_ending(s1) s2 = destress_ending(s2) s3 = destress_ending(s3) p1 = destress_ending(p1) p2 = destress_ending(p2) p3 = destress_ending(p3) imp = destress_ending(imp) end add_pres_futr(base, prefix, s1, s2, s3, p1, p2, p3) add_imperative(base, prefix .. imp) end local function add_default_past_ppp(past, ppp) local stressed_prefix = com.is_accented(prefix) if stressed_prefix then past = destress_ending(past) end add_default_past(base, prefix .. past) if ppp then if stressed_prefix then ppp = destress_ending(ppp) end add_retractable_ppp(base, prefix .. ppp) end end

prefix = rmatch(base.lemma, "^(.*)да́?ць$") if prefix then add_manual_pres_futr_imper("да́м", "дасі́", "да́сць", "дадзі́м", "дасце́", "даду́ць", "да́й") add_default_past_ppp("да́", "да́дзен") return end prefix = rmatch(base.lemma, "^(.*)е́?сці$") if prefix then add_manual_pres_futr_imper("е́м", "есі́", "е́сць", "едзі́м", "есце́", "еду́ць", "е́ш") add_default_past_ppp("е́", "е́дзен") return end prefix = rmatch(base.lemma, "^(.*)бы́?ць$") if prefix then if prefix == "" then error("Can't handle unprefixed irregular verb выць yet") end base.accent = "a" add_present_e(base, prefix .. (com.is_accented(prefix) and "буд" or "бу́д")) add_default_past_ppp("бы́", "бы́т") return end prefix = rmatch(base.lemma, "^(.*)е́?хаць$") if prefix then base.accent = "a" add_present_e(base, prefix .. (com.is_accented(prefix) and "ед" or "е́д")) add_default_past_ppp("е́ха") -- no PPP return end local root prefix, root = rmatch(base.lemma, "^(.*)(бе́?г)чы$") if prefix then local stressed_prefix = com.is_accented(prefix) if not stressed_prefix then root = com.remove_accents(root) end local iotated_root = com.iotate(root) base.accent = stressed_prefix and "a" or "b" if not base.pradp then base.pradp = "!+" end if stressed_prefix then add_pres_futr(base, prefix .. root, "у", {}, {}, {}, {}, "уць") add_pres_futr(base, prefix .. iotated_root, {}, "ыш", "ыць", "ым", "ыце", {}) else add_pres_futr(base, prefix .. root, "у́", {}, {}, {}, {}, "у́ць") add_pres_futr(base, prefix .. iotated_root, {}, "ы́ш", "ы́ць", "ы́м", "ы́це", {}) end add_imperative(base, prefix .. iotated_root .. (stressed_prefix and "ы" or "ы́")) local past_msg = prefix .. (stressed_prefix and "бег" or "бе́г") add_past(base, past_msg, past_msg .. "л") -- no PPP return end prefix = rmatch(base.lemma, "^(.*)лга́?ць") if prefix then local stressed_prefix = com.is_accented(prefix) base.accent = stressed_prefix and "a" or "b" add_present_e(base, com.maybe_accent_final_syllable(prefix .. "лг"), "iotate") add_default_past_ppp("лга́") -- no PPP return end prefix = rmatch(base.lemma, "^(.*[іый])сці́?$") if prefix then local stressed_prefix = com.is_accented(prefix) base.accent = stressed_prefix and "a" or (prefix == "і" or prefix == "й") and "b" or "c" add_present_e(base, com.maybe_accent_final_syllable(prefix .. "д")) add_past(base, prefix .. (stressed_prefix and "шоў" or "шо́ў"), com.maybe_accent_final_syllable(prefix .. "шл")) -- no PPP return end error("Unrecognized irregular verb: '" .. base.orig_lemma .. "'") end

local function parse_indicator_and_form_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {} local parts = rsplit(inside, ".", true) local conjarg = parts[1] local conj, past_accent = rmatch(conjarg, "^(.*)/(.*)$") if past_accent then if past_accent ~= "a" and past_accent ~= "b" then error("Unrecognized past-tense accent in conjugation spec '" .. conjarg .. "', should be 'a' or 'b': '" .. past_accent .. "'") end base.past_accent = past_accent else conj = conjarg end if conj == "irreg" then base.conjnum = "irreg" base.conjmod = "" else conj, base.conj_star = rsubb(conj, "%*", "") base.conjnum, base.conjmod, base.accent = rmatch(conj, "^([0-9]+)(°?)([abc])$") if not base.conjnum then error("Invalid format for conjugation, should be e.g. '1a', '4b' or '6°c': '" .. conj .. "'") end if not conjs[base.conjnum] then error("Unrecognized conjugation: '" .. base.conjnum .. "'") end end base.conj = conj for i=2,#parts do		local part = parts[i] if part == "impf" or part == "pf" or part == "both" then if base.aspect then error("Can't specify aspect twice: " .. angle_bracket_spec) end base.aspect = part elseif part == "tr" or part == "intr" or part == "mixed" then if base.trans then error("Can't specify transitivity twice: " .. angle_bracket_spec) end base.trans = part elseif rfind(part, "^ppp") or part == "-ppp" then if base.ppp ~= nil then error("Can't specify past passive participle indicator twice: " .. angle_bracket_spec) end if part == "-ppp" then base.ppp = false elseif rfind(part, "^ppp:") then base.ppp = rsplit(rsub(part, "^ppp:", ""), ":") else base.ppp = rsub(part, "^ppp", "") local seen_plus_minus = {} local seen_t_n = {} if base.ppp ~= "" then for _, indicator in ipairs(rsplit(base.ppp, "")) do						if indicator == "+" or indicator == "-" then if m_table.contains(seen_plus_minus, indicator) then error("Repeated past passive participle +/- indicator in spec '" .. part .. "'") else table.insert(seen_plus_minus, indicator) end elseif indicator == "t" or indicator == "n" then if m_table.contains(seen_t_n, indicator) then error("Repeated past passive participle t/n indicator in spec '" .. part .. "'") else table.insert(seen_t_n, indicator) end else error("Unrecognized past passive participle indicator '" .. indicator .. "' in spec '" .. part .. "'") end end base.ppp = table.concat(seen_plus_minus) base.ppp_ending = table.concat(seen_t_n) if base.ppp_ending == "" then base.ppp_ending = nil end end end elseif rfind(part, "^pradp") then if base.pradp ~= nil then error("Can't specify present adverbial participle indicator twice: " .. angle_bracket_spec) end if rfind(part, "^pradp:") then base.pradp = rsplit(rsub(part, "^pradp:", ""), ":") else base.pradp = rsub(part, "^pradp", "") local seen_indicators = {} for _, indicator in ipairs(rsplit(base.pradp, "")) do					if seen_indicators[indicator] then error("Repeated present adverbial participle indicator in spec '" .. part .. "'") elseif indicator ~= "-" and indicator ~= "+" and indicator ~= "!" then error("Unrecognized present adverbial participle indicator '" .. indicator .. "' in spec '" .. part .. "'") else seen_indicators[indicator] = indicator end end end elseif part == "impers" then if base.impers then error("Can't specify 'impers' twice: " .. angle_bracket_spec) end base.impers = true elseif part == "longimp" or part == "shortimp" then if base.imptype then error("Can't specify imperative type twice: " .. angle_bracket_spec) end base.imptype = rsub(part, "imp$", "") elseif part == "-imp" then if base.noimp then error("Can't specify '-imp' twice: " .. angle_bracket_spec) end base.noimp = true elseif part == "-pres" then if base.nopres then error("Can't specify '-pres' twice: " .. angle_bracket_spec) end base.nopres = true elseif part == "-past" then if base.nopast then error("Can't specify '-past' twice: " .. angle_bracket_spec) end base.nopast = true elseif part == "3only" then if base.only3 then error("Can't specify '3only' twice: " .. angle_bracket_spec) end base.only3 = true elseif part == "plonly" then if base.onlypl then error("Can't specify 'plonly' twice: " .. angle_bracket_spec) end base.onlypl = true elseif part == "3plonly" then if base.only3pl then error("Can't specify '3plonly' twice: " .. angle_bracket_spec) end base.only3pl = true elseif part == "3orplonly" then if base.only3orpl then error("Can't specify '3orplonly' twice: " .. angle_bracket_spec) end base.only3orpl = true elseif allowed_class_7_specs[part] then if base.cons then error("Can't specify consonant modifier twice: " .. angle_bracket_spec) end base.cons = allowed_class_7_specs[part] elseif part == "ё" or part == "jo" then if base.jo then error("Can't specify 'ё'/'jo' twice: " .. angle_bracket_spec) end base.jo = true elseif part == "ae" or part == "ao" then if base.vowel_alternant then error("Can't specify vowel alternant twice: " .. angle_bracket_spec) end base.vowel_alternant = part elseif rfind(part, "^pres:") then part = rsub(part, "^pres:", "") base.pres_stem = rsub(part, "^pres:", "") else error("Unrecognized indicator '" .. part .. "': " .. angle_bracket_spec) end end return base end

-- Separate out reflexive suffix, check that multisyllabic lemmas have stress, and add stress -- to monosyllabic lemmas if needed. local function normalize_lemma(base) base.orig_lemma = base.lemma base.lemma = com.add_monosyllabic_accent(base.lemma) if not com.is_stressed(base.lemma) then error("Multisyllabic lemma '" .. base.orig_lemma .. "' needs an accent") end base.lemma = com.mark_stressed_vowels_in_unstressed_syllables(base.lemma) local valt = base.vowel_alternant and {base.vowel_alternant} or nil base.lemma = com.apply_vowel_alternation(base.lemma, valt) local active_verb = rmatch(base.lemma, "^(.*)ся$") if active_verb then base.is_refl = true base.lemma = active_verb else active_verb = rmatch(base.lemma, "^(.*)ца$") if active_verb then base.is_refl = true base.lemma = active_verb .. "ь" end end end

local function detect_indicator_and_form_spec(base) if not base.aspect then error("Aspect of 'pf', 'impf' or 'both' must be specified") end if base.is_refl then if base.trans then error("Can't specify transitivity with reflexive verb, they're always intransitive: '" .. base.orig_lemma .. "'") end elseif not base.trans then error("Transitivity of 'tr', 'intr' or 'mixed' must be specified") end if base.ppp ~= nil then if base.trans == "intr" then error("Can't specify 'ppp' or '-ppp' with intransitive verbs") end elseif base.trans and base.trans ~= "intr" and base.aspect ~= "impf" then error("Must specify 'ppp' or '-ppp' with perfective transitive or mixed-transitive verbs") end if base.ppp == "" then if base.conjnum == "4" then if base.accent == "b" then base.ppp = "+" else base.ppp = "-" end elseif base.conjnum == "7" or base.conjnum == "8" or base.conjnum == "10" then base.ppp = "-" else base.ppp = "+" end end -- Don't set default for base.pradp here. It depends on base.accent, which -- may not be set till we call the conjugation function (at least in the case	-- of "irreg"). if base.conjnum == "10" then if not base.ppp_ending then base.ppp_ending = "t" end elseif base.ppp_ending then error("Can only specify 't' or 'n' with 'ppp' with class 10: '" .. base.ppp_ending .. "'") end if base.cons and base.conjnum ~= "7" then error("Consonant modifier '" .. base.cons .. "' can only be specified with class 7") end if base.jo and base.conjnum ~= "7" and base.conjnum ~= "8" then error("Modifier 'ё'/'jo' can only be specified with classes 7 or 8") end if base.conjmod ~= "" then if base.conjnum ~= "3" and base.conjnum ~= "6" then error("Conjugation modifiers only allowed for conjugations 3 and 6: '" .. base.conjmod .. "'") end end if base.pres_stem and base.conjnum ~= "14" then base.irreg = true end if base.pres_stem then if base.accent == "a" or base.accent == "c" then base.pres_stem = com.add_monosyllabic_accent(base.pres_stem) if not com.is_stressed(base.pres_stem) then error("With accent pattern " .. base.accent .. ", explicit present stem '" .. base.pres_stem .. "' must have an accent") base.pres_stem = com.mark_stressed_vowels_in_unstressed_syllables(base.pres_stem) end else if com.is_accented(base.pres_stem) then error("With accent pattern b, explicit present stem .. '" .. base.pres_stem .. "' should not have an accent") end -- Add two fictitious vowels at the end so that mark_stressed_vowels_in_unstressed_syllables -- will function correctly, then remove them. base.pres_stem = base.pres_stem .. "ава́" base.pres_stem = com.mark_stressed_vowels_in_unstressed_syllables(base.pres_stem) base.pres_stem = rsub(base.pres_stem, "ава́$", "") end end if not base.past_accent then if (base.conjnum == "7" or base.conjnum == "8") and base.accent == "b" then base.past_accent = "b" else base.past_accent = "a" end end end

local function detect_all_indicator_and_form_specs(alternant_multiword_spec) for _, base in ipairs(alternant_multiword_spec.alternants) do		detect_indicator_and_form_spec(base) if not alternant_multiword_spec.aspect then alternant_multiword_spec.aspect = base.aspect elseif alternant_multiword_spec.aspect ~= base.aspect then alternant_multiword_spec.aspect = "both" end if alternant_multiword_spec.is_refl == nil then alternant_multiword_spec.is_refl = base.is_refl elseif alternant_multiword_spec.is_refl ~= base.is_refl then error("With multiple alternants, all must agree on reflexivity") end if not alternant_multiword_spec.trans then alternant_multiword_spec.trans = base.trans elseif alternant_multiword_spec.trans ~= base.trans then alternant_multiword_spec.trans = "mixed" end for _, prop in ipairs({"nopres", "noimp", "nopast", "impers", "only3", "onlypl", "only3pl", "only3orpl"}) do			if alternant_multiword_spec[prop] == nil then alternant_multiword_spec[prop] = base[prop] elseif alternant_multiword_spec[prop] ~= base[prop] then alternant_multiword_spec[prop] = false end end end end

local function parse_word_spec(segments) if #segments ~= 3 or segments[3] ~= "" then error("Verb spec must be of the form 'LEMMA': '" .. table.concat(segments) .. "'") end local lemma = segments[1] local base = parse_indicator_and_form_spec(segments[2]) base.lemma = lemma return base end

-- Parse an alternant, e.g. "((ви́сіти<5a.impf.intr>,висі́ти<5b.impf.intr>))". The return value is a table of the form -- { --  alternants = {WORD_SPEC, WORD_SPEC, ...} -- } -- -- where WORD_SPEC describes a given alternant and is as returned by parse_word_spec. local function parse_alternant(alternant) local parsed_alternants = {} local alternant_text = rmatch(alternant, "^%(%((.*)%)%)$") local segments = iut.parse_balanced_segment_run(alternant_text, "<", ">") local comma_separated_groups = iut.split_alternating_runs(segments, ",") local alternant_spec = {alternants = {}} for _, comma_separated_group in ipairs(comma_separated_groups) do		table.insert(alternant_spec.alternants, parse_word_spec(comma_separated_group)) end return alternant_spec end

local function parse_alternant_or_word_spec(text) if rfind(text, "^%(%((.*)%)%)$") then return parse_alternant(text) else local segments = iut.parse_balanced_segment_run(text, "<", ">") return {alternants = {parse_word_spec(segments)}} end end

local function add_infinitive(base) add(base, "infinitive", base.lemma, "") end

local function add_reflexive_suffix(alternant_multiword_spec) if not alternant_multiword_spec.is_refl then return end for slot, formvals in pairs(alternant_multiword_spec.forms) do		alternant_multiword_spec.forms[slot] = iut.flatmap_forms(formvals, function(form)			if (slot == "infinitive" or rfind(slot, "^pres_futr_3")) and rfind(form, "ць$") then				return {rsub(form, "ць$", "цца")}			elseif slot == "pres_futr_3sg" and com.ends_in_vowel(form) then				return {form .. "цца"}			else				return {form .. "ся"}			end		end) end end

local function process_overrides(forms, args) for _, slot in ipairs(input_verb_slots) do		if args[slot] then forms[slot] = nil if args[slot] ~= "-" and args[slot] ~= "—" then for _, form in ipairs(rsplit(args[slot], "%s*,%s*")) do					iut.insert_form(forms, slot, {form=form}) end end end end end

-- Used for manual specification using. local function set_reflexive_flag(alternant_multiword_spec) if alternant_multiword_spec.forms.infinitive then for _, inf in ipairs(alternant_multiword_spec.forms.infinitive) do			if rfind(inf.form, "ся$") or rfind(inf.form, "ца$") then alternant_multiword_spec.is_refl = true end end end end

local function set_present_future(alternant_multiword_spec) local forms = alternant_multiword_spec.forms local futr_suffixes = {"1sg", "2sg", "3sg", "1pl", "2pl", "3pl"} if alternant_multiword_spec.aspect == "pf" then for _, suffix in ipairs(futr_suffixes) do forms["futr_" .. suffix] = forms["pres_futr_" .. suffix] end else for _, suffix in ipairs(futr_suffixes) do forms["pres_" .. suffix] = forms["pres_futr_" .. suffix] end -- Do the periphrastic future with бу́ду if forms.infinitive then for _, inf in ipairs(forms.infinitive) do				for _, slot_suffix in ipairs(futr_suffixes) do local futrslot = "futr_" .. slot_suffix if not skip_slot(alternant_multiword_spec, futrslot) then iut.insert_form(forms, futrslot, {							form = "" .. budu_forms[slot_suffix] .. " " ..								com.initial_alternation(inf.form, budu_forms[slot_suffix]) .. "",							no_accel = true,						}) end end end end end end

local function add_categories(alternant_multiword_spec) local cats = {} local function insert(cattype) table.insert(cats, "Belarusian " .. cattype .. " verbs") end if alternant_multiword_spec.aspect == "impf" then insert("imperfective") elseif alternant_multiword_spec.aspect == "pf" then insert("perfective") else assert(alternant_multiword_spec.aspect == "both") insert("imperfective") insert("perfective") insert("biaspectual") end if alternant_multiword_spec.trans == "tr" then insert("transitive") elseif alternant_multiword_spec.trans == "intr" then insert("intransitive") elseif alternant_multiword_spec.trans == "mixed" then insert("transitive") insert("intransitive") end if alternant_multiword_spec.is_refl then insert("reflexive") end if alternant_multiword_spec.impers then insert("impersonal") end if alternant_multiword_spec.alternants then -- not when manual for _, base in ipairs(alternant_multiword_spec.alternants) do			if base.conj == "irreg" or base.irreg then insert("irregular") end if base.conj ~= "irreg" then insert("class " .. base.conj) insert("class " .. rsub(base.conj, "^([0-9]+).*", "%1")) end end end alternant_multiword_spec.categories = cats end

local function show_forms(alternant_multiword_spec) local lemmas = {} if alternant_multiword_spec.forms.infinitive then for _, inf in ipairs(alternant_multiword_spec.forms.infinitive) do			table.insert(lemmas, com.remove_monosyllabic_accents(inf.form)) end end local props = { lemmas = lemmas, slot_table = output_verb_slots, lang = lang, canonicalize = function(form) return com.remove_monosyllabic_accents(form) end, include_translit = true, -- Explicit additional top-level footnotes only occur with. footnotes = alternant_multiword_spec.footnotes, allow_footnote_symbols = not not alternant_multiword_spec.footnotes, }	iut.show_forms(alternant_multiword_spec.forms, props) end

local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms

local table_spec_part1 = [=[ {title}{annotation} {\op}| class="inflection-table inflection inflection-be inflection-verb" ! colspan="3" | {aspect_indicator} ! infinitive ! participles ! present tense ! past tense ! active ! passive ! adverbial ]=]
 * + For declension of participles, see their entries. Adverbial participles are indeclinable.
 * - class="rowgroup"
 * colspan="2" | {infinitive}
 * - class="rowgroup"
 * {pres_actv_part}
 * —
 * —
 * {past_pasv_part}
 * {pres_adv_part}
 * {past_adv_part}
 * - class="rowgroup"

local table_spec_single_aspect = [=[ ! ! present tense ! future tense ]=]

local table_spec_biaspectual = [=[ ! rowspan="2" | ! present tense (imperfective) ! future tense (imperfective) ! style="text-align: center;" | future tense (perfective) ! — ]=]
 * - class="rowgroup"

local table_spec_part2 = [=[ ! 1st singular {ya} ! 2nd singular {ty} ! 3rd singular {yon_yana_yano} ! 1st plural {my} ! 2nd plural {vy} ! 3rd plural {yany} ! imperative ! singular ! plural ! second-person ! past tense ! singular ! plural {my_vy_yany} ! masculine {ya_ty_yon} ! feminine {ya_ty_yana} ! neuter {yano}
 * {pres_1sg}
 * {futr_1sg}
 * {pres_2sg}
 * {futr_2sg}
 * {pres_3sg}
 * {futr_3sg}
 * {pres_1pl}
 * {futr_1pl}
 * {pres_2pl}
 * {futr_2pl}
 * {pres_3pl}
 * {futr_3pl}
 * - class="rowgroup"
 * {impr_sg}
 * {impr_pl}
 * - class="rowgroup"
 * {past_m}
 * rowspan="3" | {past_pl}
 * {past_f}
 * {past_n}
 * {\cl}{notes_clause} ]=]

local table_spec = table_spec_part1 .. (alternant_multiword_spec.aspect == "both" and table_spec_biaspectual or table_spec_single_aspect) .. table_spec_part2

local notes_template = [===[ {footnote} ]===]

if alternant_multiword_spec.title then forms.title = alternant_multiword_spec.title else forms.title = 'Conjugation of ' .. forms.lemma .. '' end

if alternant_multiword_spec.manual then forms.annotation = "" else local ann_parts = {} local saw_irreg_conj = false local saw_base_irreg = false local all_irreg_conj = true local conjs = {} for _, base in ipairs(alternant_multiword_spec.alternants) do			m_table.insertIfNot(conjs, base.conj) if base.conj == "irreg" then saw_irreg_conj = true else all_irreg_conj = false end if base.irreg then saw_base_irreg = true end end if all_irreg_conj then table.insert(ann_parts, "irregular") else table.insert(ann_parts, "class " .. table.concat(conjs, " // ")) end table.insert(ann_parts,			alternant_multiword_spec.aspect == "impf" and "imperfective" or			alternant_multiword_spec.aspect == "pf" and "perfective" or			"biaspectual") if alternant_multiword_spec.trans then table.insert(ann_parts,				alternant_multiword_spec.trans == "tr" and "transitive" or				alternant_multiword_spec.trans == "intr" and "intransitive" or				"transitive and intransitive"			) end if alternant_multiword_spec.is_refl then table.insert(ann_parts, "reflexive") end if alternant_multiword_spec.impers then table.insert(ann_parts, "impersonal") end if saw_base_irreg and not saw_irreg_conj then table.insert(ann_parts, "irregular") end forms.annotation = " (" .. table.concat(ann_parts, ", ") .. ")" end

-- pronouns used in the table forms.ya = tag_text("я") forms.ty = tag_text("ты") forms.yon_yana_yano = tag_text("ён / яна́ / яно́") forms.my = tag_text("мы") forms.vy = tag_text("вы") forms.yany = tag_text("яны́") forms.my_vy_yany = tag_text("мы / вы / яны́") forms.ya_ty_yon = tag_text("я / ты / ён") forms.ya_ty_yana = tag_text("я / ты / яна́") forms.yano = tag_text("яно́")

if alternant_multiword_spec.aspect == "pf" then forms.aspect_indicator = "perfective aspect" elseif alternant_multiword_spec.aspect == "impf" then forms.aspect_indicator = "imperfective aspect" else forms.aspect_indicator = "biaspectual" end

forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" return m_string_utilities.format(table_spec, forms) end

-- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {required = true, default = "піса́ць<6c.impf.tr.ppp->"}, footnote = {list = true}, title = {}, }	for _, slot in ipairs(input_verb_slots) do		params[slot] = {} end

local args = m_para.process(parent_args, params) local alternant_multiword_spec = parse_alternant_or_word_spec(args[1]) alternant_multiword_spec.title = args.title alternant_multiword_spec.footnotes = args.footnote alternant_multiword_spec.forms = {} for _, base in ipairs(alternant_multiword_spec.alternants) do		base.forms = alternant_multiword_spec.forms normalize_lemma(base) end detect_all_indicator_and_form_specs(alternant_multiword_spec) for _, base in ipairs(alternant_multiword_spec.alternants) do		add_infinitive(base) conjs[base.conjnum](base, base.lemma, base.accent) end add_reflexive_suffix(alternant_multiword_spec) process_overrides(alternant_multiword_spec.forms, args) set_present_future(alternant_multiword_spec) add_categories(alternant_multiword_spec) return alternant_multiword_spec end

-- Externally callable function to parse and conjugate a verb where all forms are given manually. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms_manual(parent_args, pos, from_headword, def) local params = { footnote = {list = true}, title = {}, aspect = {required = true, default = "impf"}, }	for _, slot in ipairs(input_verb_slots) do		params[slot] = {} end

local args = m_para.process(parent_args, params) if args.aspect ~= "pf" and args.aspect ~= "impf" and args.aspect ~= "both" then error("Aspect '" .. args.aspect .. "' must be 'pf', 'impf' or 'both'") end local alternant_multiword_spec = { aspect = args.aspect, title = args.title, footnotes = args.footnote, forms = {}, manual = true, }	process_overrides(alternant_multiword_spec.forms, args) set_reflexive_flag(alternant_multiword_spec) set_present_future(alternant_multiword_spec) add_categories(alternant_multiword_spec) return alternant_multiword_spec end

-- Entry point for. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent.args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end

-- Entry point for. Template-callable function to parse and conjugate a verb given -- manually-specified inflections and generate a displayable table of the conjugated forms. function export.show_manual(frame) local parent_args = frame:getParent.args local alternant_multiword_spec = export.do_generate_forms_manual(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end

-- Concatenate all forms of all slots into a single string of the form -- "SLOT=FORM,FORM,...|SLOT=FORM,FORM,...|...". Embedded pipe symbols (as might occur -- in embedded links) are converted to <!>. If INCLUDE_PROPS is given, also include -- additional properties (currently, only "|aspect=ASPECT"). This is for use by bots. local function concat_forms(alternant_multiword_spec, include_props) local ins_text = {} for slot, _ in pairs(output_verb_slots) do		local formtext = iut.concat_forms_in_slot(alternant_multiword_spec.forms[slot]) if formtext then table.insert(ins_text, slot .. "=" .. formtext) end end if include_props then table.insert(ins_text, "aspect=" .. alternant_multiword_spec.aspect) end return table.concat(ins_text, "|") end

-- Template-callable function to parse and conjugate a verb given user-specified arguments and return -- the forms as a string "SLOT=FORM,FORM,...|SLOT=FORM,FORM,...|...". Embedded pipe symbols (as might -- occur in embedded links) are converted to <!>. If |include_props=1 is given, also include -- additional properties (currently, only "|aspect=ASPECT"). This is for use by bots. function export.generate_forms(frame) local include_props = frame.args["include_props"] local parent_args = frame:getParent.args local alternant_multiword_spec = export.do_generate_forms(parent_args) return concat_forms(alternant_multiword_spec, include_props) end

return export

title: Module:be-verb


text: Category:haw:Cities in Oregon, USA

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

title: Category:haw:Cities in Oregon, USA


text:
voh

Etymology
.

title: voh


text: Category:haw:Places in Oregon, USA

title: Category:haw:Places in Oregon, USA


text: Category:haw:Oregon, USA

title: Category:haw:Oregon, USA


text:
αντεπαναστατικός

Adjective

 * 1) counter-revolutionary

title: αντεπαναστατικός


text: Category:Barbareño palindromes

title: Category:Barbareño palindromes


text: Category:Barbareño terms by their sequences of characters


text:
επαναστατικός

Adjective

 * 1) revolutionary

title: επαναστατικός


text: Category:Barbareño terms by orthographic property


text: Category:Barbareño terms by lexical property


text: Category:Ineseño palindromes

title: Category:Ineseño palindromes


text: Category:Ineseño terms by their sequences of characters


text: Category:Ineseño terms by orthographic property


text: Category:Ineseño terms by lexical property


text: Category:Ventureño palindromes

title: Category:Ventureño palindromes


text: Category:Ventureño terms by their sequences of characters


text:
Template talk:be-conj-manual

Module live
I replaced this with a module, based on Module:uk-verb. The module supports past passive participles and I've already gone through and fixed up all the verbs that have conjugation tables and PPP's to include them in the table. I've added comments onto many verbs indicating what the auto-conjugated call to should look like once I finish implementing it. The syntax will be very similar to but with a few extra twists to support Belarusian peculiarities. Benwing2 (talk) 04:31, 7 July 2020 (UTC)
 * {[re|Benwing2}} You're damn good at this stuff. Thanks a lot! --Anatoli T. (обсудить/вклад) 04:42, 7 July 2020 (UTC)

title: Template talk:be-conj-manual


text: Category:Ventureño terms by orthographic property


text: Category:Ventureño terms by lexical property


text:
Citations:baldcel

Noun: "(incel slang) an incel whose status is attributed to baldness or hair loss"

 * 2020, Małgorzata Waśniewska, "The Red Pill, Unicorns and White Knights: Cultural Symbolism and Conceptual Metaphor in the Slang of Online Incel Communities", in Cultural Conceptualizations in Language and Communication (Barbara Lewandowska-Tomaszczyk), page 67:
 * For instance, a baldcel is a man considered unattractive because of his hair loss,
 * 2020, anonymous, quoted in Emma Nyström, "'What becomes of the broken-hearted?': En socialantropologisk studie om männen som kallar sig incels", thesis submitted to Lund University, page 29:
 * Women only see chad. They don't see the local Indian janitor, the oldcel librarian, the suicidal baldcel receptionist or lonely NEETcel, they don't even consider them as human

title: Citations:baldcel


text:
Module:be-verb/documentation

This module supports and.

title: Module:be-verb/documentation


text:
섬돌

Etymology
From.

Noun

 * 1) stone stairsteps

title: 섬돌


text:
Module:be-adjective/documentation

This module supports and.

title: Module:be-adjective/documentation


text:
Citations:oldcel

Noun: "(incel slang) an incel whose status is attributed to advanced age"

 * 2020, anonymous, quoted in Emma Nyström, "'What becomes of the broken-hearted?': En socialantropologisk studie om männen som kallar sig incels", thesis submitted to Lund University, page 29:
 * Women only see chad. They don't see the local Indian janitor, the oldcel librarian, the suicidal baldcel receptionist or lonely NEETcel, they don't even consider them as human

title: Citations:oldcel


text:
kahiki

Etymology 1
From. Compare to 🇨🇬.

Noun

 * 1) foreign country

Derived terms

 * hala kahiki
 * ʻuala kahiki

Noun

 * 1) a type of banana common on the island of Maui

Noun

 * 1) mouth

title: kahiki


text: Module:be-common/documentation

title: Module:be-common/documentation


text:
Citations:NEETcel

Noun: "(incel slang) an incel who is unemployed and not pursuing education or vocational training"

 * 2020, anonymous, quoted in Emma Nyström, "'What becomes of the broken-hearted?': En socialantropologisk studie om männen som kallar sig incels", thesis submitted to Lund University, page 29:
 * Women only see chad. They don't see the local Indian janitor, the oldcel librarian, the suicidal baldcel receptionist or lonely NEETcel, they don't even consider them as human

title: Citations:NEETcel


text:
Citations:chincel

Noun: "(incel slang) an incel who attributes their status to their jaw structure"

 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * “Heightcels” blame their short stature, “wristcels” blame their small wrists, “chincels” blame their jaw structure and “fatcels” blame their weight.

title: Citations:chincel


text:
αντεπαναστάτρια

Noun

 * 1) counter-revolutionary

title: αντεπαναστάτρια


text:
Citations:heightcel

Noun: "(incel slang) an incel who attributes their status to their short stature"

 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * “Heightcels” blame their short stature, “wristcels” blame their small wrists, “chincels” blame their jaw structure and “fatcels” blame their weight.
 * 2020, Katrine Rummelhoff, "Incels and Misogyny; what’s so appealing about hatred?", thesis submitted to the University of Oslo, page 59:
 * For an incel a display of subcultural capital can be as simple as denoting oneself as a “heightcel” because you believe your shortness is the cause of your inceldom.

title: Citations:heightcel


text:
επαναστάτρια

Noun

 * 1) revolutionary

title: επαναστάτρια


text:
Citations:fatcel

Noun: "(incel slang) an incel who attributes their status to their overweightness"

 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * “Heightcels” blame their short stature, “wristcels” blame their small wrists, “chincels” blame their jaw structure and “fatcels” blame their weight.

title: Citations:fatcel


text: Citations:加速度

title: Citations:加速度


text:
αντεπαναστάτης

Noun

 * 1) counter-revolutionary

title: αντεπαναστάτης


text: επαναστάτριας

title: επαναστάτριας


text: επαναστατριών

title: επαναστατριών


text: επαναστάτριες

title: επαναστάτριες


text: αντεπαναστατριών

title: αντεπαναστατριών


text: αντεπαναστάτριες

title: αντεπαναστάτριες


text: αντεπαναστάτριας

title: αντεπαναστάτριας


text: αντεπαναστάτη

title: αντεπαναστάτη


text: αντεπαναστάτες

title: αντεπαναστάτες


text: αντεπαναστατών

title: αντεπαναστατών


text:
Citations:mentalcel

Noun: "(incel slang) an incel whose status is attributed to mental illness or a psychological disorder"

 * 2019, Thea Høiland, "Incels and the stories they tell: A narrative analysis of Incels’ shared stories on Reddit", thesis submitted to the University of Oslo, page 90:
 * Joey, on the other hand, claims he is a mentalcel: involuntary celibate due to his mental challenges.
 * 2019, Sylvia Jaki, Tom De Smedt, Maja Gwóźdź, Rudresh Panchal, Alexander Rossa, & Guy De Pauw, "Online Hatred of Women in the Incels.me Forum: Linguistic Analysis and Automatic Detection",  Journal of Language Aggression and Conflict, Volume 7, Issue 2, November 2019:
 * Some users argue that mental disorders like autism can also render a person an incel. This opinion is in line with the forum’s rules section, where mentalcels are implicitly included as a “[t]ype of incel whose reason for failure in relationships/sex is related to mental illness or major insecurities”.
 * 2019, "Dr. Castle", The Blackpill Theory: Why Incels Are Right & You Are Wrong, page 143:
 * We even have research confirming that 'mentalcels' struggle in the same way high-functioning autistic adolescents struggle when it comes to relationships.
 * 2020, Małgorzata Waśniewska, "The Red Pill, Unicorns and White Knights: Cultural Symbolism and Conceptual Metaphor in the Slang of Online Incel Communities", in Cultural Conceptualizations in Language and Communication (Barbara Lewandowska-Tomaszczyk), page 67:
 * Here, two terms for self-description stand out, mainly braincels and mentalcels, denoting people who think they are lonely due to being either highly intelligent or mentally ill, respectively.
 * 2020, anonymous, quoted in Melinda Karlsson & Terese Wisberg, "'Live to be mogged. The truecel tale': En kritisk diskursanalys av forumen incels.co och looksmax.me", thesis submitted to the University of Gävle, page 38:
 * If u think of urself as a ”mentalcel” ur most likely a truecel in denial
 * 2020, Joshua A. Segalewitz, "'You Don’t Understand... It’s Not About Virginity': Sexual Markets, Identity Construction, and Violent Masculinity on an Incel Forum Board", thesis submitted to the University of Dayton, page 31:
 * Some suspect that gay men are using this site and attempt to ostracize them from it. Others insist that mental illness is not an excuse for someone to be an incel. Jewsel does both in the same comment: “Well, you are severe gaycel, or an extreme mentalcel. Just go to therapy and stop being this loli creepy guy and you would escape inceldom easily.”

title: Citations:mentalcel


text:
mentalcel

Etymology
.

Noun

 * 1)  Someone who is incel due to mental illness or a psychological disorder.
 * 2) * 2019, Thea Høiland, "Incels and the stories they tell: A narrative analysis of Incels’ shared stories on Reddit", thesis submitted to the University of Oslo, page 90:
 * Joey, on the other hand, claims he is a mentalcel: involuntary celibate due to his mental challenges.
 * 1) * 2020, Joshua A. Segalewitz, "'You Don’t Understand... It’s Not About Virginity': Sexual Markets, Identity Construction, and Violent Masculinity on an Incel Forum Board", thesis submitted to the University of Dayton, page 31:
 * Some suspect that gay men are using this site and attempt to ostracize them from it. Others insist that mental illness is not an excuse for someone to be an incel. Jewsel does both in the same comment: “Well, you are severe gaycel, or an extreme mentalcel. Just go to therapy and stop being this loli creepy guy and you would escape inceldom easily.”
 * Some suspect that gay men are using this site and attempt to ostracize them from it. Others insist that mental illness is not an excuse for someone to be an incel. Jewsel does both in the same comment: “Well, you are severe gaycel, or an extreme mentalcel. Just go to therapy and stop being this loli creepy guy and you would escape inceldom easily.”

title: mentalcel


text:
mihel

Etymology
From.

title: mihel


text:
Sovet Ittifoqi

Etymology
Clipping of.

Proper noun

 * 1)  The Soviet Union

title: Sovet Ittifoqi


text:
Citations:wristcel

Noun: "(incel slang) a male incel who attributes his status to thin or unmasculine wrists"

 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * “Heightcels” blame their short stature, “wristcels” blame their small wrists, “chincels” blame their jaw structure and “fatcels” blame their weight.
 * 2020, Małgorzata Waśniewska, "The Red Pill, Unicorns and White Knights: Cultural Symbolism and Conceptual Metaphor in the Slang of Online Incel Communities", in Cultural Conceptualizations in Language and Communication (ed. Barbara Lewandowska-Tomaszczyk), page 67:
 * while a wristcel is a physically mature male whose wrist bones are of a circumference smaller than the arbitrary standard of 6.5 inches, or otherwise feminine or childish-looking (note that the community is generally obsessed with measurements and proportions, constantly in search of scientific or pseudo-scientific studies that would set a measurable standard for masculinity).

title: Citations:wristcel


text: こころをくばる

title: こころをくばる


text:
Citations:fakecel

Noun: "(incel slang, derogatory) someone who falsely claims to be an involuntary celibate"

 * 2020, Joshua A. Segalewitz, "'You Don’t Understand... It’s Not About Virginity': Sexual Markets, Identity Construction, and Violent Masculinity on an Incel Forum Board", thesis submitted to the University of Dayton, page 31:
 * Others insist that race alone does not make someone an incel. For example, spicycurry says, “Arab men can get Indonesian/Pakistani/Back girls without a problem. If you only try for white girls then you are a fakecel.”

title: Citations:fakecel


text:
αντεπίσκεψη

Noun

 * 1) return visit

title: αντεπίσκεψη


text:
федэрацыя

Noun

 * 1) federation

title: федэрацыя


text: αντεπίσκεψης

title: αντεπίσκεψης


text: αντεπισκέψεως

title: αντεπισκέψεως


text: αντεπισκέψεων

title: αντεπισκέψεων


text: αντεπισκέψεις

title: αντεπισκέψεις


text:
녀동생

Etymology
.

title: 녀동생


text:
αντεπιστημονικός

Adjective

 * 1) unscientific

title: αντεπιστημονικός


text:
Citations:looksmaxx

Verb: "(incel slang) to seek to enhance one's physical appearance to increase one's sexual market value"

 * 2018, Jia Tolentino, "The Rage of the Incels", The New Yorker, 15 May 2018:
 * Incel culture advises men to “looksmaxx” or “statusmaxx”—to improve their appearance, to make more money—in a way that presumes that women are not potential partners or worthy objects of possible affection but inconveniently sentient bodies that must be claimed through cold strategy.
 * 2020, Annie Jones, "Incels and the Manosphere: Tracking Men's Movements Online", thesis submitted to the University of Central Florida, page 48:
 * Some attempt to “looksmaxx” with money by finding methods of increasing their sexual market value like getting plastic surgery.
 * 2020, Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 79:
 * This can be achieved through one of two ways: by ‘looksmaxxing’ or improving one’s physical characteristics in order to become more attractive (Chapter Four) or through the ‘just be white’ (JBW) theory.
 * 2020, Joshua A. Segalewitz, "'You Don’t Understand... It’s Not About Virginity': Sexual Markets, Identity Construction, and Violent Masculinity on an Incel Forum Board", thesis submitted to the University of Dayton, page 25:
 * However, many insist that, for truecels, looksmaxing does not actually improve one’s status: “Gymcelling doesn't work. We all know that. You need good genes to succeed at gymcelling, and if you have such genes you'll never need to gymcel anyway because women will be naturally attracted you and you'd have been getting validation for as long as you were getting pubes,” says OrangeFez2311.

title: Citations:looksmaxx


text:
цешча

Etymology
.

Noun

 * 1) wife's mother, mother-in-law

title: цешча


title: User:Benwing2/be-у-ў


title: User:Benwing2/test-be-у-ў


text:
αντεραστής

Noun

 * 1) rival lover, rival in love

title: αντεραστής


text:
αντεράστρια

Noun

 * 1) rival lover, rival in love

title: αντεράστρια


text: αντεράστριας

title: αντεράστριας


text: αντεραστριών

title: αντεραστριών


text: αντεράστριες

title: αντεράστριες


text: αντεραστή

title: αντεραστή


text: αντεραστών

title: αντεραστών


text: αντεραστές

title: αντεραστές


text:
αντίζηλος

Adjective

 * 1) rival
 * 2)  rival lover, rival in love

Noun

 * 1) rival, adversary

title: αντίζηλος


text: Category:be:Units of measure

title: Category:be:Units of measure


text:
Template:U:be:у-ў/documentation

This template displays a message indicating that two Belarusian terms, one beginning with 'у-' and the other with 'ў-', are variants of each other (with the 'у-' alternant used after consonants and at the beginning of a clause and the 'ў-' alternant used after vowels), and not truly distinct words. Only one of the two variants should be specified; the other is automatically derived. The specified variant is listed first.

title: Template:U:be:у-ў/documentation


text:
Template:U:uk:у-в/documentation

This template displays a message indicating that two Ukrainian terms, one beginning with 'у-' and the other with 'в-', are variants of each other (with the 'у-' alternant used after consonants and at the beginning of a clause and the 'в-' alternant used after vowels), and not truly distinct words. Only one of the two variants should be specified; the other is automatically derived. The specified variant is listed first.

title: Template:U:uk:у-в/documentation


text:
εργατικός

Adjective

 * 1) hard-working
 * 2) relating to work/employment
 * 3) relating to unions or the labour movement

title: εργατικός


text:
αντεργατικός

Adjective

 * 1) anti-labour, antilabor
 * 2) anti-union

title: αντεργατικός


text:
Citations:truecel

Noun: "(incel slang) someone who is incel, and has never had any form of physical intimacy, including kissing or holding hands"

 * 2019, Thea Høiland, "Incels and the stories they tell: A narrative analysis of Incels’ shared stories on Reddit", thesis submitted to the University of Oslo, page 90:
 * There is, for example, a thread discussing whether Joey, in the Vice documentary mentioned in my introduction, is a truecel. He is too good looking, according to many tellers.
 * 2019, "Legit Theory", quoted in Rosa Schwartzburg, "Mapping Trans-National Alt-Right Discourse Via The Genre Of Mass Killer Manifestos", thesis submitted to Central European University, page 52:
 * slayer Muhammad was fucking prime 9 year old jailbaits while Jesus was an [sic] truecel homeless virgin masturbating to the idea of God because he was a subhuman beta coping with the idea that his mother mary wasn't the hypergamous slut she was.
 * 2020, anonymous, quoted in Melinda Karlsson & Terese Wisberg, "'Live to be mogged. The truecel tale': En kritisk diskursanalys av forumen incels.co och looksmax.me", thesis submitted to the University of Gävle, page 38:
 * If u think of urself as a ”mentalcel” ur most likely a truecel in denial
 * 2020, Joshua A. Segalewitz, "'You Don’t Understand... It’s Not About Virginity': Sexual Markets, Identity Construction, and Violent Masculinity on an Incel Forum Board", thesis submitted to the University of Dayton, page 25:
 * However, many insist that, for truecels, looksmaxing does not actually improve one’s status: “Gymcelling doesn't work. We all know that. You need good genes to succeed at gymcelling, and if you have such genes you'll never need to gymcel anyway because women will be naturally attracted you and you'd have been getting validation for as long as you were getting pubes,” says OrangeFez2311.
 * 2020, Vanja Zdjelar, "Alone together: Exploring community on an incel forum", thesis submitted to Simon Fraser University, page 58:
 * Trucels exist on a spectrum with truecels at one extreme, incels (those who are involuntarily celibate but may have had a physical interaction with the opposite sex) in the middle, and nearcels on the other extreme.
 * Trucels exist on a spectrum with truecels at one extreme, incels (those who are involuntarily celibate but may have had a physical interaction with the opposite sex) in the middle, and nearcels on the other extreme.

title: Citations:truecel


text: ししょく

title: ししょく


text: むらさきいろ

title: むらさきいろ


text:
αντέρεισμα

Noun

 * 1)  buttress

title: αντέρεισμα


text:
Template:be-conj-manual/documentation

This template is used to specify a manual conjugation table. It is preferred to use instead (not yet implemented).

Examples
An example:

which produces

Parameters
The param aspect is required, and must have the value,   or. The template will automatically add the page to a category based on the aspect (e.g. Category:Belarusian perfective verbs), as well as Category:Belarusian reflexive verbs if the verb is reflexive (infinitive ends in -ца or -ся).

The title bar text can be overridden using title.

Multiple forms
As shown, you can include multiple comma-separated forms in a given slot, and they will be properly displayed and linked.

Missing values
Specifying  for a slot or simply omitting the corresponding param indicates that the slot has no value.

title: Template:be-conj-manual/documentation


text: αντερείσματος

title: αντερείσματος


text: αντερεισμάτων

title: αντερεισμάτων


text: αντερείσματα

title: αντερείσματα


text: ὀϊστοί

title: ὀϊστοί


text: 特養

title: 特養


text: mihl

title: mihl


text: mihla

title: mihla


text: mihni

title: mihni


text:
Citations:volcel

Noun: "(incel slang) a person who is voluntarily celibate"

 * 2018, Alex Hearn, "Who are the 'incels' and how do they relate to Toronto van attack?", The Guardian, 25 April 2018:
 * Incel is short for “involuntarily celibate”. The term rose to prominence because of its adoption by a subsection of the “manosphere”, a loose collection of movements united by misogyny that also includes some men’s rights activists, pick-up artists, and Mgtow/volcel – heterosexual men who refuse to have sex with women for political reasons.
 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * All of these subsets have a shared loathing of “volcels,” otherwise known as voluntary celibates.
 * 2018, Jesper Greve Kristensen, "The Angry Male: A Conceptual Analysis of Language Use in the Men’s Rights Movement", thesis submitted to the University of Iceland, page 91:
 * Incels seek to rebalance by putting the blame of their own perceived failures on women, and Volcels by boycotting women entirely, and thereby removing the risk of rejection.
 * 2019, Thea Høiland, "Incels and the stories they tell: A narrative analysis of Incels’ shared stories on Reddit", thesis submitted to the University of Oslo, page 89:
 * If you are good-looking, or not ugly enough, you are a volcel, a voluntary celibate.
 * 2019, anonymous, quoted in Zhané Hunte, "‘Female Nature, Cucks, and Simps’: Understanding Men Going Their Own Way as part of the Manosphere", thesis submitted to Uppsala University, pages 65-66:
 * I wonder. Whatever or whoever may be the originator of this bizarre game must not be very happy at us MGTOW (especially the hard MGTOW which are monks, volcels, pay no heed to women, etc.) for deviating from the pre-programmed directives which are very hard-wired, and almost impossible to expunge.
 * 2020, December Maxwell, Sarah R. Robinson, Jessica R. Williams, & Craig Keaton, "'A Short Story of a Lonely Guy': A Qualitative Thematic Analysis of Involuntary Celibacy Using Reddit", Sexuality & Culture (2020):
 * One commenter explained he was “a tiny bit of a volcel” since he did not like women from his country because of their personalities.
 * 2020, anonymous, quoted in Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 76:
 * No shit 80% of men aren’t virgins. But most men will have to bust their assess off and take scraps to get laid with any consistency. Men who can’t (autists) or won’t (volcels who demand a fair looksmatch) do this generally won’t have foids available to them even if they are 7s physically, unless they excel in some other field.

Adjective: "(incel slang) voluntarily celibate"

 * 2018, Victoria Zerbst, "Why I gave up sex in 2018", The Sydney Morning Herald, 16 March 2018:
 * Could being volcel be a path to enlightenment in a time where heterosexual interactions in the media appeared to be endlessly marred by patriarchal power dynamics?
 * 2018, anonymous, quoted in Maria Wiklund, "The Misogyny Within The Manosphere: A Discourse Analysis In A Swedish Context", thesis submitted to Malmö University, page 9:
 * Firstly, a lot of you people claiming to be “volcel” are simply coping, pretending you could get laid if you tried when in fact, you probably couldn’t.

title: Citations:volcel


text: míhá

title: míhá


text: míhej

title: míhej


text: míhal

title: míhal


text: míhán

title: míhán


text:
كلمات متقاطعة

Etymology
or.

Noun

 * 1) crossword

title: كلمات متقاطعة


text: entoações

title: entoações


text: entoação

title: entoação


text:
水吧

Etymology 1
, which is from.

Noun

 * 1)  counter or section at a restaurant or cafeteria where drinks and beverages are prepared
 * 2)  one who works at such place

Etymology 2
According to, the term in is not from.

Noun

 * 1)  spa

title: 水吧


text: lyouns

title: lyouns


text: lioun

title: lioun


text: lyoone

title: lyoone


text: lyoon

title: lyoon


text: lyown

title: lyown


text: lyun

title: lyun


text: leoun

title: leoun


text: lyone

title: lyone


text:
عتبة

Noun

 * 1) threshold, doorsill

Etymology
From.

Noun

 * 1) threshold, doorsill

title: عتبة


text:
musguento

Etymology
From.

Adjective

 * 1) mossy

title: musguento


text: أعتاب

title: أعتاب


text: عتبات

title: عتبات


text: 唱红脸

title: 唱红脸


text:
セウト

Adjective

 * 1)  straddling the line between acceptable and unacceptable

title: セウト


text:
Chadlite

Noun

 * 1)  A man of a slightly lower ranking on a scale of physical attractiveness than Chad.
 * 2) * 2018, anonymous, quoted in Rebecca Karlén, "Incels: En kartläggning av diskursen på forumet incels.is", thesis submitted to Uppsala University, page 31:
 * Because redpillers are usually normies or Chadlites while incels are ugly low-value males that women feel innately repulsed by.
 * 1) * 2019, Thea Høiland, "Incels and the stories they tell: A narrative analysis of Incels’ shared stories on Reddit", thesis submitted to the University of Oslo, page 74:
 * This story starts with the sentence: “When you hear the foid above you gets pushed down the stairs by her Chadlite bf but she gets up and goes back to him” (A), accompanied by an image of Pepe the frog laughing so hard he has to dry tears from his eyes (see image 4).

title: Chadlite


text:
Talk:λεγεών

Gender
What's the gender of this noun? Mark 5:15 construes it as masculine, but the Latin noun is feminine. PierreAbbat (talk) 07:41, 7 July 2020 (UTC)

title: Talk:λεγεών


text: とくよう

title: とくよう


text:
չանկալ

Etymology
Ultimately from. The sense "anchor" is present also in.

Noun

 * 1) hook
 * 2) anchor

title: չանկալ


text: Category:Kipchak terms derived from Persian


text: Category:Kipchak terms derived from Southwestern Iranian languages


text: Category:Kipchak terms derived from Western Iranian languages


text: こえをあげる

title: こえをあげる


text: ちぢめる

title: ちぢめる


text: はげむ

title: はげむ


text:
Citations:looksmatch

Noun: "(incel slang) a person of equal ranking to another on a scale of physical attractiveness"

 * 2019, "Dr. Castle", The Blackpill Theory: Why Incels Are Right & You Are Wrong, page 31:
 * Overwhelmingly incels (and men in general) want to date someone they consider to be their "looksmatch."
 * 2019, Alice Hines, "Men are having their faces rebuilt – and it’s all to get a date", The Times (UK), 8 June 2019:
 * Body dysmorphia “was invented by old psychologists who grew up in the Fifties and had NO problem to find a looksmatch [someone who is your counterpart in terms of appearance] or even better-looking wife”, noted another.
 * 2020, anonymous, quoted in Annie Jones, "Incels and the Manosphere: Tracking Men's Movements Online", thesis submitted to the University of Central Florida, page 57:
 * High iq. If all those things happened giving us an equal playing field it would be like before feminism, and foids [women] wouldn't be as picky with men around their looksmatch, probably even willing to settle for less than their looksmatch since usually men make more money.
 * 2020, anonymous, quoted in Katri-Maaria Kyllönen, "'The Incel Rebellion Has Already Begun!:' Diskurssianalyysi vihan oikeutuksen representaatioista Incels.co -palstan keskusteluissa", thesis submitted to The University of Lapland, page 81:
 * That's true when you talk about a liberal and open society like now, but when society has strict rules when it comes to sexuality we could at least force these femoids to marry someone from her looksmatch.
 * 2020, anonymous, quoted in Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 76:
 * No shit 80% of men aren’t virgins. But most men will have to bust their assess off and take scraps to get laid with any consistency. Men who can’t (autists) or won’t (volcels who demand a fair looksmatch) do this generally won’t have foids available to them even if they are 7s physically, unless they excel in some other field.

title: Citations:looksmatch


text:
User talk:Federicknguyeng

Welcome!
Welcome!

Hello, welcome to Wiktionary, and thank you for your contributions so far.

If you are unfamiliar with wiki editing, take a look at Help:How to edit a page. It is a concise list of technical guidelines to the wiki format we use here: how to, for example, make text boldfaced or create hyperlinks. Feel free to practice in the sandbox. If you would like a slower introduction we have a short tutorial.

These links may help you familiarize yourself with Wiktionary:

 * Entry layout (EL) is a detailed policy documenting how Wiktionary pages should be formatted. All entries should conform to this standard. The easiest way to start off is to copy the contents of an existing page for a similar word, and then adapt it to fit the entry you are creating.
 * Our Criteria for inclusion (CFI) define exactly which words can be added to Wiktionary, though it may be a bit technical and longwinded. The most important part is that Wiktionary only accepts words that have been in somewhat widespread use over the course of at least a year, and citations that demonstrate usage can be asked for when there is doubt.
 * If you already have some experience with editing our sister project Wikipedia, then you may find our guide for Wikipedia users useful.
 * The FAQ aims to answer most of your remaining questions, and there are several help pages that you can browse for more information.
 * A glossary of our technical jargon, and some hints for dealing with the more common communication issues.
 * If you have anything to ask about or suggest, we have several discussion rooms. Feel free to ask any other editors in person if you have any problems or question, by posting a message on their talk page.

You are encouraged to add a BabelBox to your userpage. This shows which languages you know, so other editors know which languages you'll be working on, and what they can ask you for help with.

I hope you enjoy editing here and being a Wiktionarian! If you have any questions, bring them to the Information desk, or ask me on my talk page. If you do so, please sign your posts with four tildes: ~ which automatically produces your username and the current date and time.

Again, welcome! — justin(r)leung { (t...) 07:51, 7 July 2020 (UTC)

title: User talk:Federicknguyeng


text:
looksmatch

Noun

 * 1)  A person of equal ranking to another on a scale of physical attractiveness.
 * 2) * 2020, anonymous, quoted in Annie Jones, "Incels and the Manosphere: Tracking Men's Movements Online", thesis submitted to the University of Central Florida, page 57:
 * High iq. If all those things happened giving us an equal playing field it would be like before feminism, and foids [women] wouldn't be as picky with men around their looksmatch, probably even willing to settle for less than their looksmatch since usually men make more money.
 * 1) * 2020, anonymous, quoted in Annie Jones, "Incels and the Manosphere: Tracking Men's Movements Online", thesis submitted to the University of Central Florida, page 57:
 * High iq. If all those things happened giving us an equal playing field it would be like before feminism, and foids [women] wouldn't be as picky with men around their looksmatch, probably even willing to settle for less than their looksmatch since usually men make more money.

title: looksmatch


text:
faahre

Etymology
Compare 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬.

Verb

 * 1) to drive, to ride

Conjugation
Conjugation of

title: faahre


text:
salmodiale

Etymology
From.

Adjective

 * 1) psalmodial

title: salmodiale


text:
Reconstruction:Proto-West Germanic/wōdijan

Etymology
From. Equivalent to and.

Verb

 * 1)  to rage, be furious


text:
psalmodial

Adjective

 * 1) Relating to psalms or to psalmody

Translations

 * Italian: salmodiale

title: psalmodial


text:
řečová figura

Noun

 * 1) figure of speech

title: řečová figura


text:
salmografo

Noun

 * 1) psalmist

title: salmografo


text:
řečový

Etymology
From.

Adjective

 * 1)  speech

title: řečový


text:
weiterverbreiten

Verb

 * 1)  to spread news, rumours etc.

title: weiterverbreiten


text:
salmonicoltore

Noun

 * 1) salmon farmer

title: salmonicoltore


text:
Reconstruction:Proto-West Germanic/wōd

Etymology 1
From.

Adjective

 * 1)   excited, energised, spirited
 * 2) frenzied, obsessed
 * 3)  furious, angry

Etymology 2
From.

Noun

 * 1)   anger, fury

title: Reconstruction:Proto-West Germanic/wōd


text: Template:RQ:Browning Seraphim

title: Template:RQ:Browning Seraphim


text:
salolo

Noun

 * 1) salol

title: salolo


text:
salomonicamente

Etymology
From.

Adverb

 * 1) Solominically
 * 2) impartially
 * 3) fairly, wisely

title: salomonicamente


text:
salpamento

Etymology
From.

Noun

 * 1) weighing anchor (or the recovery of a submersed object)
 * 2) setting sail

title: salpamento


text:
salsamento

Noun

 * 1) spicy food

title: salsamento


text:
salsato

Adjective

 * 1) sauced (cooked in, or served with a sauce

title: salsato


text:
rétorická figura

Noun

 * 1) figure of speech
 * 2) * 1964, Rozpravy Československé akademie věd:
 * Podle tohoto slovníku je to rétorická figura, při níž jsou srovnávány rozličné (diverse) nebo protivné (opposit) věci.
 * 1) * 1999, Vladimír Křivánek, Býti básníkem v Čechách:
 * Přes tuto svou důležitou funkci je apostrofa v souvislosti s rétorickou tradicí definována jako rétorická figura, jež je prostředkem personifikace, patosu a apelu a stávající definice nepostihují řadu jejích funkcí v moderní poezii, [...]
 * 1) * 2000, Vladimír Borecký, Teorie komiky:
 * V římské době (Cicero, Quintilian) byla ironie pojímána více formálně jako rétorická figura a byla začleněna mezi tropy.
 * 1) * 2006, Český jazyk a literatura:
 * Dospěla k závěru, že trojí opakování, klasická rétorická figura, je mimořádně účinná zejména v textech kazatelských.
 * 1) * 2012, Tomáš Jirsa, Fyziognomie psaní:
 * Ornatus coby rétorická figura je tak již ze své podstaty plně funkční, a nemůže být pouhým a kdykoli odstranitelným přídavkem.

title: rétorická figura


text:
salsezza

Etymology
From.

Noun

 * 1) saltiness

title: salsezza


text:
Citations:betabux

Noun: "(incel slang, derogatory) a beta male who acts as a provider for a woman who has decided to finally settle down"

 * 2018, Judah Weinerman, "Meet incels, the internet's resident anti-women hate brigades", The Justice (Brandeis University), 30 October 2018, page 11:
 * Next, you have "betas," unremarkable men who women will ignore but eventually marry for their money in a practice referred to as "betabux."
 * 2018, anonymous, quoted in Rebecca Karlén, "Incels: En kartläggning av diskursen på forumet incels.is", thesis submitted to Uppsala University, page 31:
 * They reproduce with "genetically inferior" men just fine. They don't usually reproduce with chads because they use birth control, they wait until they turn 35 and find some betabux cuck to have giga incel kids with.
 * 2019, anonymous, quoted in Stephane J. Baele, Lewys Brace & Travis G. Coan, "From 'Incel' to 'Saint': Analyzing the violent worldview behind the 2018 Toronto attack", Terrorism and Political Violence:
 * “Chad has to work hard to avoid having kids, roasties will beg for condoms off and lie about birth control to get his seed. [...] Meanwhile normie betabux can’t even be sure that his one kid is biologically his. The foid could’ve cheated on him while ovulating and his blue pilled ass would never know.”
 * 2019, "Dr. Castle", The Blackpill Theory: Why Incels Are Right & You Are Wrong, page 155:
 * These relationships are actually evidence for the blackpill, as these men are “beta bucks.”
 * 2020, anonymous, quoted in Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 54:
 * For one user “Hoping to go back to uni so I can moneymaxxx and not die of a lack of healthcare in this American shithole country. If I can get enough money, some foid will at least want me to be her betabuxx provider.”

Verb: "(incel slang, of a man) to act as a provider for a woman who has settled"

 * 2020, anonymous, quoted in Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 101:
 * Incels typically dislike men who betabuxx, dismissing the idea of attracting a women later in life because of the fear of being treated this way.
 * 2020, "iKillCucks", quoted in Alva Svenning & Moa Åkne, "'Normies don't know hardship': Incels och kvinnoförakt på digitala forum", thesis submitted to Lund University, page 12:
 * Betabuxxing is trash either way. She will never love you or your money like how she loves Chads 8 inch hard cock pounding every whole [sic] in her body (iKillCucks, 2019)

title: Citations:betabux


text: Category:Ancient Greek terms derived from the Proto-Indo-European root *sterh₃-


text: cross-grade

title: cross-grade


text:
salsiccione

Etymology
From.

Noun

 * 1) a large sausage
 * 2) a large bundle of faggots

title: salsiccione


text:
betabux

Etymology
, the second component being a leetspeak-influenced respelling of, from the incel phrase.

Noun

 * 1)  A beta male who acts as a provider for a woman who has decided to finally settle down.
 * 2) * 2018, anonymous, quoted in Rebecca Karlén, "Incels: En kartläggning av diskursen på forumet incels.is", thesis submitted to Uppsala University, page 31:
 * They reproduce with "genetically inferior" men just fine. They don't usually reproduce with chads because they use birth control, they wait until they turn 35 and find some betabux cuck to have giga incel kids with.
 * 1) * 2019, anonymous, quoted in Stephane J. Baele, Lewys Brace & Travis G. Coan, "From 'Incel' to 'Saint': Analyzing the violent worldview behind the 2018 Toronto attack", Terrorism and Political Violence:
 * “Chad has to work hard to avoid having kids, roasties will beg for condoms off and lie about birth control to get his seed. [...] Meanwhile normie betabux can’t even be sure that his one kid is biologically his. The foid could’ve cheated on him while ovulating and his blue pilled ass would never know.”
 * 1) * 2020, anonymous, quoted in Angus Charles Lindsay, "Swallowing the Black Pill: A Qualitative Exploration of Incel Antifeminism within Digital Society", thesis submitted to Victoria University of Wellington, page 54:
 * For one user “Hoping to go back to uni so I can moneymaxxx and not die of a lack of healthcare in this American shithole country. If I can get enough money, some foid will at least want me to be her betabuxx provider.”

Translations

 * Korean: 퐁퐁남(男)
 * Polish: betabankomat

title: betabux


text:
salsobromoiodico

Adjective

 * 1) containing bromide and iodide salts

title: salsobromoiodico


text: salsuggine

title: salsuggine


text:
salsugginoso

Etymology
From.

title: salsugginoso


text:
salsume

Noun

 * 1) saltiness

title: salsume


text:
Citations:incelosphere

Noun: "(incel slang) the totality of incel-oriented blogs and websites"

 * 2019, "Dr. Castle", The Blackpill Theory: Why Incels Are Right & You Are Wrong, page 110:
 * From a survey on incels.co, currently the largest incel forum in the incelosphere, only 20.5% of incels rated their childhood experience as positive.
 * 2020, Emily Price, "We live in a society: Violence and radicalization in the Internet Manosphere", paper submitted to Arcadia University, page 14:
 * Incels themselves, too, dislike the concept of being referred to as a unified community, given what they have termed the “incelosphere rift” – the inevitable disagreements that arise amongst large internet gatherings of self-identified incels, often centering around the topics of race, age, height, violence, and even gender.

title: Citations:incelosphere


text:
saltabellare

Verb

 * 1) to jump around, jump about

title: saltabellare


text:
saltabile

Etymology
From.

Adjective

 * 1) jumpable (that can be jumped)
 * 2) skippable (that can be omitted)
 * 3) negligible

title: saltabile


text:
saltamacchione

Etymology
.

Noun

 * 1) the cutting / coppicing of thick scrub

title: saltamacchione


text:
στόρνυμι

Etymology
From, from. Likely related to Swedish strö (spread, sprinkle).

Verb

 * 1) to smooth out, spread

title: στόρνυμι


text:
ochrnout

Verb

 * 1) to be(come) paralysed, to be left paralysed

title: ochrnout


text: στόρεσαν

title: στόρεσαν


text:
saltambanco

Etymology
Variant of.

title: saltambanco


text:
saltamiaddosso

Etymology
.

Noun

 * 1) a lazy person

title: saltamiaddosso


text:
saltamindosso

Etymology
.

Noun

 * 1) clothing that is too small or tight

title: saltamindosso


text: saltarellare

title: saltarellare


text:
alaliikki

Noun

 * 1)  foot bottom edge of a sail

title: alaliikki


text:
saltarupe

Etymology
.

Noun

 * 1) klipspringer

title: saltarupe


text:
Reconstruction:Proto-Italic/tempos

Etymology
From, whence also. Originally the word meant "what is stretched, stretching" → "stretch (of time)" → "time, occasion". Or from. Thus a section (of time). See also 🇨🇬,, , 🇨🇬. Compare the etymology of English.
 * Note that as indicated by the the adverb the noun would originally have declined like genus.

Noun

 * 1) stretch; or section, period (of time. See etymology)
 * 2) time

title: Reconstruction:Proto-Italic/tempos


text:
硝化菌

Noun

 * 1) nitrifying bacteria

title: 硝化菌


text:
saltatoio

Etymology
From.

Noun

 * 1) something that one jumps onto
 * 2) any of the horizontal wooden rods in a birdcage

title: saltatoio


text:
硝酸釷

Noun

 * 1)  thorium(IV) nitrate

title: 硝酸釷


text: 硝酸钍

title: 硝酸钍


text: βοήσας

title: βοήσας


text:
saltometro

Noun

 * 1) a graduated rod used to measure the height of the horizontal bar in high jump and pole vault competitions

title: saltometro


text: φορέειν

title: φορέειν


text:
saltrato

Noun

 * 1) bath salt

title: saltrato


text: Template:RQ:King James Version/sandbox

title: Template:RQ:King James Version/sandbox


text:
salubremente

Etymology
From.

Adverb

 * 1) healthily, healthfully, salubriously

title: salubremente


text: κάλεσσον

title: κάλεσσον


text: salunta

title: salunta


text:
saluresi

Noun

 * 1) saliuresis

title: saluresi


text:
McEnany

Etymology
Variant of.

Statistics

 * According to the 2010 United States Census, McEnany is the 57516th most common surname in the United States, belonging to 354 individuals. McEnany is most common among White (94.35%) individuals.

title: McEnany


text:
salutevole

Etymology
From.

Adjective

 * 1) salutary, healthy

title: salutevole


text:
salutiferamente

Etymology
From.

Adverb

 * 1) healthily
 * 2) usefully

title: salutiferamente


text:
salutissimi

Noun

 * 1) a greeting used at the beginning of a letter, wishing health to the recipients

title: salutissimi


text:
salvadeficit

Etymology
.

Adjective

 * 1)  that serves to remedy a budget deficit

title: salvadeficit


text:
salvafiaschi

Etymology
.

Noun

 * 1) a container divided into compartments, each of which can hold a bottle (typically of wine)

title: salvafiaschi


text:
verderzetten

Etymology
From.

Verb

 * 1)  to continue, to resume

title: verderzetten


text: salvagione

title: salvagione


text:
באַחנט

Adjective

 * 1) charming, graceful
 * 2) cute
 * 1) cute

title: באַחנט


text:
salvagonna

Etymology
.

Noun

 * 1) balayeuse

title: salvagonna


text:
Huccaby

Translations

 * Middle English: Woghebye

title: Huccaby


text:
salvamuro

Etymology
.

Noun

 * 1) skirting board

title: salvamuro


text:
أشوه

Adjective

 * 1) distorted, deformed

title: أشوه


text:
salvapantaloni

Etymology
.

title: salvapantaloni


text:
salvaroba

Etymology
.

Noun

 * 1) wardrobe
 * 2) sideboard

title: salvaroba


text:
æcerweorc

Etymology
From. Equivalent to.

Noun

 * 1) fieldwork, agricultural labour

title: æcerweorc


text:
salveregina

Noun

 * 1) Hail Mary (prayer)

title: salveregina


text:
Module:cmn-pron-Wuhan

-- Mostly based on the online Wuhan dictionary and Chinese Wikipedia article local export = {} local find = mw.ustring.find local gsub = mw.ustring.gsub local match = mw.ustring.match local gmatch = mw.ustring.gmatch local gsplit = mw.text.gsplit local lower = mw.ustring.lower local upper = mw.ustring.upper

local dtone = { ['ā'] = 'a', ['á'] = 'a', ['ǎ'] = 'a', ['à'] = 'a', ['ō'] = 'o', ['ó'] = 'o', ['ǒ'] = 'o', ['ò'] = 'o', ['ē'] = 'e', ['é'] = 'e', ['ě'] = 'e', ['è'] = 'e', ['ī'] = 'i', ['í'] = 'i', ['ǐ'] = 'i', ['ì'] = 'i', ['ū'] = 'u', ['ú'] = 'u', ['ǔ'] = 'u', ['ù'] = 'u', ['ǖ'] = 'ü', ['ǘ'] = 'ü', ['ǚ'] = 'ü', ['ǜ'] = 'ü', }

local initialConv = { ['b'] = 'p', ['p'] = 'pʰ', ['m'] = 'm', ['f'] = 'f', ['d'] = 't', ['t'] = 'tʰ', ['n'] = 'n', ['l'] = 'l', --I'm not sure whether to add "l" ['g'] = 'k', ['k'] = 'kʰ', ['h'] = 'x', ['ng'] = 'ŋ', ['j'] = 't͡ɕ', ['q'] = 't͡ɕʰ', ['x'] = 'ɕ', ['z'] = 't͡s', ['c'] = 't͡sʰ', ['s'] = 's', ['r'] = "ɻ", [] =  }

local finalConv = { ["ir"] = "z̩", --not sure whether to preserve this

["a"] = "a", ["o"] = "o", ["e"] = "ɯ", --recording for "e" sounds like "ɚ" ["ai"] = "ai", ["ei"] = "ei", ["ao"] = "au", ["ou"] = "ou", ["an"] = "an", ["en"] = "ən", ["ang"] = "aŋ", ["ong"] = "oŋ",

["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["ie"] = "ie", ["iao"] = "iau", ["iu"] = "iou", ["ian"] = "iɛn", ["in"] = "in", ["iang"] = "iaŋ", ["iong"] = "ioŋ",

["u"] = "u", ["ua"] = "ua", ["uo"] = "uɤ", ["uai"] = "uai", ["ui"] = "uei", ["uan"] = "uan", ["un"] = "uən", ["uang"] = "uaŋ",

["ü"] = "y", ["üe"] = "ye", --I don't know how to incorporate the 白读 of 靴 ["üan"] = "yɛn", ["ün"] = "yn", }

local toneConv = { ["1"] = "⁴⁵", ["2"] = "²¹³", ["3"] = "⁴²", ["4"] = "³⁵", ["-"] = "⁻", }

return export

title: Module:cmn-pron-Wuhan


text:
zdeformovat

Etymology
From.

Verb

 * 1) to misshape, to deform, to distort

title: zdeformovat


text: Einundzwanzigeckes

title: Einundzwanzigeckes


text: salvocondotto

title: salvocondotto


text: Einundzwanzigecks

title: Einundzwanzigecks


text: Einundzwanzigecken

title: Einundzwanzigecken


title: 21-Eck


text:
пендос

Noun

 * 1)  Alternative spelling of

title: пендос


text: Einundzwanzigecke

title: Einundzwanzigecke


text:
samarcanda

Noun

 * 1) a type of floral carpet

title: samarcanda


text:
samaridio

Noun

 * 1) a samara that has two "wings"

title: samaridio


text: sambabilino

title: sambabilino


text: sambernardo

title: sambernardo


text:
sameto

Noun

 * 1) samite

title: sameto


text:
sciamito

Noun

 * 1) samite

title: sciamito


text:
دزينة

Etymology
From, from Alexandrian but not Cairene where one has  instead.

Noun

 * 1) dozen

title: دزينة


text:
samotrace

Adjective

 * 1) Samothracian

Noun

 * 1) Samothracian

title: samotrace


text: sampiero

title: sampiero


text:
Zwanzig

Etymology
From the numeral.

Noun

 * 1) twenty number

title: Zwanzig


text:
polopravda

Etymology
From.

Noun

 * 1) half-truth deceptive statement

title: polopravda


text:
sampietra

Noun

 * 1)  lugsail

title: sampietra


text: طموحات

title: طموحات


text:
sampogna

Noun

 * 1) zampogna

title: sampogna


text:
मक़दूनिया

Etymology
.

title: मक़दूनिया


text: Schiaparellis

title: Schiaparellis


title: 21-eckig


text:
zlovolný

Etymology
From, as if calqued from.

Adjective

 * 1)  malevolent, spiteful, wicked, evil

title: zlovolný


text:
τείρεα

Etymology
Like, from.

Noun

 * 1)  stars or constellations

title: τείρεα


text:
einundzwanzigeckig

Adjective

 * 1) icosihenagonal

title: einundzwanzigeckig


text:
ὁλόσχοινος

Etymology
From.

Noun

 * 1) club-rush, used in wickerwork

title: ὁλόσχοινος


text: मकदूनिया

title: मकदूनिया


text: كسحاء

title: كسحاء


text: شوهاء

title: شوهاء


text:
kuutamokävely

Noun

 * 1) moonlight stroll, moonlit stroll

title: kuutamokävely


text:
kuutamourakka

Noun

 * 1) moonlighting a work on the side in the evening or the night

title: kuutamourakka


text:
kuutamourakointi

Noun

 * 1) moonlighting working on the side in the evening or the night

title: kuutamourakointi


text:
kuutiohinta

Noun

 * 1) price by cubic meter

title: kuutiohinta


text:
kuutiojalka

Noun

 * 1) cubic foot

title: kuutiojalka


text:
kuutiometripaino

Noun

 * 1) weight by cubic meter

title: kuutiometripaino