text:
Module:ang-verb-anglian

--Welcome to my humble little project! --The goal here is to fork the ang-verb to create a version which properly accounts for Anglian forms --This is surely incomplete and full of errors so feel free to add or to request fixes which I will attend to --Currently working (more or less, still not fully tested): --All classes of verbs

local m_links = require("Module:links") local m_utilities = require("Module:utilities") local strutils = require("Module:string utilities") local m_table = require("Module:table")

local com = require("Module:ang-common") local lang = require("Module:languages").getByCode("ang")

local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub

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

-- like str:gsub but discards all but the first return value local function gsub(term, foo, bar, n)	local retval = term:gsub(foo, bar, n)	return retval end

local function track(page) require("Module:debug").track("ang-verb/" .. page) return true end

local export = {}

local long_vowel = "āēīōūȳǣ" .. com.MACRON -- No precomposed œ + macron local short_vowel = "aeiouyæœ" local short_vowel_c = "[" .. short_vowel .. "]" local vowel = long_vowel .. short_vowel local vowel_c = "[" .. vowel .. "]" local long_vowel_c = "[" .. long_vowel .. "]" local non_vowel_c = "[^" .. vowel .. "]" local always_unvoiced_cons = "cċkptxz" local always_unvoiced_cons_c = "[" .. always_unvoiced_cons .. "]" local unvoiced_cons = always_unvoiced_cons .. "fsþð" local unvoiced_cons_c = "[" .. unvoiced_cons .. "]" local single_cons = "bcċdfgġhklmnprstwþðƿ" local single_cons_c = "[" .. single_cons .. "]" local cons = single_cons .. "xz" local cons_c = "[" .. cons .. "]"

local slots_and_accel = { ["infinitive"] = "inf", ["infinitive2"] = "inflected|inf", ["1sg_pres_indc"] = "1|s|pres|indc", ["2sg_pres_indc"] = "2|s|pres|indc", ["3sg_pres_indc"] = "3|s|pres|indc", ["pl_pres_indc"] = "p|pres|indc", ["sg_pres_subj"] = "s|pres|subj", ["pl_pres_subj"] = "p|pres|subj", ["1sg_past_indc"] = "1|s|pret|indc", ["2sg_past_indc"] = "2|s|pret|indc", ["3sg_past_indc"] = "3|s|pret|indc", ["pl_past_indc"] = "p|pret|indc", ["sg_past_subj"] = "s|pret|subj", ["pl_past_subj"] = "p|pret|subj", ["sg_impr"] = "s|impr", ["pl_impr"] = "p|impr", ["pres_ptc"] = "pres|part", ["past_ptc"] = "past|part", }

local function ends_in_long_vowel(word) if rfind(word, long_vowel_c .. "$") then return true elseif rfind(word, "ē[ao]$") then return true elseif rfind(word, "ī[eo]$") then return true else return false end end

local function begins_with_verbal_prefix(word) word = com.decompose(word) for _, prefixspec in ipairs(com.prefixes) do		local prefix = prefixspec[1] local specs = prefixspec[2] if specs.verb then local main = rmatch(word, "^" .. prefix .. "(.-)$") if main and (not specs.restriction or rfind(main, specs.restriction)) then return true end end end

return false end

local function make_table(forms) local title = forms.title local accel_lemma = m_links.remove_links(forms.infinitive[1] or mw.title.getCurrentTitle.text) local function typetext local typ = forms["type"] local class = forms["class"] if typ == "strong" then return "strong" .. (class and " class " .. class or "") .. "" elseif typ == "weak" then return "weak" .. (class and " class " .. class or "") .. "" elseif typ == "pretpres" then return "preterite-present" elseif typ == "irreg" or typ == "anomalous" then return "irregular" else error("Unrecognized verb type: " .. typ) end end if not title then title = "Conjugation of " .. m_links.full_link({lang = lang, alt = accel_lemma} ), "term" if forms["type"] then title = title .. " (" .. typetext .. " Anglian)" end end local table_args = { title = title, style = forms.style == "right" and "float:right; clear:right;" or "", width = forms.width or "40", }	for slot, accel_form in pairs(slots_and_accel) do		local table_arg = {} local slotforms = forms[slot] and #forms[slot] > 0 and forms[slot] or {"—"} for _, form in ipairs(slotforms) do			table.insert(table_arg, form == "—" and form or m_links.full_link{				lang = lang, term = form, accel = {					form = accel_form ~= "" and accel_form or nil,					lemma = accel_lemma,				}			}) table_args[slot] = table.concat(table_arg, ", ") end end local table = [=[  {title} 🛈 This feature is under development and may not always produce the expected forms {\op}| style="background:#F9F9F9;text-align:center;width:{width}em" class="inflection-table" ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | infinitive ! style="font-size:80%;" | indicative mood ! style="font-size:80%; background-color:#EFEFFF" | present tense ! style="font-size:80%; background-color:#EFEFFF" | past tense ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | first person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | second person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | third person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" | subjunctive ! style="font-size:80%; background-color:#EFEFFF" | present tense ! style="font-size:80%; background-color:#EFEFFF" | past tense ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" | imperative ! style="font-size:80%; background-color:#EFEFFF" colspan="2" | ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" | participle ! style="font-size:80%; background-color:#EFEFFF" | present ! style="font-size:80%; background-color:#EFEFFF" | past ! style="font-size:90%; background-color:#FFFFE0; text-align: left" |
 * {infinitive}¹
 * {infinitive2}
 * {1sg_pres_indc}
 * {1sg_past_indc}
 * {2sg_pres_indc}
 * {2sg_past_indc}
 * {3sg_pres_indc}
 * {3sg_past_indc}
 * {pl_pres_indc}
 * {pl_past_indc}
 * {sg_pres_subj}
 * {sg_past_subj}
 * {pl_pres_subj}
 * {pl_past_subj}
 * colspan="2" | {sg_impr}
 * colspan="2" | {pl_impr}
 * {pres_ptc}
 * {past_ptc}
 * {\cl}

¹In Northumbrian, final -n was regularly lost from these forms ²In Late Northumbrian, final -þ was frequently changed to -s ³In Mercian, final -t was sometimes added to these forms due to West Saxon influence ]=] --FIXME return strutils.format(table, table_args) end

function export.make_table(frame) local parent_args = frame:getParent.args local params = { ["title"] = {default = "—"}, ["type"] = {}, ["width"] = {}, ["style"] = {}, }	for slot, _ in pairs(slots_and_accel) do		params[slot] = {} end local args = require("Module:parameters").process(parent_args, params) return make_table(args) end

local function vernerize_cons(suf, verner) if not verner then return suf end local first_cons, cons = rmatch(suf, "^(.*)([sþðh])$") if not first_cons then return suf end if cons == "s" then cons = "r" elseif cons == "þ" or cons == "ð" then cons = "d" elseif cons == "h" then cons = "g" else error("Internal error in vernerize_cons: Unexpected suffix " .. suf) end return first_cons .. cons end

local function depalatalize_final_cons_before_cons(word) if word:find("sċ$") then return word elseif word:find("nċġ$") then -- crinċġan etc.		return gsub(word, "nċġ$", "ng") else return rsub(word, "([nċġ]?[ċġ])$", {			["ċ"] = "c",			["nċ"] = "nc",			["ċċ"] = "cc",			["ġċ"] = "ġc",			["nġ"] = "ng",			["ċġ"] = "cg",			-- ġ and ġġ stay as-is		}) end end

local function depalatalize_final_cons_before_back_vowel(word) local word = depalatalize_final_cons_before_cons(word) return gsub(word, "ġ$", "g") end

local function palatalize_final_cons(word) return rsub(word, "([cg]?[cg])$", {		["c"] = "ċ",		["cc"] = "ċċ",		["cg"] = "ċġ",		["g"] = "ġ",		["gc"] = "gċ", -- ??		["gg"] = "ċġ",	}) end

-- Add an ending that begins with a consonant onto a stem, making adjustments -- as necessary when two consonants come together. Currently recognizes only -- the three endings "st", "þ" and "d". local function construct_cons_stem_ending(stem, ending) -- If the stem ends in a geminate, reduce to single consonant -- (e.g. fyll-, sett-). local origstem = stem local base, final_geminated = rmatch(stem, "^(.-)(" .. non_vowel_c .. ")%2$")	if base then stem = base .. final_geminated end stem = depalatalize_final_cons_before_cons(stem) if ending == "st" then -- For 2sg: -- cyssan + -st -> cyst, tǣsan + -st -> tǣst -- settan + -st -> setst, myntan + -st -> myn(t)st (?), restan + -st -> restst/rest (?) -- bǣdan + -st -> bǣtst, sendan + -st -> sen(t)st -- cȳþan + -st -> cȳst, cwiþ- + -st -> cwist -- wiex- + -st -> wiext -- drenċan + -st -> drencst -- senġan + -st -> sengst if stem:find("s$") then return stem .. "t" elseif stem:find("[dt]$") then if rfind(stem, vowel_c .. "[dt]$") then return gsub(stem, "[dt]$", "tst") elseif rfind(stem, "s[dt]$") then return gsub(stem, "s[dt]$", "st") else return {gsub(stem, "[dt]$", "st"), gsub(stem, "[dt]$", "tst")} end elseif rfind(stem, "[þð]$") then return rsub(stem, "[þð]$", "st") elseif stem:find("x$") then return stem .. "t" else return stem .. "st" end elseif ending == "þ" then -- For 3sg: -- cyssan + -þ -> cyst, tǣsan + -þ -> tǣst -- settan + -þ -> set(t), myntan + -þ -> mynt, restan + -þ -> rest -- bǣdan + -þ -> bǣt(t), sendan + -þ -> sent -- cȳþan + -þ -> cȳþ(þ), cwiþ- + -þ -> cwiþ(þ) -- wiex- + -þ -> wiext -- drenċan + -þ -> drencþ -- senġan + -þ -> sengþ if rfind(stem, vowel_c .. "[dt]$") then return {gsub(stem, "[dt]$", "tt"), gsub(stem, "[dt]$", "t")} elseif stem:find("[dt]$") then return gsub(stem, "[dt]$", "t") elseif stem:find("[sx]$") then return stem .. "t" elseif rfind(stem, "[þð]$") then return {rsub(stem, "[þð]$", "þþ"), stem} else return stem .. "þ" end elseif ending == "d" then -- For past: -- cyssan + -de -> cyste, tǣsan + -de -> tǣsde -- settan + -de -> sette, myntan + -de -> mynte, restan + -de -> reste, mētan + -de -> mētte -- bǣdan + -de -> bǣdde, sendan + -de -> sende, hreddan + -de -> hredde -- cȳþan + -de -> cȳþde (later cȳdde), ġeorwirþan + -de -> ġeorwirþde, sċeþþan + -de -> sċeþte --  (? Bosworth-Toller has only sċeþede, and has pæþde for *pæþte from pæþþan) -- līexan + -de -> līexte -- pyffan + -de -> pyfte, ġelīefan + -de -> ġelīefde -- drenċan + -de -> drencte -- senġan + -de -> sengde -- cīepan + -de -> cīepte, clyppan + -de -> clypte -- spillan + -de -> spilde, cierran + -de -> cierde, wemman + -de -> wemde, etc. if rfind(stem, vowel_c .. "t$") then return stem .. "t" elseif rfind(stem, vowel_c .. "d$") then return stem .. "d" elseif stem:find("[dt]$") then return stem elseif rfind(stem, always_unvoiced_cons_c .. "$") or rfind(origstem, unvoiced_cons_c .. "[sfþð]$") then return stem .. "t" else return stem .. "d" end else error("Unrecognized ending: '" .. ending .. "'") end end

-- Default function for combining a stem and an ending. This makes no adjustments -- to the result other than returning an optional variant ending in -h if the result -- ends in -g. Example: stīgan preterite stāg or stāh. (Does not apply to a form -- ending in -ġ.) If adjustments are necessary at the stem/ending boundary, use e.g. -- construct_cons_stem_ending. local function default_construct_stem_ending(stem, ending) local form = stem .. ending if form:find("g$") and not form:find("[ncg]g$") then return {form, gsub(form, "g$", "h")} else return form end end

