Module:goh-verb

local m_utilities = require("Module:utilities") local com = require("Module:goh-common") local export = {} local lang = require("Module:languages").getByCode("goh") -- Within this module, conjugations are the functions that do the actual -- conjugating by creating the forms of a basic verb (not prefixed or -- separable). They are defined further down. local conjugations = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local conj_type = frame.args[1] or error("Conjugation type has not been specified. Please pass parameter 1 to the module invocation.") local args = frame:getParent.args SUBPAGENAME = mw.title.getCurrentTitle.subpageText NAMESPACE = mw.title.getCurrentTitle.nsText local forms, title, categories if conjugations[conj_type] then forms, title, categories = conjugations[conj_type](args) else error("Unknown conjugation type '" .. conj_type .. "'") end return make_table(forms, title) .. m_utilities.format_categories(categories, lang) end

--[=[	*** STRONG VERBS *** ]=]-- -- Conjugate a strong verb conjugations["strong"] = function(args) local forms = {} local class = args["class"] or ""; if class ~= "" then class = " class " .. class end local categories = {"Old High German" .. class .. " strong verbs"} local title = "strong" .. class local pres_stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") local past_sg_stem = args[2] or (NAMESPACE == "Template" and "(2)") or error("The second parameter is missing") local past_stem = args[3] or (NAMESPACE == "Template" and "(3)") or error("The third parameter is missing") local past_part_stem = args[4] or (NAMESPACE == "Template" and "(4)") or error("The fourth parameter is missing") local mut_stem = (args["mutstem"] or ""); if mut_stem == "" then mut_stem = pres_stem end local imperative = (args["imp"] or ""); if imperative == "" then imperative = mut_stem end present_strong(forms, pres_stem, mut_stem, imperative) past_strong(forms, past_stem, past_sg_stem) forms["past_ptc"] = "gi" .. past_part_stem .. "an" return forms, title, categories end

-- Conjugate a weak class 1a verb conjugations["weak1a"] = function(args) local forms = {} local categories = {"Old High German class 1 weak verbs"} local title = "weak class 1" local pres_stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") local past_stem = args[2] or (NAMESPACE == "Template" and "(2)") or error("The first parameter is missing") present_weak1(forms, pres_stem) present_weak1a(forms, pres_stem) past_weak(forms, past_stem .. "it") return forms, title, categories end

-- Conjugate a weak class 1b verb conjugations["weak1b"] = function(args) local forms = {} local categories = {"Old High German class 1 weak verbs"} local title = "weak class 1" local pres_stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") local past_stem = (args[2] or ""); if past_stem == "" then past_stem = pres_stem end local tt = args["tt"] or ""; if tt == "" then if past_stem:find("[cfhklnprst]t$") then tt = "" else tt = "t" end end present_weak1(forms, pres_stem) present_weak1b(forms, pres_stem) past_weak(forms, past_stem .. tt) return forms, title, categories end

-- Conjugate a weak class 2 verb conjugations["weak2"] = function(args) local forms = {} local categories = {"Old High German class 2 weak verbs"} local title = "weak class 2" local stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") present_weak2(forms, stem) past_weak(forms, stem .. "ot") return forms, title, categories end

-- Conjugate a weak class 3 verb conjugations["weak3"] = function(args) local forms = {} local categories = {"Old High German class 3 weak verbs"} local title = "weak class 3" local stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") present_weak3(forms, stem) past_weak(forms, stem .. "et") return forms, title, categories end

-- Conjugate a preterite-present verb conjugations["pp"] = function(args) local forms = {} local categories = {"Old High German preterite-present verbs"} local title = "preterite-present" local pres_stem = args[1] or (NAMESPACE == "Template" and "(1)") or error("The first parameter is missing") local pres_sg_stem = args[2] or (NAMESPACE == "Template" and "(2)") or error("The second parameter is missing") local past_stem = args[3] or (NAMESPACE == "Template" and "(3)") or error("The third parameter is missing") present_pp(forms, pres_stem, pres_sg_stem) past_weak(forms, past_stem) return forms, title, categories end

--[=[	*** IRREGULAR VERBS *** ]=]--

conjugations["tuon"] = function(args) local forms = {} local categories = {"Old High German irregular verbs"} local title = "irregular" present_weak2(forms, "tu") forms["pres_subj_2sg"] = "tues" forms["past_indc_1sg"] = "teta" forms["past_indc_2sg"] = "tati" forms["past_indc_3sg"] = "teta" past_generic(forms, "tat") forms["past_ptc"] = "gitan" return forms, title, categories end