--automatically performs smoothing and retraction which may result from conjugation local function smooth_retract(text) if type(text) == table then edit = {} for _, f in ipairs(text) do			edit = edit + smooth_retract(f) end return edit end edit = text --anglian smoothing first --long ēa smooths to ē before gch with or without an interceding l or r	local prefix, dipthong, suffix = rmatch(edit, "^(.-)(ēa)([lr]?[gch].-)$") if prefix then return gsub(edit, "ēa" .. suffix, "ē" .. suffix) end --short ea smooths to e before back consonant with an interceding l or r followed by a back consonant prefix, dipthong, suffix = rmatch(edit, "^(.-)(ea)([lr][gch][aou].-)$") --I don't think an accented back vowel can occur here? if prefix then return gsub(edit, "ea" .. suffix, "e" .. suffix) end --short ea smooths to æ before back consonant with or without interceding l or r when it does not follow the above rule prefix, dipthong, suffix = rmatch(edit, "^(.-)(ea)([lr]?[gch].-)$") if prefix then return gsub(edit, "ea" .. suffix, "æ" .. suffix) end --long ēo smooths to ē before gch with or without an interceding l or r	prefix, dipthong, suffix = rmatch(edit, "^(.-)(ēo)([lr]?[gch].-)$") if prefix then return gsub(edit, "ēo" .. suffix, "ē" .. suffix) end --short eo smooths to e before gch with or without an interceding l or r	prefix, dipthong, suffix = rmatch(edit, "^(.-)(eo)([lr]?[gch].-)$") if prefix then return gsub(edit, "eo" .. suffix, "e" .. suffix) end --long īo smooths to ī before gch with or without an interceding l or r	prefix, dipthong, suffix = rmatch(edit, "^(.-)(īo)([lr]?[gch].-)$") if prefix then return gsub(edit, "īo" .. suffix, "ī" .. suffix) end --short io smooths to i before gch with or without an interceding l or r	prefix, dipthong, suffix = rmatch(edit, "^(.-)(io)([lr]?[gch].-)$") if prefix then return gsub(edit, "io" .. suffix, "i" .. suffix) end -- or string.match(edit, "Ea") or string.match(edit, "eo") or string.match(edit, "ēo") or string.match(edit, "io") or string.match(edit, "īo") --perform retraction of ea before l or r	--if retraction before r occures, add both to chart if edit ~= gsub(edit, "ear", "ar") then out = {edit, gsub(edit, "ear", "ar")} else out = {gsub(edit, "eal", "al")} end -- and /aN/ -> /oN/ --if edit ~= gsub(edit, "an", "on")then --	table.insert(out, gsub(edit, "an", "on")) --end --if edit ~= gsub(edit, "am", "om")then --	table.insert(out, gsub(edit, "am", "om")) --end return out end

local function add_form_to_slot(args, slot, form) if not args[slot] then args[slot] = {} end if type(form) == "string" then if type(smooth_retract(form)) == "string" then m_table.insertIfNot(args[slot], smooth_retract(form)) --ANGLIAN FIX ME		else for _, q in ipairs(smooth_retract(form)) do				if type(q) == "string" then m_table.insertIfNot(args[slot], q)end end end else for _, f in ipairs(form) do			g = smooth_retract(f) if type(g) == "string" then m_table.insertIfNot(g) else for _, j in ipairs(g) do					if type(j) == "string" then m_table.insertIfNot(j) else for _, k in ipairs(j) do							if type(k) == "string" then m_table.insertIfNot(k) end end end end end --m_table.insertIfNot(args[slot], smooth_retract(f)) end end end

local function add_ending_with_prefix(args, slot, pref, stems, ending, construct_stem_ending) construct_stem_ending = construct_stem_ending or default_construct_stem_ending if type(stems) ~= "table" then stems = {stems} end for _, stem in ipairs(stems) do local form = construct_stem_ending(pref and pref .. stem or stem, ending) add_form_to_slot(args, slot, form) end end

local function add_ending(args, slot, stems, ending, construct_stem_ending) add_ending_with_prefix(args, slot, nil, stems, ending, construct_stem_ending) end

local function construct_optional_ge_stem_ending(stem, ending) return "(ġe)" .. stem .. ending .. "" end

--Modified to add -u endings local function make_non_past(args, presa, presefin, presenfin, pres23, impsg, pp, with_ge, presu) add_ending(args, "infinitive", presa, "n") add_ending(args, "infinitive2", presenfin, "nne") add_ending(args, "infinitive2", presa, "nne") if presu ~= "NIL" then add_ending(args, "1sg_pres_indc", presu, "u") end --add_ending(args, "1sg_pres_indc", presu, "o") --add_ending(args, "1sg_pres_indc", presu, "a") add_ending(args, "1sg_pres_indc", presefin, "") --add_ending(args, "2sg_pres_indc", pres23, "st") add_ending(args, "2sg_pres_indc", pres23, "s³") add_ending(args, "3sg_pres_indc", pres23, "þ²") add_ending(args, "pl_pres_indc", presa, "þ²") add_ending(args, "sg_pres_subj", presefin, "") add_ending(args, "pl_pres_subj", presefin, "n¹") add_ending(args, "sg_impr", impsg, "") add_ending(args, "pl_impr", presa, "þ²") add_ending(args, "pres_ptc", presenfin, "nde") if with_ge then add_ending(args, "past_ptc", pp, "", construct_optional_ge_stem_ending) else add_ending(args, "past_ptc", pp, "") end end

local function make_strong_past(args, pref, pastsg, pastpl) add_ending_with_prefix(args, "1sg_past_indc", pref, pastsg, "") add_ending_with_prefix(args, "2sg_past_indc", pref, pastpl, "e") add_ending_with_prefix(args, "3sg_past_indc", pref, pastsg, "") add_ending_with_prefix(args, "pl_past_indc", pref, pastpl, "un") add_ending_with_prefix(args, "pl_past_indc", pref, pastpl, "on") add_ending_with_prefix(args, "sg_past_subj", pref, pastpl, "e") add_ending_with_prefix(args, "pl_past_subj", pref, pastpl, "en¹") end

local function make_strong(presa, prese, pres23, impsg, pastsg, pastpl, pp, with_ge, presu) local args = {} make_non_past(args, presa, prese, prese, pres23, impsg, pp, with_ge, presu) make_strong_past(args, nil, pastsg, pastpl) return args end

local function make_weak_past(args, pref, past) add_ending_with_prefix(args, "1sg_past_indc", pref, past, "e") --add_ending_with_prefix(args, "2sg_past_indc", pref, past, "est") add_ending_with_prefix(args, "2sg_past_indc", pref, past, "es³") add_ending_with_prefix(args, "3sg_past_indc", pref, past, "e") add_ending_with_prefix(args, "pl_past_indc", pref, past, "un") add_ending_with_prefix(args, "pl_past_indc", pref, past, "on") add_ending_with_prefix(args, "sg_past_subj", pref, past, "e") add_ending_with_prefix(args, "pl_past_subj", pref, past, "en¹") end

local function make_weak(presa, presefin, presenfin, pres23, impsg, past, pp, with_ge, presu) local args = {} make_non_past(args, presa, presefin, presenfin, pres23, impsg, pp, with_ge, presu) make_weak_past(args, nil, past) return args end

local strong_verbs = {}

strong_verbs["1"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ī(" .. cons_c .. "+)an$") if pref then -- bīdan "await", ācwīnan "dwindle away", sċīnan "shine", spīwan "spew, spit", etc.; -- stīgan "ascend" (þū stīġst, stāg/stāh [handled by default_construct_stem_ending],		-- stigon, stiġen); blīcan "shine" (þū blīcst/blīċest) data.pres23 = pref .. "ī" .. palatalize_final_cons(suf) .. "e" if suf == "g" then data.impsg = pref .. "īġ" else data.impsg = pref .. "ī" .. suf end -- ġīnan "yawn" (gān, ġinon, ġinen) data.pastsg = depalatalize_final_cons_before_back_vowel(pref) .. "ā" .. suf -- snīþan "cut" -> snidon; sċrīþan "go, proceed" -> sċridon -- (but not mīþan "avoid", wrīþan "twist") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "i" .. pastsuf if pastsuf == "g" then data.pp = pref .. "iġen" else data.pp = data.pastpl .. "en" end return end pref = rmatch(data.inf, "^(.-)[ēī]on$") if pref then -- tēon/tīon "accuse" < *tīhanan, similarly lēon "lend" < *līhwanan, -- sēon "strain" < *sīhwanan, þēon "thrive" < *þinhanan (originally strong 3), -- wrēon < *wrīhanan. Beware of homonyms e.g. tēon "pull, draw" (strong 2) < *teuhanan, -- tēon "make, create" (weak) ?< *tīhanan (strong); -- þēon/þēowan/þȳ(g)(a)n "press" (weak) < *þunhijanan; -- sēon "see" (strong 5) < *sehwanan data.presu = gsub(data.inf, "on$", "") --data.pres23 = {pref .. "īh"} --FIXME IE correction data.pres23 = {pref .. "ī", pref .. "ē"} -- h usually dropped from pres23 says Ythede data.impsg = gsub(data.inf, "n$", "h") data.pastsg = pref .. "āh" if rfind(pref, "[þð]$") then -- þēon "thrive", has remnant strong 3 parts data.pastpl = {pref .. "ig", pref .. "ung"} data.pp = {pref .. "iġen", pref .. "ungen"} else data.pastpl = pref .. "ig" if pref:find("s$") then -- sēon "strain" alt past part siwen data.pp = {pref .. "iġen", pref .. "iwen"} else data.pp = pref .. "iġen" end end return end end

strong_verbs["2"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ēo(" .. cons_c .. "+)an$") if pref then -- bēodan "command", crēopan "creep"; rēocan "smoke, reek" (þū rīecst/rīeċest); -- drēogan "endure" (þū drīeġst, drēag/drēah [handled by default_construct_stem_ending],		-- drugon, drogen) data.pres23 = {pref .. "īo" .. palatalize_final_cons(suf) .. "e", pref .. "ēo" .. palatalize_final_cons(suf) .. "e"} data.impsg = pref .. "ēo" .. suf data.pastsg = pref .. "ēa" .. suf -- ġēotan "pour" (ġēat, guton, goten); ċēosan "choose" (ċēas, curon, coren) local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- ċēosan "choose" -> curon; forlēosan "lose" -> forluron; sēoþan "boil" -> sudon -- (but not ābrēoþan "perish, ruin") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "o" .. pastsuf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ū(" .. cons_c .. "+)an$") if pref then -- sċūfan "shove"; brūcan "use" (þū brīecst/brīeċest); -- būgan "bend" (þū bīeġst, bēag/bēah [handled by default_construct_stem_ending],		-- bugon, bogen) data.pres23 = {pref .. "ȳ" .. palatalize_final_cons(suf) .. "e", data.presu .. "e"} data.impsg = pref .. "ū" .. suf -- could have palatalization here, but no known examples data.pastsg = pref .. "ēa" .. suf -- no known examples of Vernerization, but just in case local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "u" .. pastsuf data.pp = pref .. "o" .. pastsuf .. "en" return end local pref = rmatch(data.inf, "^(.-)ēon$") if pref then -- tēon "pull, draw" < *teuhanan, flēon "flee" -- Beware of homonyms, e.g. tēon/tīon "accuse" (strong 1) < *tīhanan, -- tēon "make, create" (weak) ?< *tīhan (strong) data.presu = gsub(data.inf, "on$", "") data.pres23 = {pref .. "ī", pref .. "ē"} --FIXME IE CORRECTION data.impsg = gsub(data.inf, "n$", "h") data.pastsg = pref .. "ēah" -- no examples where depalatalization is needed data.pastpl = pref .. "ug" data.pp = pref .. "ogen" return end end

strong_verbs["3"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)i([mn]" .. cons_c .. "+)an$") if pref then -- bindan "bind", climban "climb", ġelimpan "happen", winnan "win", -- swimman "swim", etc.; ācwincan "vanish" (þū ācwincst/ācwinċest); -- cringan (þū cringst/crinġest), variant crinċġan (þū cringst/crinċġest) data.pres23 = pref .. "i" .. palatalize_final_cons(suf) .. "e" data.impsg = pref .. "i" .. suf -- onġinnan "begin" (ongann, ongunnon, ongunnen), ċimban "join" local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- no Verner alternation here; expected #fīþan, #fōþ, #fundon < -- *finþanan, *fanþ, *fundund regularized into findan, fand, fundon; -- but depalatalize to handle crin(ċ)ġan past crang/crungon/crungen -- and (maybe?) variant crinċan past cranc/cruncon/cruncen local pastsuf = depalatalize_final_cons_before_cons(suf) data.pastsg = {gsub(pastpref .. "a" .. pastsuf, "am", "om"), gsub(pastpref .. "a" .. pastsuf, "an", "on"), pastpref .. "a" .. pastsuf} data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "u" .. pastsuf .. "en" return end local pref, vowel, suf = rmatch(data.inf, "^(.-)(ie)(l" .. cons_c .. "+)an$") if not pref then -- ġeldan/ġildan/ġyldan variants of ġieldan; helpan/bellan/delfan etc. pref, vowel, suf = rmatch(data.inf, "^(.-)([eiy])(l" .. cons_c .. "+)an$") end if not pref then pref, vowel, suf = rmatch(data.inf, "^(.-)(eo)(" .. cons_c .. "+)an$") end if pref then -- helpan "help" (þū hilpst), bellan "bellow", beteldan "cover", delfan "dig", -- sweltan "die", etc.; belgan "swell with anger" (þū bielġst, bealg/bealh		-- [handled by default_construct_stem_ending]) --		-- ġieldan "yield, pay" (þū ġiel(t)st, hē ġieldeþ/ġielt, ġeald, guldon, golden), -- ġiellan "yell", ġielpan "boast" --		-- weorpan "throw" (þū wierpst), feohtan "fight", sċeorfan "gnaw"; -- āseolcan "languish" (þū āsielcst/āsielċest), beorgan "protect" -- (þū bierġst, bearg/bearh [handled by default_construct_stem_ending]) --data.pres23 = {pref .. (vowel == "e" and "i" or vowel == "eo" and "io" or vowel) .. palatalize_final_cons(suf) .. "e", pref .. vowel .. palatalize_final_cons(suf) .."e"} data.pres23 = {pref .. (vowel == "e" and "i" or vowel == "eo" and "eo" or vowel) .. palatalize_final_cons(suf) .. "e", pref .. vowel .. palatalize_final_cons(suf) .."e"} data.impsg = pref .. vowel .. suf data.pastsg = pref .. "ea" .. suf --Account for possible retraction before l --data.pastsg = {gsub(pref .. "ea" .. suf, "eal", "al"), pref .. "ea" .. suf} --helpan is attested as gehalp in Aldred --data.pastsg = {gsub(pref .. "ea" .. suf, "eal", "al")} --Should r also cause retraction in Northumbrian? --data.pastsg = {pref .. "ea" .. suf, gsub(pref .. "ea" .. suf, "ear", "ar")} --Ythede saith no! -- ġieldan etc. (see above) local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- weorþan -> wurdon --TEST local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "o" .. pastsuf .. "en" return end local pref = rmatch(data.inf, "^(.-)eġdan$") if pref then -- breġdan "brandish" (þū breġdest, hē breġdeþ, bræġd/brǣd, brugdon, brogden) -- streġdan "strew" (like breġdan) data.pres23 = pref .. "eġde" data.impsg = pref .. "eġd" data.pastsg = {pref .. "æġd", pref .. "ǣd"} data.pastpl = pref .. "ugd" data.pp = pref .. "ogden" return end --Anglian- How is beornan declined? local pref, suf = rmatch(data.inf, "^(.-)(ie?rn)an$") if not pref then pref, suf = rmatch(data.inf, "^(.-)(yrn)an$") end if pref then -- biernan/birnan/byrnan "burn" < *brinnanan (þū biernst, barn/born/bearn, burnon, burnen) -- iernan/irnan/yrnan "run" < *rinnan (like biernan) data.pres23 = pref .. suf data.impsg = data.pres23 data.pastsg = {pref .. "arn", pref .. "orn", pref .. "earn"} data.pastpl = pref .. "urn" data.pp = pref .. "urnen" return end local pref, vowel = rmatch(data.inf, "^(.-)([ou])rnan$") if pref then -- murnan "mourn" (þū myrnst, mearn, murnon, — but BT documents mornen) -- spurnan/spornan "spurn" (þū spyrnst, spearn, spurnon, spornen) data.pres23 = {pref .. "yrn" .. "e", pref .. "urn" .. "e"} data.impsg = pref .. vowel .. "rn" data.pastsg = pref .. "earn" data.pastpl = pref .. "urn" data.pp = pref .. "ornen" return end local pref, suf = rmatch(data.inf, "^(.-)e(r" .. cons_c .. "+)an$") if pref then -- berstan "burst" < *brestanan (þū birst, hē birsteþ/birst, bærst, burston, borsten) -- þersċan "thrash, thresh" < *þreskanan (þū þirsċst, hē þirsċeþ, þærsċ, þursċon, þorsċen) data.pres23 = {pref .. "i" .. suf, pref .. "e" .. suf} data.impsg = pref .. "e" .. suf data.pastsg = pref .. "æ" .. suf data.pastpl = pref .. "u" .. suf data.pp = pref .. "o" .. suf .. "en" return end local pref, vowel = rmatch(data.inf, "^(.-)fr([ei])ġnan$") if pref then -- friġnan "ask", variant freġnan data.pres23 = {pref .. "friġne"} data.impsg = pref .. "fr" .. vowel .. "ġn" data.pastsg = pref .. "fræġn" data.pastpl = pref .. "frugn" data.pp = pref .. "frugnen" return end local pref = rmatch(data.inf, "^(.-)frīnan$") if pref then -- frīnan "ask" variant of friġnan data.pres23 = {pref .. "frīne", pref .. "frīn"} data.impsg = pref .. "frīn" data.pastsg = pref .. "frān" data.pastpl = pref .. "frūn" data.pp = pref .. "frūnen" return end local pref = rmatch(data.inf, "^(.-)fēolan$") if pref then -- fēolan "enter, penetrate" data.pres23 = {pref .. "filh"} data.impsg = pref .. "feolh" data.pastsg = pref .. "fealh" data.pastpl = {pref .. "fǣl", pref .. "fulg", pref .. "fūl"} data.pp = {pref .. "folgen", pref .. "fōlen"} return end end

strong_verbs["4"] = function(data) --WTF is palatal dipthongization. Anglian Bros Rise Up! --local pref, suf = rmatch(data.inf, "^(.-)ie(" .. cons_c .. ")an$") --if pref then --	-- sċieran "shear" --	data.pres23 = {pref .. "ie" .. suf .. "e", pref .. "ie" .. suf} --	data.impsg = pref .. "ie" .. suf --	-- no Verner alternation or depalatalization here --	data.pastsg = pref .. "ea" .. suf --	data.pastpl = pref .. "ēa" .. suf --	data.pp = pref .. "o" .. suf .. "en" --	return --end --Northhumbrian œ forms after w	local pref, suf = rmatch(data.inf, "^(.-)œ(" .. cons_c .. ")an$") if pref then -- beran "bear, carry", cwelan "die", brecan "break" (þū bricst/briċest), etc.		if suf == "r" or suf == "l" then data.pres23 = {pref .. "œ" .. suf .. "e"} else --For hwon? --data.pres23 = pref .. "i" .. palatalize_final_cons(suf) data.pres23 = {pref .. "œ" .. suf .. "e"} end data.prese = pref .. "œ" .. suf .. "e" data.impsg = pref .. "œ" .. suf -- no Verner alternation or depalatalization here data.pastsg = pref .. "æ" .. suf data.pastpl = pref .. "ǣ" .. suf data.pp = pref .. "o" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)e(" .. cons_c .. ")an$") if pref then -- beran "bear, carry", cwelan "die", brecan "break" (þū bricst/briċest), etc.		if suf == "r" or suf == "l" then data.pres23 = {pref .. "i" .. suf .. "e", pref .. "e" .. suf .. "e"} else --For hwon? --data.pres23 = pref .. "i" .. palatalize_final_cons(suf) data.pres23 = {pref .. "i" .. suf .. "e", pref .. "e" .. suf .. "e"} end data.impsg = pref .. "e" .. suf -- no Verner alternation or depalatalization here data.pastsg = pref .. "æ" .. suf data.pastpl = pref .. "ǣ" .. suf data.pp = pref .. "o" .. suf .. "en" return end -- Next two are irregular but occur with so many prefixes that we special-case them here. local pref = rmatch(data.inf, "^(.-)cuman$") if pref then -- cuman "come" data.pres23 = {pref .. "cyme", pref .. "cume"} data.impsg = pref .. "cum" data.pastsg = {pref .. "cwōm"} data.pastpl = data.pastsg data.pp = {pref .. "cumen", pref .. "cymen"} return end local pref = rmatch(data.inf, "^(.-)niman$") if pref then -- niman "take" data.pres23 = {pref .. "nime"} data.impsg = pref .. "nim" data.pastsg = pref .. "nōm" data.pastpl = data.pastsg data.pp = pref .. "numen" return end end

strong_verbs["5"] = function(data) --local pref, suf = rmatch(data.inf, "^(.-)ie(" .. cons_c .. ")an$") --if not pref then --	pref, suf = rmatch(data.inf, "^(.-ġ)[eiy](" .. cons_c .. ")an$") --end --if pref then --	-- ġiefan "give", forġietan "forget" --	data.pres23 = pref .. "ie" .. suf --	data.impsg = data.pres23 --	data.pastsg = pref .. "ea" .. suf --	data.pastpl = pref .. "ēa" .. suf --	data.pp = pref .. "e" .. suf .. "en" --	return --end --wœ forms from late northumbrian local pref, vowel, suf = rmatch(data.inf, "^(.-)(œ)(" .. cons_c .. ")an$") if suf == "g" then -- wegan "carry"; special-case data.pres23 = pref .. "iġe" data.impsg = pref .. "eġ" data.pastsg = pref .. "æġ" data.pastpl = {pref .. "ēg", pref .. "āg"} data.pp = pref .. "eġen" data.prese = pref .. "œ" .. suf .. "e" return elseif pref then -- metan "measure", sprecan "speak", cnedan "knead", wefan "weave", etc.		if vowel == "e" then data.pres23 = {pref .. "i" .. palatalize_final_cons(suf) .. "e", pref .. "œ" .. palatalize_final_cons(suf) .. "e"} else data.pres23 = {pref .. "i" .. palatalize_final_cons(suf) .. "e", pref .. "œ" .. palatalize_final_cons(suf) .. "e"} -- for back mutated forms data.prese = pref .. "œ" .. palatalize_final_cons(suf) .. "e" end data.impsg = pref .. "œ" .. suf if suf == "t" and not pref:find("m$") and not pref:find("ġ$") then -- etan "eat", fretan "devour", compounds; exclude metan "measure", -- ġetan (potential variant of ġietan) data.pastsg = pref .. "ē" .. suf else data.pastsg = pref .. "æ" .. suf end -- cweþan "say" -> cwǣdon, wesan "be" -> wǣron -- (but not ġenesan "be saved", lesan "collect, gather") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "ē" .. pastsuf if data.inf:find("drepan$") then -- Special-case drepan "strike, slay"; Wright lists brecan here with -- pp only brocen, but that just makes it a strong-4 verb and that's			-- where it's normally listed in dictionaries data.pp = {pref .. "epen", pref .. "open"} else data.pp = pref .. "e" .. pastsuf .. "en" end return end --Normal -e- forms local pref, vowel, suf = rmatch(data.inf, "^(.-)(e[o]?)(" .. cons_c .. ")an$") if suf == "g" then -- wegan "carry"; special-case data.pres23 = pref .. "i" data.impsg = pref .. "eġ" data.pastsg = pref .. "æġ" data.pastpl = {pref .. "ēg", pref .. "āg"} data.pp = pref .. "eġen" return elseif pref then -- metan "measure", sprecan "speak", cnedan "knead", wefan "weave", etc.		if vowel == "e" then data.pres23 = {pref .. "i" .. palatalize_final_cons(suf) .. "e", pref .. "e" .. palatalize_final_cons(suf) .. "e"} else data.pres23 = {pref .. "i" .. palatalize_final_cons(suf) .. "e", pref .. "eo" .. palatalize_final_cons(suf) .. "e"} -- for back mutated forms data.prese = pref .. "e" .. palatalize_final_cons(suf) .. "e" --ANGLIAN FIX add_ending_with_prefix({}, "pres_ptc", pref, "eo" .. palatalize_final_cons(suf) .. "en", "de") end data.impsg = pref .. "e" .. suf if suf == "t" and not pref:find("m$") and not pref:find("ġ$") then -- etan "eat", fretan "devour", compounds; exclude metan "measure", -- ġetan (potential variant of ġietan) data.pastsg = pref .. "ē" .. suf else data.pastsg = pref .. "æ" .. suf end -- cweþan "say" -> cwǣdon, wesan "be" -> wǣron -- (but not ġenesan "be saved", lesan "collect, gather") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "ē" .. pastsuf if data.inf:find("drepan$") then -- Special-case drepan "strike, slay"; Wright lists brecan here with -- pp only brocen, but that just makes it a strong-4 verb and that's			-- where it's normally listed in dictionaries data.pp = {pref .. "epen", pref .. "open"} else data.pp = pref .. "e" .. pastsuf .. "en" end return end local pref, last_cons = rmatch(data.inf, "^(.-)i([dt])%2an$") if pref then -- biddan "pray", sittan "sit" data.pres23 = pref .. "i" .. last_cons data.impsg = data.pres23 .. "e" data.pastsg = pref .. "æ" .. last_cons data.pastpl = pref .. "ē" .. last_cons data.pp = pref .. "e" .. last_cons .. "en" return end local pref = rmatch(data.inf, "^(.-)iċġe?an$") if pref then -- liċġan "lie down", þiċġan "receive", friċġan "ask, inquire" data.pres23 = pref .. "iġ" data.impsg = data.pres23 .. "e" if rfind(data.inf, "[þð]iċġe?an$") then data.pastsg = {pref .. "eah", pref .. "ah"} else data.pastsg = pref .. "æġ" end data.pastpl = {pref .. "ēg", pref .. "āg"} if data.inf:find("friċġe?an$") then data.pp = {pref .. "iġen", pref .. "ugen"} else data.pp = pref .. "eġen" end return end local pref = rmatch(data.inf, "^(.-)ēon$") if pref then -- sēon "see" < *sehwanan, ġefēon "rejoice" < *gafehanan, plēon "risk" < *plehanan data.presu = gsub(data.inf, "on$", "") data.pres23 = {pref .. "i", pref .. "e"} data.impsg = pref .. "eh" data.pastsg = pref .. "æh" if pref:find("s$") then -- sēon "see" data.pastpl = pref .. "ēg" --data.pp = pref .. "ewen" data.pp = pref .. "egen" else data.pastpl = pref .. "ēg" data.pp = pref .. "eġen" end return end end