conjugations["gan"] = function(args) local forms = {} local categories = {"Old High German irregular verbs"} local title = "irregular, suppletive" -- Indicative forms["pres_indc_1sg"] = "gam" forms["pres_indc_2sg"] = "gas" forms["pres_indc_3sg"] = "gat" forms["pres_indc_1pl"] = "gam(es)" forms["pres_indc_2pl"] = "gat" forms["pres_indc_3pl"] = "gant" -- Subjunctive forms["pres_subj_1sg"] = "ge" forms["pres_subj_2sg"] = "ges" forms["pres_subj_3sg"] = "ge" forms["pres_subj_1pl"] = "gem(es)" forms["pres_subj_2pl"] = "get" forms["pres_subj_3pl"] = "gen" -- Imperative forms["impr_2sg"] = "gang" forms["impr_2pl"] = "gat" forms["infinitive"] = "gan" forms["pres_ptc"] = "ganti" past_strong(forms, "giang", "giang") forms["past_ptc"] = "gigangan" return forms, title, categories end

conjugations["stan"] = function(args) local forms = {} local categories = {"Old High German irregular verbs"} local title = "irregular, suppletive" -- Indicative forms["pres_indc_1sg"] = "stam" forms["pres_indc_2sg"] = "stas" forms["pres_indc_3sg"] = "stat" forms["pres_indc_1pl"] = "stam(es)" forms["pres_indc_2pl"] = "stat" forms["pres_indc_3pl"] = "stant" -- Subjunctive forms["pres_subj_1sg"] = "ste" forms["pres_subj_2sg"] = "stes" forms["pres_subj_3sg"] = "ste" forms["pres_subj_1pl"] = "stem(es)" forms["pres_subj_2pl"] = "stet" forms["pres_subj_3pl"] = "sten" -- Imperative forms["impr_2sg"] = "stant" forms["impr_2pl"] = "stat" forms["infinitive"] = "stan" forms["pres_ptc"] = "stanti" past_strong(forms, "stuont", "stuont") forms["past_ptc"] = "gistantan" return forms, title, categories end function present_strong(forms, stem, mut_stem, imperative) -- Indicative forms["pres_indc_1sg"] = mut_stem .. "u" forms["pres_indc_2sg"] = mut_stem .. "is" forms["pres_indc_3sg"] = mut_stem .. "it" forms["pres_indc_1pl"] = stem .. "em(es)" forms["pres_indc_2pl"] = stem .. "et" forms["pres_indc_3pl"] = stem .. "ant" -- Subjunctive forms["pres_subj_1sg"] = stem .. "e" forms["pres_subj_2sg"] = stem .. "es" forms["pres_subj_3sg"] = stem .. "e" forms["pres_subj_1pl"] = stem .. "em(es)" forms["pres_subj_2pl"] = stem .. "et" forms["pres_subj_3pl"] = stem .. "en" -- Imperative forms["impr_2sg"] = com.dbl_cons(imperative) forms["impr_2pl"] = stem .. "et" forms["infinitive"] = stem .. "an" forms["pres_ptc"] = stem .. "anti" end function present_weak1(forms, stem, pres_stem) pres_stem = stem -- Indicative forms["pres_indc_1sg"] = stem .. "u" forms["pres_indc_2sg"] = stem .. "is" forms["pres_indc_3sg"] = stem .. "it" forms["pres_indc_1pl"] = stem .. "em(es)" forms["pres_indc_2pl"] = stem .. "et" forms["pres_indc_3pl"] = stem .. "ent" -- Subjunctive forms["pres_subj_1sg"] = stem .. "e" forms["pres_subj_2sg"] = stem .. "es" forms["pres_subj_3sg"] = stem .. "e" forms["pres_subj_1pl"] = stem .. "em(es)" forms["pres_subj_2pl"] = stem .. "et" forms["pres_subj_3pl"] = stem .. "en" end

function present_weak1a(forms, stem, pres_stem) pres_stem = stem present_weak1(forms, stem) -- Imperative forms["impr_2sg"] = com.impr_1a(stem .. "i") forms["impr_2pl"] = stem .. "et" forms["infinitive"] = stem .. "en" forms["pres_ptc"] = stem .. "enti" end

function present_weak1b(forms, stem, pres_stem) pres_stem = stem present_weak1(forms, stem) -- Imperative forms["impr_2sg"] = stem .. "i" forms["impr_2pl"] = stem .. "et" forms["infinitive"] = stem .. "en" forms["pres_ptc"] = stem .. "enti" end