strong_verbs["6"] = function(data) --Palatal dipthongization not expected --local pref, suf = rmatch(data.inf, "^(.-)ea(" .. cons_c .. "+)an$") --if pref then --	-- sċ(e)acan "shake", sċ(e)afan "shave, scrape" --	data.pres23 = pref .. "ea" .. suf --	data.impsg = {pref .. "a" .. suf, data.pres23} --	data.pastsg = {pref .. "ō" .. suf, pref .. "eō" .. suf} --	data.pastpl = data.pastsg --	data.pp = {pref .. "a" .. suf .. "en", pref .. "ea" .. suf .. "en"} --	return --end local pref, vowel, suf = rmatch(data.inf, "^(.-)(a)(" .. cons_c .. "+)an$") if not pref then -- stondan variant of standan, sponan variant of spanan EXPECTED FORMS pref, vowel, suf = rmatch(data.inf, "^(.-)(o)(n" .. cons_c .. "*)an$") end if not pref then -- wæsċan/wasċean/wæsċean variant of wasċan pref, vowel, suf = rmatch(data.inf, "^(.-)([aæ])(sċ" .. cons_c .. "*)e?an$") end if suf == "g" then -- gnagan "gnaw", dragan "draw" data.pres23 = {pref .. "æġe", pref .. "aġe"} data.impsg = pref .. "ag" data.pastsg = pref .. "ōg" data.pastpl = data.pastsg data.pp = {pref .. "æġen", pref .. "agen"} return elseif suf == "nd" and pref:find("st$") then -- standan/stondan "stand" data.pres23 = {pref .. "ende", pref .. vowel .. "nde"} data.impsg = pref .. vowel .. "nd" data.pastsg = pref .. "ōd" data.pastpl = data.pastsg data.pp = pref .. vowel .. "nden" return elseif suf == "n" and pref:find("sp$") then -- spanon/sponan "allure" data.pres23 = {pref .. "ene", pref .. vowel .. "ne"} data.impsg = pref .. vowel .. "n" data.pastsg = {pref .. "ōn", pref .. "ēon"} -- has alt class VII past data.pastpl = data.pastsg data.pp = pref .. vowel .. "nen" return elseif pref then -- faran "go", alan "grow", bacan "bake", hladan "lade", wasċan "wash", etc.		if suf == "r" or suf == "l" or suf == "sċ" then data.pres23 = {pref .. "æ" .. suf .. "e", pref .. "æ" .. suf} else data.pres23 = pref .. "æ" .. palatalize_final_cons(suf) end data.impsg = pref .. "a" .. suf data.pastsg = pref .. "ō" .. suf -- Apparently no Verner variation here data.pastpl = data.pastsg data.pp = {pref .. "æ" .. suf .. "en", pref .. "a" .. suf .. "en"} return end local pref = rmatch(data.inf, "^(.-)ēan$") if pref then -- slēan "strike", flēan "flay", lēan "blame", þwēan "wash" data.pres23 = {pref .. "e", pref .. "i"} data.impsg = pref .. "eah" data.pastsg = pref .. "ōg" -- also slōh etc., which will get automatically added data.pastpl = data.pastsg data.pp = {pref .. "æġen", pref .. "agen", pref .. "eġen"} return end local pref, last_cons = rmatch(data.inf, "^(.-)i([dt])%2an$") -- All the j-present verbs have to be handled individually as each has -- idiosyncrasies. local pref, last_cons = rmatch(data.inf, "^(.-)hebban$") if pref then -- hebban "raise" data.pres23 = pref .. "hefe" data.impsg = data.pres23 data.pastsg = pref .. "hōf" data.pastpl = data.pastsg data.pp = {pref .. "hæfen", pref .. "hafen", pref .. "hefen"} return end local pref, vowel = rmatch(data.inf, "^(.-)hl([eiy]?e?)hhan$") if pref then -- hliehhan "laugh" data.pres23 = pref .. "hl" .. vowel .. "he" data.impsg = data.pres23 data.pastsg = pref .. "hlōg" data.pastpl = data.pastsg data.pp = pref .. "hlæġen" return end local pref, cons = rmatch(data.inf, "^(.-)sċe([þð])%2an$") if pref then -- sċeþþan "injure" (for some reason, expected #sċieþþan doesn't occur) data.pres23 = pref .. "sċe" .. cons .. "e" data.impsg = data.pres23 data.pastsg = "sċōd" data.pastpl = data.pastsg data.pp = "sċeaþen" return end local pref, vowel = rmatch(data.inf, "^(.-)sċ([iy]?e?)ppan$") if pref then -- sċieppan "create" data.pres23 = pref .. "sċ" .. vowel .. "pe" data.impsg = data.pres23 data.pastsg = {pref .. "sċōp", pref .. "sċeōp"} data.pastpl = data.pastsg data.pp = {pref .. "sċeapen", pref .. "sċapen"} return end local pref, vowel = rmatch(data.inf, "^(.-)st([æe])ppan$") if pref then -- stæppan "step, go" data.pres23 = pref .. "st" .. vowel .. "pe" data.impsg = data.pres23 data.pastsg = pref .. "stōp" data.pastpl = data.pastsg data.pp = {pref .. "stæpen", pref .. "stapen"} return end local pref = rmatch(data.inf, "^(.-s[wƿ])erian$") if pref then -- swerian "swear" data.pres23 = pref .. "ere" data.impsg = data.pres23 data.pastsg = pref .. "ōr" data.pastpl = data.pastsg data.pp = pref .. "oren" -- on the analogy of class IV verbs like beran return end end

strong_verbs["7"] = function(data) -- Type (7a) verbs local pref = rmatch(data.inf, "^(.-)hātan$") if pref then -- hātan "call" data.pres23 = {pref .. "hǣte", pref .. "hāte"} data.impsg = pref .. "hāt" data.pastsg = {pref .. "hēht"} -- FIXME, indicate latter as poetic; POETIC? NA BRUV THIS IS ANGLIAN WA LA WA did Anglian have (pref .. "hēt",)? data.pastpl = data.pastsg data.pp = pref .. "hāten" return end local pref = rmatch(data.inf, "^(.-)lācan$") if pref then -- lācan "play" data.pres23 = {pref .. "lǣċe", pref .. "lāċe"} data.impsg = pref .. "lāc" data.pastsg = {pref .. "lēc", pref .. "leolc"} -- FIXME, indicate latter as poetic no idea on this one data.pastpl = data.pastsg data.pp = pref .. "lācen" return end local pref, vowel = rmatch(data.inf, "^(.-)sċ(e?ā)dan$") if not pref then pref, vowel = rmatch(data.inf, "^(.-)sċ(ēa)dan$") end if pref then -- sċ(e)ādan or sċēadan "separate" data.pres23 = {pref .. "sċāde"} data.impsg = pref .. "sċ" .. vowel .. "d" data.pastsg = {pref .. "sċēd", pref .. "sċēad"} data.pastpl = data.pastsg data.pp = pref .. "sċ" .. vowel .. "den" return end local pref, vowel = rmatch(data.inf, "^(.-)lǣtan$") if pref then -- lǣtan "let, allow" data.pres23 = pref .. "lǣte" data.impsg = pref .. "lǣt" data.pastsg = {pref .. "lēt", pref .. "leort"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "lǣten" return end local pref, vowel = rmatch(data.inf, "^(.-)ondrǣdan$") if pref then -- ondrǣdan "dread, fear" data.pres23 = pref .. "ondrǣde" data.impsg = pref .. "ondrǣd" data.pastsg = {pref .. "ondrēd", pref .. "ondreord"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg make_weak_past(data.extraforms, pref, "ondrǣdd") data.pp = pref .. "ondrǣden" return end local pref, vowel = rmatch(data.inf, "^(.-)rǣdan$") if pref then -- rǣdan "advise" data.pres23 = pref .. "rǣde" data.impsg = pref .. "rǣd" -- NOTE: Also (mostly) has weak past rǣdde and pp (ġe)rǣdd; can be handled -- by declaring the verb as both weak 1b and strong 7. data.pastsg = {pref .. "rēd", pref .. "reord"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "rǣden" return end local pref, vowel = rmatch(data.inf, "^(.-)slǣpan$") if pref then -- slǣpan "sleep" data.pres23 = pref .. "slǣpe" data.impsg = pref .. "slǣp" data.pastsg = pref .. "slēp" data.pastpl = data.pastsg make_weak_past(data.extraforms, pref, "slǣpt") data.pp = pref .. "slǣpen" return end local pref, main = rmatch(data.inf, "^(.-)(gr[ǣē]t)an$") if pref then -- grǣtan "wail" data.pres23 = {pref .. main .. "e"} data.impsg = pref .. main data.pastsg = pref .. "grēt" data.pastpl = data.pastsg data.pp = pref .. main .. "en" return end local pref = rmatch(data.inf, "^(.-)blandan$") if pref then -- blandan "mix" data.pres23 = {pref .. "blende", pref .. "blande"} data.impsg = pref .. "bland" data.pastsg = pref .. "blēnd" data.pastpl = data.pastsg data.pp = pref .. "blanden" return end local pref = rmatch(data.inf, "^(.-)ōn$") if pref then -- fōn "seize", hōn "hang" FIXME ANGLIAN --data.pres23 = pref .. "ēh" data.presu = "NIL" data.pres23 = {pref .. "œ̄"} data.impsg = pref .. "ōh" data.pastsg = pref .. "ēng" data.pastpl = data.pastsg data.pp = {pref .. "angen"} return end -- Type (7b) verbs local pref = rmatch(data.inf, "^(.-)annan$") if pref then -- bannan "summon", spannan "join, clasp" data.pres23 = {pref .. "enne", pref .. "anne"} data.impsg = pref .. "ann" data.pastsg = {pref .. "ēonn", pref .. "ēon"} data.pastpl = data.pastsg data.pp = pref .. "annen" return end local pref = rmatch(data.inf, "^(.-)gangan$") if pref then -- gangan "go" data.pres23 = {pref .. "geng", pref .. "gange"} data.impsg = pref .. "gang" data.pastsg = {pref .. "ġēng", pref .. "ġīeng"} data.pastpl = data.pastsg data.pp = pref .. "gangen" return end local pref, vowel, l, suf = rmatch(data.inf, "^(.-)([e]?a)([l]?)(" .. cons_c .. "+)an$") if pref then -- fealdan "fold", feallan "fall", healdan "hold", stealdan "possess", -- wealcan "roll", wealdan "rule", weallan "boil", weaxan "grow" if l == "l" then data.pres23 = {pref .. "æ" .. l .. palatalize_final_cons(suf) .. "e", pref .. vowel .. l .. palatalize_final_cons(suf) .. "e"} else data.pres23 = {pref .. "e" .. l .. palatalize_final_cons(suf) .. "e", pref .. vowel .. l .. palatalize_final_cons(suf) .. "e"} end data.impsg = pref .. "ea" .. l .. suf data.pastsg = pref .. "ēo" .. l .. suf data.pastpl = data.pastsg data.pp = pref .. "ea" .. l .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ā(" .. cons_c .. "+)an$") if pref then -- blāwan "blow", cnāwan "know", crāwan "crow", māwan "mow", sāwan "sow", -- swāpan "sweep", þrāwan "turn, twist", wāwan "blow" data.pres23 = {pref .. "ǣ" .. palatalize_final_cons(suf) .. "e", pref .. "ā" .. palatalize_final_cons(suf) .. "e"} data.impsg = pref .. "ā" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ā" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ēa(" .. cons_c .. "+)an$") if pref then -- bēatan "beat", āhnēapan "pluck off", hēawan "hew", hlēapan "leap" data.pres23 = {pref .. "ē" .. palatalize_final_cons(suf) .. "e", pref .. "ēa" .. palatalize_final_cons(suf) .. "e"} data.impsg = pref .. "ēa" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ēa" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ō(" .. cons_c .. "+)an$") if pref then if suf == "g" and pref:find("sw$") then -- swōgan "sound" data.pres23 = {pref .. "œ̄ġe", pref .. "ō" .. "ġ" .. "e"} data.impsg = pref .. "ōg" data.pastsg = {} -- no preterite data.pastpl = {} data.pp = pref .. "ōgen" return end if suf == "c" and pref:find("fl$") or suf == "t" and rfind(pref, "[wƿ]r$") then -- flōcan "clap, strike", wrōtan "root up" data.pres23 = {pref .. "œ̄" .. palatalize_final_cons(suf).."e", pref .."ō" .. palatalize_final_cons(suf).."e"} data.impsg = pref .. "ō" .. suf data.pastsg = {} -- no preterite data.pastpl = {} data.pp = pref .. "ō" .. suf .. "en" return end -- blōtan "sacrifice", blōwan "bloom, blossom", hrōpan "shout", -- hwōpan "threaten", flōwan "flow", grōwan "grow", hlōwan "low, bellow", -- spōwan "succeed"; also rōwan "row", which has alt pret pl rēon data.pres23 = {pref .. "œ̄" .. palatalize_final_cons(suf) .. "e", pref .. "ō" .. palatalize_final_cons(suf) .. "e"} data.impsg = pref .. "ō" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ō" .. suf .. "en" if (suf == "w" or suf == "ƿ") and pref:find("r$") and not pref:find("gr$") then -- rōwan "row" data.extraforms["pl_past_indc"] = {pref .. "ēon"} end return end local pref = rmatch(data.inf, "^(.-[wƿ])ēpan$") if pref then -- wēpan "weep"; j-present data.pres23 = pref .. "ēpe" data.impsg = pref .. "ēp" data.pastsg = pref .. "ēop" data.pastpl = data.pastsg data.pp = pref .. "ōpen" return end local pref = rmatch(data.inf, "^(.-[wƿ])œ̄pan$") if pref then -- wēpan "weep"; j-present data.pres23 = {pref .. "œ̄pe", pref .. "ēpe"} data.impsg = pref .. "œ̄p" data.pastsg = pref .. "ēop" data.pastpl = data.pastsg data.pp = pref .. "ōpen" return end end

local weak_verbs = {}

weak_verbs["1a"] = function(data) local pref = rmatch(data.inf, "^(.-)ian$") if pref then data.pres23 = pref .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end local pref, last_cons = rmatch(data.inf, "^(.-)([dt])%2an$") if pref then data.pres23 = pref .. last_cons data.impsg = data.pres23 .. "e" data.past = data.pres23 .. last_cons data.pp = {data.pres23 .. "ed", data.past, data.pres23} return end local pref = rmatch(data.inf, "^(.-)ċġe?an$") if pref then data.pres23 = pref .. "ġ" data.impsg = data.pres23 .. "e" data.past = data.pres23 .. "d" data.pp = {data.pres23 .. "ed", data.past} return end local pref = rmatch(data.inf, "^(.-)bban$") if pref then -- swebban etc. data.pres23 = pref .. "fe" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end local pref, last_cons = rmatch(data.inf, "^(.-)(.)%2an$") if not pref then pref, last_cons = rmatch(data.inf, "^(.-)(ċ)ċean$") end if pref then data.pres23 = pref .. last_cons .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end end

weak_verbs["1b"] = function(data) local pref, cons = rmatch(data.inf, "^(.-[rl])([wƿ])an$") if pref then -- ġierwan, hierwan, nierwan, sierwan, smierwan, wielwan (?) data.pres23 = pref .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = {pref .. cons .. "ed", pref .. "ed"} return end local pref = rmatch(data.inf, "^(.-" .. cons_c .. "[rlmnwƿ])an$") if pref and not pref:find("[rl][mn]$") and not pref:find("rl$") and not rfind(pref, "(" .. cons_c .. ")%1$") then -- hyngran, dīeglan, bīecnan, þrysman, etc. data.pres23 = pref .. "e" data.impsg = data.pres23 local vowel = rmatch(pref, "^.-(" .. vowel_c .. "+)" .. single_cons_c .. "[rlmnwƿ]$") if vowel and not ends_in_long_vowel(vowel) then -- efnan, bytlan, eġlan, ræfnan, seġlan, þrysman; form without -ed is older data.past = {pref .. "d", pref .. "ed"} else -- dīeglan, forglendran, wrixlan, frēfran, timbran, symblan, etc. data.past = pref .. "ed" end data.pp = pref .. "ed" return end if data.inf:find("ēan$") or rfind(data.inf, vowel_c .. "n$") and not data.inf:find("an$") then -- contracted verb, e.g. hēan, þēon, tȳn, rȳn, þȳn -- FIXME, verify in Campbell that all of the following are correct data.pres23 = data.presa data.impsg = data.presa data.past = data.presa .. "d" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)an$") if pref then -- ANGLIAN EDIT Pres 23 ONLY takes the -e ending --data.pres23 = {pref .. "e", pref} data.pres23 = {pref .. "e"} data.impsg = pref data.past = construct_cons_stem_ending(pref, "d") data.pp = pref .. "ed" return end end

weak_verbs["1"] = function(data) local weaktype if data.inf:find("ian$") then weaktype = "1a" elseif rfind(data.inf, "(" .. cons_c .. ")%1an$") or data.inf:find("ċċean$") or data.inf:find("cgan$") or data.inf:find("ċġan$") then local prev = rmatch(data.inf, "^(.-)....$") if rfind(prev, vowel_c .. "$") and not ends_in_long_vowel(prev) then weaktype = "1a" else weaktype = "1b" end else weaktype = "1b" end weak_verbs[weaktype](data) end

weak_verbs["2"] = function(data) -- lufian local pref, suf = rmatch(data.inf, "^(.-)(ian)$") if not pref then -- lufiġan, lufeġan, lufiġean, lufeġean (alternative spellings) pref, suf = rmatch(data.inf, "^(.-)([ei]ġe?an)$") end if pref then data.pres23 = pref .. "a" data.presenfin = data.prese data.presefin = suf == "ian" and pref .. "iġe" or data.presenfin data.impsg = data.pres23 data.past = {pref .. "ad"} data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)ġe?an$") if pref then -- twēoġan, smēaġ(e)an data.pres23 = pref data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end end

weak_verbs["3"] = function(data) local pref = rmatch(data.inf, "^(.-)abban$") if pref then data.presu = {pref .. "abb", pref .. "af"} data.prese = pref .. "æbbe" data.pres23 = pref .. "afa" data.impsg = pref .. "afa" data.past = pref .. "æfd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)libban$") if pref then -- libban, compounds data.pres23 = pref .. "leofa" data.impsg = data.pres23 data.past = pref .. "lifd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)seċġe?an$") if pref then -- seċġan, compounds data.pres23 = pref .. "saga" data.impsg = pref .. "sæġe" data.past = pref .. "sæġd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)hyċġe?an$") if pref then -- hyċġan, compounds data.pres23 = pref .. "hyġ" data.impsg = pref .. "hyġe" data.past = pref .. "hogd" data.pp = data.past return end end

local function make_irregular_non_past(args, inf, pref, pres1, pres2, pres3, prespl,	presp, subj, impsg, imppl, pp, with_ge) add_ending(args, "infinitive", inf, "") add_ending_with_prefix(args, "infinitive2", pref, presp, "ne") add_ending_with_prefix(args, "1sg_pres_indc", pref, pres1, "") add_ending_with_prefix(args, "2sg_pres_indc", pref, pres2, "") add_ending_with_prefix(args, "3sg_pres_indc", pref, pres3, "") add_ending_with_prefix(args, "pl_pres_indc", pref, prespl, "") add_ending_with_prefix(args, "sg_pres_subj", pref, subj, "") add_ending_with_prefix(args, "pl_pres_subj", pref, subj, "n") add_ending_with_prefix(args, "sg_impr", pref, impsg, "") add_ending_with_prefix(args, "pl_impr", pref, imppl, "") add_ending_with_prefix(args, "pres_ptc", pref, presp, "de") if with_ge then add_ending_with_prefix(args, "past_ptc", pref, pp, "", construct_optional_ge_stem_ending) else add_ending_with_prefix(args, "past_ptc", pref, pp, "") end end

-- Construct all preterite-present forms. Each of the arguments can be a single string or list. -- If a given argument is missing, supply an empty list {}. -- Arguments: -- INF: Infinitive. -- PREF: Prefix to add to all forms other than the infinitive. -- PRES13: 1st/3rd singular present form. -- PRES2: 2nd singular present form. -- PRESPL: Plural present form. -- PRESP: Present participle stem (up through -en, missing final -de; also used to construct --       second infinitive by adding -ne) -- SUBJ: Singular present subjunctive form (also used to construct plural subjunctive by adding -n) -- IMPSG: 2nd singular imperative form. -- IMPPL: 2nd plural imperative form. -- PAST: Stem of past tense. -- PP: Past participle. local function make_preterite_present_forms(inf, pref, pres13, pres2, prespl,	presp, subj, impsg, imppl, past, pp, with_ge) local args = {} make_irregular_non_past(args, inf, pref, pres13, pres2, pres13, prespl, presp, subj,		impsg, imppl, pp, with_ge) make_weak_past(args, pref, past) return args end

local function make_preterite_present(inf, with_ge) local pref, vowel = rmatch(inf, "^(.-[wƿn])([iy])[oe]?tan$") if pref then return make_preterite_present_forms(			inf, pref, "āt", "āst", vowel .. "ton", vowel .. "ten",			vowel .. "te", vowel .. "te", vowel .. "taþ", {vowel .. "ss", vowel .. "st"},			vowel .. "ten", with_ge) end local pref = rmatch(inf, "^(.-)dugan$") if pref then return make_preterite_present_forms(			inf, pref, "dēag", "dēaht", {"dugun", "dugon"}, "dugen", "dyġe", "dyġe", "dugaþ", "doht", {}, with_ge) end local pref = rmatch(inf, "^(.-)cunnan$") if pref then return make_preterite_present_forms(			inf, pref, "cann", "canst", {"cunnun", "cunnon"}, "cunnen", "cunne",			"cunne", "cunnaþ", "cūþ", "cunnen", with_ge) end local pref = rmatch(inf, "^(.-)unnan$") if pref then return make_preterite_present_forms(			inf, pref, "ann", "anst", {"unnun", "unnon"}, "unnen", "unne", "unne", "unnaþ", "ūþ", "unnen", with_ge) end local pref = rmatch(inf, "^(.-[þð])urfan$") if pref then return make_preterite_present_forms(			inf, pref, "earf", "earft", {"urfun", "urfon"}, "earfen", "yrfe", "yrfe", "urfaþ", "orft", {}, with_ge) end local pref = rmatch(inf, "^(.-)durran$") if pref then return make_preterite_present_forms(			inf, pref, "dearr", "dearst", {"durrun", "durron"}, {}, "dyrre", "dyrre", "durfaþ",			"dorst", {}, with_ge) end local pref = rmatch(inf, "^(.-)sċulan$") if not pref then pref = rmatch(inf, "^(.-)sċeolan$") end if pref then return make_preterite_present_forms(			inf, pref, "sċeal", "sċealt", {"sċulun", "sċulon"}, {}, "sċyle",			{}, {}, "sċold", {}, with_ge) end local pref = rmatch(inf, "^(.-)munan$") if pref then return make_preterite_present_forms(			inf, pref, "man", "manst", {"munun", "munon"}, "munen", "myne",			{"mun", "myne"}, "munaþ", "mund", "munen", with_ge) end local pref = rmatch(inf, "^(.-)magan$") if pref then return make_preterite_present_forms(			inf, pref, "mæġ", "meaht", {"magun", "magon"}, "magen", "mæġe", {}, {},			{"meaht"}, {}, with_ge) end local pref = rmatch(inf, "^(.-)nugan$") if pref then return make_preterite_present_forms(			inf, pref, "neah", {}, {"nugun", "nugon"}, {}, "nuge", {}, {}, "noht", {}, with_ge) end local pref = rmatch(inf, "^(.-)mōtan$") if pref then return make_preterite_present_forms(			inf, pref, "mōt", "mōst", {"mōtun", "mōton"}, {}, "mōte", {}, {}, "mōst", {}, with_ge) end local pref = rmatch(inf, "^(.-)āgan$") if pref then return make_preterite_present_forms(			inf, pref, "āh", "āhst", {"āgun", "āgon"}, "āgen", "āge", "āge", "āgaþ", "āht", "āgen", with_ge) end error("Unrecognized preterite-present verb: " .. inf) end