function present_weak2(forms, stem) -- Indicative forms["pres_indc_1sg"] = stem .. "om" forms["pres_indc_2sg"] = stem .. "os" forms["pres_indc_3sg"] = stem .. "ot" forms["pres_indc_1pl"] = stem .. "om(es)" forms["pres_indc_2pl"] = stem .. "ot" forms["pres_indc_3pl"] = stem .. "ont" -- Subjunctive forms["pres_subj_1sg"] = stem .. "o" forms["pres_subj_2sg"] = stem .. "os" forms["pres_subj_3sg"] = stem .. "o" forms["pres_subj_1pl"] = stem .. "om(es)" forms["pres_subj_2pl"] = stem .. "ot" forms["pres_subj_3pl"] = stem .. "on" -- Imperative forms["impr_2sg"] = stem .. "o" forms["impr_2pl"] = stem .. "ot" forms["infinitive"] = stem .. "on" forms["pres_ptc"] = stem .. "onti" end

function present_weak3(forms, stem) -- Indicative forms["pres_indc_1sg"] = stem .. "em" forms["pres_indc_2sg"] = stem .. "es" forms["pres_indc_3sg"] = stem .. "et" forms["pres_indc_1pl"] = stem .. "em(es)" forms["pres_indc_2pl"] = stem .. "et" forms["pres_indc_3pl"] = stem .. "ent" -- Subjunctive forms["pres_subj_1sg"] = stem .. "e" forms["pres_subj_2sg"] = stem .. "es" forms["pres_subj_3sg"] = stem .. "e" forms["pres_subj_1pl"] = stem .. "em(es)" forms["pres_subj_2pl"] = stem .. "et" forms["pres_subj_3pl"] = stem .. "en" -- Imperative forms["impr_2sg"] = stem .. "e" forms["impr_2pl"] = stem .. "et" forms["infinitive"] = stem .. "en" forms["pres_ptc"] = stem .. "enti" end -- Create preterite-present present forms function present_pp(forms, stem, sg_stem) -- Indicative forms["pres_indc_1sg"] = sg_stem forms["pres_indc_2sg"] = sg_stem forms["pres_indc_3sg"] = sg_stem forms["pres_indc_1pl"] = stem .. "um(es)" forms["pres_indc_2pl"] = stem .. "ut" forms["pres_indc_3pl"] = stem .. "un" -- Subjunctive forms["pres_subj_1sg"] = stem .. "ī" forms["pres_subj_2sg"] = stem .. "is" forms["pres_subj_3sg"] = stem .. "i" forms["pres_subj_1pl"] = stem .. "im(es)" forms["pres_subj_2pl"] = stem .. "it" forms["pres_subj_3pl"] = stem .. "in" -- Imperative forms["impr_2sg"] = "" forms["impr_2pl"] = "" forms["infinitive"] = stem .. "an" forms["pres_ptc"] = stem .. "anti" end

-- Create strong past-tense forms function past_strong(forms, stem, sg_stem, indc_stem) forms["past_indc_1sg"] = com.dbl_cons(sg_stem) forms["past_indc_2sg"] = sg_stem .. "i" forms["past_indc_3sg"] = com.dbl_cons(sg_stem) past_generic(forms, stem, indc_stem) end

-- Create weak past-tense forms function past_weak(forms, stem, past_stem) forms["past_indc_1sg"] = com.dbl_t(stem .. "a") forms["past_indc_2sg"] = com.dbl_t(stem .. "os") forms["past_indc_3sg"] = com.dbl_t(stem .. "a") past_generic(forms, stem, past_stem) forms["past_ptc"] = com.dbl_cons(com.dbl_t("gi" .. stem)) end

-- Create general past-tense forms function past_generic(forms, stem, indc_stem, past_stem) past_stem = indc_stem indc_stem = indc_stem or stem -- Nonsingular indicative forms["past_indc_1pl"] = com.dbl_t(indc_stem .. "um(es)") forms["past_indc_2pl"] = com.dbl_t(indc_stem .. "ut") forms["past_indc_3pl"] = com.dbl_t(indc_stem .. "un") -- Subjunctive forms["past_subj_1sg"] = com.dbl_t(stem .. "i") forms["past_subj_2sg"] = com.dbl_t(stem .. "is") forms["past_subj_3sg"] = com.dbl_t(stem .. "i") forms["past_subj_1pl"] = com.dbl_t(stem .. "im(es)") forms["past_subj_2pl"] = com.dbl_t(stem .. "it") forms["past_subj_3pl"] = com.dbl_t(stem .. "in") end

-- Make the table function make_table(forms, title) -- Make links out of all forms for key, form in pairs(forms) do		forms[key] = com.link_form(form) end return [=[ Conjugation of '']=] .. forms["infinitive"] .. "''" .. (title and " (" .. title .. ")" or "") .. [=[ end

return export