local function make_irregular(inf, with_ge) local args = {} local pref, cons = rmatch(inf, "^(.-)([wƿ])esan$") if pref then make_irregular_non_past(args, inf, pref, "eom", "earð", "is", {"sindun", "earun"},			cons .. "esen", {"sīe", "seo"}, cons .. "es", cons .. "esaþ", {}, with_ge) make_strong_past(args, pref, cons .. "æs", cons .. "ǣr") return args end local pref, cons = rmatch(inf, "^(.-)([wƿ])eosan$") if pref then make_irregular_non_past(args, inf, pref, "eom", "earð", "is", {"sindun", "earun"},			cons .. "esen", {"sīe", "seo"}, cons .. "es", cons .. "eosaþ", {}, with_ge) make_strong_past(args, pref, cons .. "æs", cons .. "ǣr") return args end local pref = rmatch(inf, "^(.-)nesan$") if pref then make_irregular_non_past(args, inf, pref, "neom", "nearð", "nis", {"ne sindon", "ne sindun", "nearon", "nearun"},			"nesen", "ne sīe", "nes", "nesaþ", {}, with_ge) make_strong_past(args, pref, "næs", "nǣr") return args end local pref = rmatch(inf, "^(.-)neosan$") if pref then make_irregular_non_past(args, inf, pref, "neom", "nearð", "nis", {"ne sindon", "ne sindun", "nearon", "nearun"},			"nesen", "ne sīe", "nes", "neosaþ", {}, with_ge) make_strong_past(args, pref, "næs", "nǣr") return args end local pref, vowel = rmatch(inf, "^(.-)b([īē]o)n$") if pref then make_irregular_non_past(args, inf, pref, "b" .. vowel .. "m", "bist", "biþ", "b" .. vowel .. "þ",			"b" .. vowel .. "n", "b" .. vowel, "b" .. vowel, "b" .. vowel .. "þ", "b" .. vowel .. "n", with_ge) return args end local pref = rmatch(inf, "^(.-)dōn$") if pref then make_irregular_non_past(args, inf, pref, "dōm", "dēst", "dēþ", "dōþ", "dōn",			"dō", "dō", "dōþ", "dōn", with_ge) make_weak_past(args, pref, "dyd") return args end local pref = rmatch(inf, "^(.-)gān$") if pref then make_irregular_non_past(args, inf, pref, "gā", "gǣst", "gǣþ", "gāþ", "gān",			"gā", "gā", "gāþ", "gān", with_ge) make_weak_past(args, pref, "ēod") return args end local pref = rmatch(inf, "^(.-[wƿ])illan$") if pref then make_irregular_non_past(args, inf, pref, "ille", "ilt", "ile", "illaþ", "illen",			"ille", {}, {}, {}, with_ge) make_weak_past(args, pref, "old") return args end local pref, vowel = rmatch(inf, "^(.-)n([eiy])llan$") if pref then make_irregular_non_past(args, inf, pref, "n" .. vowel .. "lle", "n" .. vowel .. "lt",			"n" .. vowel .. "le", "n" .. vowel .. "llaþ",			"n" .. vowel .. "llen", "n" .. vowel .. "lle",			{}, {}, {}, with_ge) make_weak_past(args, pref, "nold") return args end error("Unrecognized irregular verb: " .. inf) end

local function set_categories(typ, class) local cats = {} local classtext = class and "class " .. class .. " " or "" if typ == "strong" then table.insert(cats, "Old English " .. classtext .. "strong verbs") elseif typ == "weak" then table.insert(cats, "Old English " .. classtext .. "weak verbs") elseif typ == "pretpres" then table.insert(cats, "Old English preterite-present verbs") elseif typ == "irreg" or typ == "anomalous" then table.insert(cats, "Old English irregular verbs") elseif typ then error("Unrecognized verb type: " .. typ) end return cats end

function export.show(frame) local parent_args = frame:getParent.args local params = { [1] = {required = true, list = true, default = "beran"}, }	for slot, _ in pairs(slots_and_accel) do		params[slot] = {} end local args = require("Module:parameters").process(parent_args, params) local allforms local allcats = {} if #args[1] > 1 then table.insert(allcats, "Old English verbs with multiple conjugations") end for _, infspec in ipairs(args[1]) do		local inf, spec = rmatch(infspec, "^(.-)<(.*)>$") if not inf then error("Verb spec should look like e.g. 'beran' or 'dēman': " .. infspec) end local specs = rsplit(spec, "/") local class = specs[1] local verner = rfind(class, "v") class = gsub(class, "v", "") local presa = gsub(inf, "n$", "") local presu = gsub(inf, "an$", "") data = { inf = inf, presa = presa, prese = presa:find("ēa$") and presa or gsub(presa, "e?a$", "e"), verner = verner, with_ge = not begins_with_verbal_prefix(inf), extraforms = {}, presu = presu }		local typ if class:find("^s") then typ = "strong" class = gsub(class, "^s", "") if strong_verbs[class] then strong_verbs[class](data) else error("Unrecognized strong class: " .. class) end elseif class:find("^w") then typ = "weak" class = gsub(class, "^w", "") if weak_verbs[class] then weak_verbs[class](data) data.presenfin = data.presenfin or data.prese data.presefin = data.presefin or data.prese else error("Unrecognized weak class: " .. class) end elseif class == "pp" then typ = "pretpres" elseif class == "i" then typ = "irreg" else error("Unrecognized verb class: " .. class) end

local overrides = {} for i, spec in ipairs(specs) do			if i > 1 then local parts = rsplit(spec, ":") if #parts ~= 2 then error("Verb modified spec must be of the form 'KEY:VALUE': " .. spec) end local k = parts[1] local v = parts[2] local splitv = rsplit(v, ", *") local unrecognized = false if slots_and_accel[k] then overrides[k] = splitv elseif k == "ge" then data.with_ge = require("Module:yesno")(v) elseif k == "impers" then data.impers = require("Module:yesno")(v) elseif typ == "weak" or typ == "strong" then if k == "pres" then data.presa = splitv data.prese = splitv data.presefin = splitv data.presenfin = splitv data.pres23 = splitv data.impsg = splitv elseif k == "pres1456" then data.presa = splitv data.prese = splitv data.presefin = splitv data.presenfin = splitv elseif k == "pres23" then data.pres23 = splitv elseif k == "presa" then data.presa = splitv elseif k == "prese" then data.prese = splitv data.presefin = splitv data.presenfin = splitv elseif typ == "weak" and k == "presefin" then data.presefin = splitv elseif typ == "weak" and k == "presenfin" then data.presenfin = splitv elseif k == "past" then data.past = splitv data.pastsg = splitv data.pastpl = splitv elseif typ == "strong" and k == "pastsg" then data.pastsg = splitv elseif typ == "strong" and k == "pastpl" then data.pastpl = splitv elseif k == "impsg" then data.impsg = splitv elseif k == "pp" then data.pp = splitv elseif typ == "weak" and k == "papp" then data.past = splitv data.pp = splitv else unrecognized = true end else unrecognized = true end if unrecognized then error("Unrecognized spec key '" .. k .. "' (value '" .. v .. "')")				end end end

if typ == "weak" or typ == "strong" then local missing_fields = {} local fields_to_check = typ == "weak" and {"presa", "presefin", "presenfin", "pres23", "impsg", "past", "pp"} or				{"presa", "prese", "pres23", "impsg", "pastsg", "pastpl", "pp"} for _, field in ipairs(fields_to_check) do				if not data[field] then table.insert(missing_fields, field) end end if #missing_fields > 0 then error("Required spec(s) " .. table.concat(missing_fields, ",") ..					" missing, i.e. the form of the infinitive '" .. inf ..					"' was not recognized as a " .. typ .. " class-" .. class .. " verb and the " ..					"overriding specs weren't (all) supplied") end end local forms if typ == "strong" then forms = make_strong(data.presa, data.prese, data.pres23, data.impsg, data.pastsg,				data.pastpl, data.pp, data.with_ge, data.presu) elseif typ == "weak" then forms = make_weak(data.presa, data.presefin, data.presenfin,				data.pres23, data.impsg, data.past, data.pp, data.with_ge, data.presu) elseif typ == "pretpres" then forms = make_preterite_present(inf, data.with_ge) elseif typ == "irreg" then forms = make_irregular(inf, data.with_ge) else error("Internal error: Unrecognized verb type: " .. typ) end for k, v in pairs(data.extraforms) do			add_form_to_slot(forms, k, v)		end for k, v in pairs(overrides) do			forms[k] = v		end if data.impers then -- e.g. mǣtan; clear personal non-3sg forms forms["1sg_pres_indc"] = {} forms["2sg_pres_indc"] = {} forms["pl_pres_indc"] = {} forms["pl_pres_subj"] = {} forms["1sg_past_indc"] = {} forms["2sg_past_indc"] = {} forms["pl_past_indc"] = {} forms["pl_past_subj"] = {} forms["sg_impr"] = {} forms["pl_impr"] = {} end

class = rsub(class, "[a-z]", "") if class == "" then class = nil end if not allforms then allforms = forms allforms["type"] = typ allforms["class"] = class else for k, v in pairs(forms) do				for _, form in ipairs(v) do					m_table.insertIfNot(allforms[k], form) end end end local cats = set_categories(typ, class) for _, cat in ipairs(cats) do			m_table.insertIfNot(allcats, cat) end end local table = make_table(allforms) return table .. m_utilities.format_categories(allcats, lang) end

return export

title: Module:ang-verb-anglian


text:
Tjoof

Etymology
From, from.

Noun

 * 1) thief

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

title: Tjoof


text: Tjove

title: Tjove


text:
𐡍

Letter

 * 1)  A letter of the Imperial Aramaic alphabet, named, transliterated as Latin.

title: 𐡍


text:
kamforo

Etymology
From, from , ultimately of origin.

Noun

 * 1) camphor

title: kamforo


text: Category:Terms spelled with ㌠ by language


text: 鳩居鵲巢

title: 鳩居鵲巢


text: Category:csb:Cattle

title: Category:csb:Cattle


text: Fordwich

title: Fordwich


text:
𐡌

Letter

 * 1)  A letter of the Imperial Aramaic alphabet, named, transliterated as Latin.

title: 𐡌


text:
Taos Pueblo

Etymology
.

title: Taos Pueblo


text:
𐡋

Letter

 * 1)  A letter of the Imperial Aramaic alphabet, named, transliterated as Latin.

title: 𐡋


text:
Template:R:tpw:Cosmographie Universelle/documentation

Parameters

 * 1
 * Chapter.

 * 2
 * Page.

 * 3
 * Original text.

 * 4
 * Normalization.


text:
Talk:gays

archaic french
(dunno old or middle or both) plural not just of gay but also gayf? Arlo Barnes (talk) 00:09, 5 July 2024 (UTC)

title: Talk:gays


text: Däive

title: Däive


text:
Template:R:tpw:France antarctique/documentation

Parameters

 * 1
 * Chapter.

 * 2
 * Page.

 * 3
 * Original text.

 * 4
 * Normalization.


text:
tônus muscular

Noun

 * 1) muscle tone

title: tônus muscular


text:
𐡔

Letter

 * 1)  A letter of the Imperial Aramaic alphabet, named, transliterated as Latin.

title: 𐡔


text:
विचारप

Etymology
From. Cognate to 🇨🇬.

Verb

 * 1) to ask

title: विचारप


text:
User talk:MargaretRDonald

Hoping to be able to contribute in this space MargaretRDonald (talk) 00:16, 5 July 2024 (UTC)

title: User talk:MargaretRDonald


text: Category:zh:Creationism

title: Category:zh:Creationism


text:
User talk:Femtocoulomb

Hey there Femtocoulomb, welcome again! I notice you created pages for forms of. However, form-of entries shouldn't be created unless they're citeable (i.e. three citations from independent authors, spanning at least a year). The main form of the verb is barely attestable, so the forms in the header are really just my best guesses based on what's out there. That doesn't mean they should be created. I will mark those pages with, if that's alright. Andrew Sheedy (talk) 00:21, 5 July 2024 (UTC)

title: User talk:Femtocoulomb


text:
𐡕

Letter

 * 1)  A letter of the Imperial Aramaic alphabet, named, transliterated as Latin.

title: 𐡕


text: Category:de:Conspiracy theories

title: Category:de:Conspiracy theories


text:
防曬乳

Noun

 * 1) sunscreen

title: 防曬乳


text: 防晒乳

title: 防晒乳


text: 立浪草

title: 立浪草


text:
Reconstruction:Proto-Indo-European/bʰoydʰéh₂

Noun

 * 1) pledge, oath, swear
 * 2) contract
 * 1) contract


text:
Talk:洗髮露

Synonyms for Everyday Items
I feel like everyday items like shampoo have so many Chinese terms existing for them. Just wondering if you have any opinions on how to disambiguate their usages. Mar vin kaiser (talk) 00:42, 5 July 2024 (UTC)

 * I'm not entirely sure. — justin(r)leung { (t...) 00:49, 5 July 2024 (UTC)
 * 洗髮劑 from 兩岸辭典: 頭髮的清潔劑. 能去除灰塵、油脂、頭皮屑等髒物，包括液態的，如「洗髮水」、「洗髮精」、「洗髮液」；乳液狀的，如「洗髮乳」；膏乳狀的，如「洗髮膏」；粉狀的，如「洗髮粉」等. — justin(r)leung { (t...) 00:50, 5 July 2024 (UTC)

title: Talk:洗髮露


text:
مقبولیت

Etymology
, from. Equivalent to.

Noun

 * 1) popularity
 * 2) agreeableness, acceptableness
 * 3) orthodoxy

title: مقبولیت


text: membacai

title: membacai


text: dibacai

title: dibacai


text:
Stinky

Etymology
. Related to 🇨🇬

title: Stinky


text:
Template:R:tpw:Anchieta Cartas/documentation

Parameters

 * 1
 * The number of the poem, in Roman numerals.

 * 2
 * Page.

 * 3
 * Original text.

 * 4
 * Normalization.


text: Hochwässer

title: Hochwässer


text: Category:Japanese terms historically spelled with ヂ


text: Jahrhunderthochwässer

title: Jahrhunderthochwässer


text:
fjärr-

Etymology
From. Compare 🇨🇬.

Prefix

 * 1) having to do with a (far) removed location (or occurring over a (long) distance, thinking about it differently); remote, long-distance, tele-, etc.

title: fjärr-


text:
St Nicholas at Wade

Etymology
"Wade" is from.

title: St Nicholas at Wade


text:
Jemez Pueblo

Etymology
.

Translations

 * Jemez: Walatowa

title: Jemez Pueblo


text:
petushit

Etymology
, literally “petukh-ing”. Originally from prison slang. Compare 🇨🇬, another term for prison rape.

Verb

 * 1)  The use of male-on-male rape in the Russian armed forces or prison system to establish and enforce an informal hierarchy or pecking order.

title: petushit


text:
Reconstruction:Proto-Tupi-Guarani/kʷati

Noun

 * 1) ring-tailed coati

title: Reconstruction:Proto-Tupi-Guarani/kʷati


text: Category:tup-gua-pro:Procyonids

title: Category:tup-gua-pro:Procyonids


text:
boysober

Etymology
. Popularized by comedian Hope Woodard in 2024.

Adjective

 * 1)  Abstaining from dating and relationships with men.

title: boysober


text:
ꦥꦼꦕꦼꦭ꧀

Etymology
.

title: ꦥꦼꦕꦼꦭ꧀


text: pĕcĕl

title: pĕcĕl


text:
unrelationshipped

Etymology
From.

Adjective

 * 1)  Not in a romantic relationship; single.

title: unrelationshipped


text:
rummachen

Etymology
From.

Verb

 * 1)  to make out, to French-kiss etc.
 * 1)  to make out, to French-kiss etc.
 * 1)  to make out, to French-kiss etc.

title: rummachen


text: unrelationshiped

title: unrelationshiped


text:
ꦲꦥꦼꦩ꧀

Etymology
.

Noun

 * : a thin South Asian pancake made from rice flour and coconut.

title: ꦲꦥꦼꦩ꧀


text:
都草

Etymology
lit. 'capital grass',.

Noun

 * 1) birdsfoot trefoil,  var. japonicus

title: 都草


text:
Appendix:Variations of "pliska"

The word “pliska” appears in many languages with many variations in the use of capitalization, punctuation, and diacritics.

Capitalization and punctuation

 * pliska
 * Pliska

Diacritics

 * pliška, Pliška
 * plíska
 * plíška

Other scripts

 * Cyrillic
 * пліска (pliska), Пліска (Pliska)
 * Плішка (Pliška)
 * плиска (pliska), Плиска (Pliska)
 * плишка (pliška), Плишка (Pliška)

title: Appendix:Variations of "pliska"


text:
澀刮刮

Adjective

 * 1)  astringent; acerbic; tart
 * 2)  rough; unsmooth

title: 澀刮刮


text: Citations:apoceclipse

title: Citations:apoceclipse


text:
Talk:rummachen

I wasn't sure whether the sexual sense should still be considered "slang" or just "colloquial" like the first one. My guess (and nothing more) is that a lot of people born before, say, 1970 wouldn't understand it, so I tagged it "slang". 84.63.31.91 02:21, 5 July 2024 (UTC)

title: Talk:rummachen


text: crash outs

title: crash outs


text: crashout

title: crashout


text: crashouts

title: crashouts


text: 涩刮刮

title: 涩刮刮


text:
澀苦苦

Adjective

 * 1)  astringent; acerbic; tart
 * 2)  rough; unsmooth

title: 澀苦苦


text:
澀臼臼

Adjective

 * 1)  astringent; acerbic; tart
 * 2)  rough; unsmooth

title: 澀臼臼


text: 涩臼臼

title: 涩臼臼


text: 涩苦苦

title: 涩苦苦


text:
kaskara

Noun

 * 1) A type of sword traditionally used in Sudan, Eritrea, and Chad.

title: kaskara


text: kaskaras

title: kaskaras


text:
澀忌刮

Adjective

 * 1)  astringent; acerbic; tart

title: 澀忌刮


text:
澀治掇

Adjective

 * 1)  astringent; acerbic; tart

title: 澀治掇


text: 涩治掇

title: 涩治掇


text: 涩忌刮

title: 涩忌刮


text: cheese toastie

title: cheese toastie


text: cheese toasties

title: cheese toasties


text: toastmaster's glasses

title: toastmaster's glasses


text:
User:エリック・キィ/plant names

Noun
su

 * 1) Campnosperma montanum Lauterb.

Noun
sobrowanye

 * 1) Campnosperma montanum Lauterb.

Noun
tsobala

 * 1) Campnosperma montanum Lauterb.

Alternative forms

 * tiesentoer

Noun
tiesentur

 * 1) Campnosperma montanum Lauterb.

Noun
aidzak

 * 1) Pleiogynium timoriense (DC.) Leenh.

Noun
bagitza

 * 1) Mangifera minor Blume

Refrerences

 * J.J. Havel & A. Kairo NGF 17189 (Station L.A., Bulolo, Wau Sub-dist., Morobe Dist., Papua New Guinea, 7°10′S, 146°40′E; 19 August 1963; L.2272099 (L 0686292)(GBIF) ['Garaina'])

Noun
iruba

 * 1) Campnosperma brevipetiolatum Volkens

Noun
orkor

 * 1) Planchonella orkor (Vink) Swenson (syn. Pouteria orkor Vink)

Noun
rawala

 * 1) Brachychiton carruthersii F.Muell.

Noun
kwarrenta

 * 1) Campnosperma montanum Lauterb.

Noun
nembangar

 * 1) Neoarytera neoebudensis (Guillaumin) Callm., Buerki, Munzinger & Lowry (syn. Arytera neoebudensis (Guillaumin) H.Turner)

Noun
sala(wilie)

 * 1) Neonauclea tricephala Ridsdale

Noun
biê

 * 1) Mangifera minor Blume

Noun
prauprh

 * 1) Mangifera inocarpoides Merr. & L.M.Perry or M. gedebe Miq.

Noun
lumba

 * 1) Pleiogynium timoriense (DC.) Leenh.

Noun
rihi

 * 1) Planchonella menait (Vink) Swenson (syn. Pouteria menait Vink)

title: User:エリック・キィ/plant names


text:
澀疊

Adjective

 * 1)  stacked or arranged in a compact and neat manner
 * 2)  simple and neat; neat and tidy

title: 澀疊


text: 涩叠

title: 涩叠


text:
User talk:2601:6C3:8200:638:F9AB:E058:5F54:B60C

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 on Wiktionary's page formatting; all entries must conform to it. The easiest way to start off is to copy the contents of an existing same-language entry, and then adapt it to fit the entry you are creating.
 * Check out Language considerations to find out more about how to edit for a particular language.
 * Our Criteria for Inclusion (CFI) defines exactly which words can be added to Wiktionary; 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.
 * If you have any questions, bring them to Information desk or ask me on my talk page.
 * Whenever commenting on any discussion page, please sign your posts with four tildes which automatically produces your username and timestamp.
 * You are encouraged to add a BabelBox to your userpage to indicate your self-assessed knowledge of languages.

Enjoy your stay at Wiktionary! —Justin ( koavf ) ❤T☮C☺M☯ 02:45, 5 July 2024 (UTC)
 * I have removed your edit as it was entirely unrelated to what we do here. Please read the above links to have some idea of what Wiktionary is and if you decide to edit in the future, make it on topic or else you will be blocked. —Justin ( koavf ) ❤T☮C☺M☯ 02:45, 5 July 2024 (UTC)


text:
ꦏ꧀ꦭꦼꦥꦺꦴꦤ꧀

Noun

 * 1) lump

title: ꦏ꧀ꦭꦼꦥꦺꦴꦤ꧀


text:
klepon

Etymology
.

title: klepon


text:
Reconstruction:Proto-Indo-European/bʰoréh₂

Noun

 * 1) an act of carrying or bearing
 * 2) load, burden
 * 3) that which bears weight or carries


text:
ਮਾਸਾਹਾਰੀ

Etymology
From.

Noun

 * 1) meateater, nonvegetarian

title: ਮਾਸਾਹਾਰੀ


text:
Talk:tgapitala

Spelling
"tgapitala" seems to be an outdated spelling of "capitala". See https://www.pledarigrond.ch/sutsilvan?searchPhrase=Hauptstadt 79.207.187.183 03:05, 5 July 2024 (UTC)

title: Talk:tgapitala


text:
makaronas

Etymology
. Plural usage likely influenced by. Compare also 🇨🇬.

Noun

 * 1) pasta (dough, food)
 * 2) noodles

title: makaronas


text:
屧貼

Adjective

 * 1)  stacked or arranged in a compact and neat manner

title: 屧貼


text: 屧贴

title: 屧贴


text:
تماشاخانه

Etymology
.

Noun

 * 1) playhouse, theater, stage

title: تماشاخانه


text: मांसाहारियों

title: मांसाहारियों


text: Category:Romanian terms prefixed with ruso-


text:
一家一業，無家澀疊

Idiom

 * 1)  having a family brings all kinds of family affairs with its own difficulties and suffering, but having no family can be a relief

title: 一家一業，無家澀疊


text: 一家一业，无家涩叠

title: 一家一业，无家涩叠


text:
User:LoITheMan

Lo, I the man AnglianVerbTestPage

title: User:LoITheMan


text: User:LoITheMan/AnglianVerbTest

title: User:LoITheMan/AnglianVerbTest


text: Category:Japanese terms historically spelled with ヅ


text: Category:Japanese terms historically spelled with ゎ


text: Category:Japanese terms historically spelled with ワ


text: Category:Japanese terms historically spelled with ヰ


text: Category:Japanese terms historically spelled with ヲ


text: Category:Japanese terms historically spelled with 𛀆


text:
㾀勢命

Adjective

 * 1)  born under an unlucky star; born unlucky usually of women; ill-fated

title: 㾀勢命


text:
Citations:skolioromantic

Adjective: "(rare, neologism) romantically attracted to transgender or non-binary and genderqueer people"

 * 2018, Krista Ellise Chessin, "The Sexual and Romantic Orientation Scale: A Measure of Sexual and Romantic Orientation as Separate Dimensions", thesis submitted to San Francisco State University, page 8:
 * By making reference groups explicit (and providing definition), the SAROS should be inclusive of not only asexual and aromantic individuals but also skoliosexual (i.e., people sexually attracted to nonbinary individuals) and skolioromantic people (i.e., people romantically attracted to nonbinary individuals) of any gender identity label.
 * 2022, Lea Hermann et al., "2020 Ace Community Survey Summary Report", page 111:
 * The percentage of cetero-/skolioromantic aces had the highest co-occurrence of identifying as queer (57.8%) and questioning (40.0%), although this sample size was fairly small (N=45).
 * 2022, Lea Hermann et al., "2020 Ace Community Survey Summary Report", page 111:
 * The percentage of cetero-/skolioromantic aces had the highest co-occurrence of identifying as queer (57.8%) and questioning (40.0%), although this sample size was fairly small (N=45).

title: Citations:skolioromantic


text: 㾀势命

title: 㾀势命


text: Category:Guarayu language

title: Category:Guarayu language


text:
kwachi

Etymology
.

Noun

 * 1) ring-tailed coati

title: kwachi


text: Category:Guarayu lemmas

title: Category:Guarayu lemmas


text: Category:Guarayu nouns

title: Category:Guarayu nouns


text:
業神

Adjective

 * 1)  toiling incessantly hard and spending time and energy, thereby making things hard for oneself

title: 業神


text:
gereord

Etymology 1
From.

Noun

 * 1) speech, language
 * 2) * "Ælfric's Lives of Saints", XXVI Of Saint Oswold, lines 64-66
 * "ang"

- Hit gelamp þā swā þæt sē ġelēaffulla cyning ġerehte his witan on heora āgenum ġereorde þæs bisċeopes bodunge mid blīþum mōde.

 * 1) voice

Declension
Feminine declension:

Neuter declension:

Adjective

 * 1) having a language

Etymology 2
Parallel to Etymology 1. Compare 🇨🇬.

Noun

 * 1) a meal, refection, food

Declension
Feminine declension:

Neuter declension:

title: gereord


text:
孽債

Noun

 * 1) sins of one's past life; sinful debt

title: 孽債


text: 孽债

title: 孽债


text: Category:Guarayu terms with IPA pronunciation


text: Category:Guarayu entry maintenance

title: Category:Guarayu entry maintenance


text: Category:Rhymes:Guarayu/i/2 syllables

title: Category:Rhymes:Guarayu/i/2 syllables


text: Category:Rhymes:Guarayu/i

title: Category:Rhymes:Guarayu/i


text: Category:Rhymes:Guarayu

title: Category:Rhymes:Guarayu


text: Category:gyr:Procyonids

title: Category:gyr:Procyonids


text: Category:gyr:All topics

title: Category:gyr:All topics


text: Category:gyr:List of set categories

title: Category:gyr:List of set categories


text:
業債

Adjective

 * 1)  toiling incessantly hard as a recompense for sins of one's past life
 * 2)  toiling incessantly hard and spending time and energy, thereby making things hard for oneself

Noun

 * 1)  miserable life as a recompense

title: 業債


text: Category:Guarayu terms derived from Proto-Tupi-Guarani


text: Category:Guarayu terms by etymology

title: Category:Guarayu terms by etymology


text: 业债

title: 业债


text: 业神

title: 业神


text: Category:Guarayu terms inherited from Proto-Tupi-Guarani


text: Category:Guarayu inherited terms

title: Category:Guarayu inherited terms


text: Category:Guarayu terms derived from Tupi-Guarani languages


text: Category:Guarayu terms derived from Tupian languages


text: Category:Guarayu terms derived from other languages


text:
業命

Noun

 * 1)  toilsome and laborious fate

title: 業命


text: 业命

title: 业命


text:
هرجایی

Etymology
.

Adjective

 * 1) vagrant, wandering, itinerant

Descendants

 * Hindustani:

title: هرجایی


text: Category:Northern Amami Ōshima terms with multiple readings


text: Citations:ceterosexual

title: Citations:ceterosexual


text:
бэйсбол

Etymology
.

Noun

 * : baseball

title: бэйсбол


text:
授權書

Noun

 * 1)  power of attorney

title: 授權書


text: 授权书

title: 授权书


text: integratable

title: integratable


text:
Module:number list/data/nv

local export = {numbers = {}}

local numbers = export.numbers

numbers[0] = { cardinal = "názbąs" }

numbers[1] = { cardinal = "łáaʼii", ordinal = "łáaʼii góneʼ" }

numbers[2] = { cardinal = "naaki", ordinal = "naaki góneʼ" }

numbers[3] = { cardinal = "tááʼ", ordinal = "tááʼ góneʼ" }

numbers[4] = { cardinal = "dį́į́ʼ", ordinal = "dį́į́ʼ góneʼ" }

numbers[5] = { cardinal = "ashdlaʼ", ordinal = "ashdlaʼ góneʼ" }

numbers[6] = { cardinal = "hastą́ą́", ordinal = "hastą́ą́ góneʼ" }

numbers[7] = { cardinal = "tsostsʼid", ordinal = "tsostsʼid góneʼ" }

numbers[8] = { cardinal = "tseebíí", ordinal = "tseebíí góneʼ" }

numbers[9] = { cardinal = "náhástʼéí", ordinal = "náhástʼéí góneʼ" }

numbers[10] = { cardinal = "neeznáá", ordinal = "neeznáá góneʼ" }

numbers[11] = { cardinal = "łaʼtsʼáadah", ordinal = "łaʼtsʼáadah góneʼ" }

numbers[12] = { cardinal = "naakitsʼáadah", ordinal = "naakitsʼáadah góneʼ" }

numbers[13] = { cardinal = "tááʼtsʼáadah", ordinal = "tááʼtsʼáadah góneʼ" }

numbers[14] = { cardinal = "dį́į́ʼtsʼáadah", ordinal = "dį́į́ʼtsʼáadah góneʼ" }

numbers[15] = { cardinal = "ashdlaʼáadah", ordinal = "ashdlaʼáadah góneʼ" }

numbers[16] = { cardinal = "hastą́ʼáadah", ordinal = "hastą́ʼáadah góneʼ" }

numbers[17] = { cardinal = "tsostsʼidtsʼáadah", ordinal = "tsostsʼidtsʼáadah góneʼ" }

numbers[18] = { cardinal = "tseebíítsʼáadah", ordinal = "tseebíítsʼáadah góneʼ" }

numbers[19] = { cardinal = "náhástʼéítsʼáadah", ordinal = "náhástʼéítsʼáadah góneʼ" }

numbers[20] = { cardinal = "naadiin", ordinal = "naadiin góneʼ" }

numbers[30] = { cardinal = "tádiin", ordinal = "tádiin góneʼ" }

numbers[40] = { cardinal = "dízdiin", ordinal = "dízdiin góneʼ" }

numbers[50] = { cardinal = "ashdladiin", ordinal = "ashdladiin góneʼ" }

numbers[60] = { cardinal = "hastą́diin", ordinal = "hastą́diin góneʼ" }

numbers[70] = { cardinal = "tsostsʼidiin", ordinal = "tsostsʼidiin góneʼ" }

numbers[80] = { cardinal = "tseebídiin", ordinal = "tseebídiin góneʼ" }

numbers[90] = { cardinal = "náhástʼédiin", ordinal = "náhástʼédiin góneʼ" }

numbers[100] = { cardinal = "tʼááłáhádí neeznádiin", ordinal = "tʼááłáhádí neeznádiin góneʼ" }

numbers[200] = { cardinal = "naakidi neeznádiin", ordinal = "naakidi neeznádiin góneʼ" }

numbers[300] = { cardinal = "táadi neeznádiin", ordinal = "táadi neeznádiin góneʼ" }

numbers[400] = { cardinal = "dį́įʼdi neeznádiin", ordinal = "dį́įʼdi neeznádiin góneʼ" }

numbers[500] = { cardinal = "ashdladi neeznádiin", ordinal = "ashdladi neeznádiin góneʼ" }

numbers[600] = { cardinal = "hastą́ądi neeznádiin", ordinal = "hastą́ądi neeznádiin góneʼ" }

numbers[700] = { cardinal = "tsostsʼidi neeznádiin", ordinal = "tsostsʼidi neeznádiin góneʼ" }

numbers[800] = { cardinal = "tseebíidi neeznádiin", ordinal = "tseebíidi neeznádiin góneʼ" }

numbers[900] = { cardinal = "náhástʼéidi neeznádiin", ordinal = "náhástʼéidi neeznádiin góneʼ" }

numbers[1000] = { cardinal = {"tʼááłáhádí mííl", "mííl"}, ordinal = {"tʼááłáhádí mííl góneʼ", "mííl góneʼ"} }

numbers[1000000] = { cardinal = "t'ááłáhádí míiltsoh", ordinal = "t'ááłáhádí míiltsoh góneʼ" }

return export

title: Module:number list/data/nv


text:
偷揜

Verb

 * 1)  to tale secretly and conceal

title: 偷揜


text:
Konstantinopla

Etymology
, from.

Proper noun

 * 1) Constantinople

title: Konstantinopla


text:
gesecgan

Etymology
From.

Verb

 * 1) to say, tell, relate, declare, prove

title: gesecgan


text:
揜僻

Noun

 * 1)  remote and isolated place

title: 揜僻


text:
揜角

Noun

 * 1)  remote corner

title: 揜角


text:
揜角仔

Noun

 * 1)  remote corner

title: 揜角仔


text:
tsostsʼidiin

Etymology
From.

Numeral

 * 1) seventy

title: tsostsʼidiin


text:
tseebídiin

Etymology
From.

Numeral

 * 1) eighty

title: tseebídiin


text:
náhástʼédiin

Etymology
From.

Numeral

 * 1) ninety

title: náhástʼédiin


text:
geoconfirmation

Etymology
.

Noun

 * 1)  The attempt to verify visual impressions of loss or acquisition of equipment and troop movements via topographic information.

title: geoconfirmation


text:
揜貼

Adjective

 * 1)  concealed
 * 2)  hidden; concealed; secret

title: 揜貼


text: 揜贴

title: 揜贴


text:
揜屧

Adjective

 * 1)  concealed
 * 2)  hidden; concealed; secret; isolated

title: 揜屧


text:
uchylant

Etymology
..

title: uchylant


text:
Module:ang-verb-anglian/documentation

This module mimics the standard ang-verb module except that it produces the expected Anglian rather than West Saxon forms. If you wish to use this module, please see the documentation for the ordinary ang-verb. If this module does not work, or does not produce the expected form, feel free to submit an edit or request an edit. The module expects forms not containing Anglian smoothing, because smoothing will be applied throughout all forms given to the generator. If a form is already smoothed, it will not match the expected criteria for its class. E.g. If you want to generate a form for the strong III Anglian verb, enter instead, and the chart will be produced for feohtan. Northumbrian dialects often round  to <œ> when a double-u proceeds it. Forms like cwœþan or cwœlan can be handled by placing an "œ" where the o would be in the headword. Similarly, forms like "geotan" can form a conjugation table with back mutation by simply using that as the headword. Forms like wœpan are also handled; be sure to use "œ" instead of writing "oe", even if the headword does not use the ligature. This module is currently being developed, and should not be expected to work properly with all verb forms.

title: Module:ang-verb-anglian/documentation


text:
кухонны

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

Adjective

 * 1)  kitchen

title: кухонны


text:
ilayanhon

Etymology
From.

Adjective

 * 1) pertaining to the hinterland, boondocks, backwoods
 * 2) pertaining to rural, sparsely populated areas

Noun

 * 1) hillbilly, one who is from a rural area

title: ilayanhon


text:
-nhon

Etymology
Ultimately from, through the variant used when the root word ends in a vowel. The /a/ in the latter elides and the /n/ and /h/ metathesize (switch places), forming.

title: -nhon


text:
dekownik

Etymology
From.

Noun

 * 1)  dodger, goldbrick, scrimshanker, shirker, skulker
 * 2)  draft dodger
 * 1)  draft dodger

title: dekownik


text:
ungereord

Etymology
From

Adjective

 * 1) not having an intelligible language

title: ungereord


text: 過動症

title: 過動症


text: посудзе

title: посудзе


text: 过动症

title: 过动症


text: guòdòngzhèng

title: guòdòngzhèng


text:
para cima de

Preposition

 * 1) onto, on top of

title: para cima de


text: Ynys Mon

title: Ynys Mon