Module:goh-verb
Appearance
- The following documentation is located at Module:goh-verb/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module is used to create inflection tables for Old High German verbs.
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 verb|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 [=[
<div class="NavFrame" style="width: 40em">
<div class="NavHead" style="text-align: left">Conjugation of '']=] .. forms["infinitive"] .. "''" .. (title and " (" .. title .. ")" or "") .. [=[</div>
<div class="NavContent">
{| style="width: 100%; line-height: 125%; background-color:#F5FFFA; text-align:center; border: 1px solid #CCCCFF;" cellpadding="3" cellspacing="1" class="inflection-table"
|- style="background-color:#EFEFEF; "
|-
! style="font-size:90%; background-color:#93C572" | [[indicative mood|indicative]]
! style="font-size:90%; background-color:#90EE90" | [[present tense|present]]
! style="font-size:90%; background-color:#90EE90" | [[preterite]]
|-
! [[first person|1st]] [[singular]]
| ]=] .. forms["pres_indc_1sg"] .. " || " .. forms["past_indc_1sg"] .. [=[
|-
! [[second person|2nd]] [[singular]]
| ]=] .. forms["pres_indc_2sg"] .. " || " .. forms["past_indc_2sg"] .. [=[
|-
! [[third person|3rd]] [[singular]]
| ]=] .. forms["pres_indc_3sg"] .. " || " .. forms["past_indc_3sg"] .. [=[
|-
! [[first person|1st]] [[plural]]
| ]=] .. forms["pres_indc_1pl"] .. " || " .. forms["past_indc_1pl"] .. [=[
|-
! [[second person|2nd]] [[plural]]
| ]=] .. forms["pres_indc_2pl"] .. " || " .. forms["past_indc_2pl"] .. [=[
|-
! [[third person|3rd]] [[plural]]
| ]=] .. forms["pres_indc_3pl"] .. " || " .. forms["past_indc_3pl"] .. [=[
|-
! style="font-size:90%; background-color:#93C572" | [[subjunctive mood|subjunctive]]
! style="font-size:90%; background-color:#90EE90" | [[present tense|present]]
! style="font-size:90%; background-color:#90EE90" | [[past tense|past]]
|-
! [[first person|1st]] [[singular]]
| ]=] .. forms["pres_subj_1sg"] .. " || " .. forms["past_subj_1sg"] .. [=[
|-
! [[second person|2nd]] [[singular]]
| ]=] .. forms["pres_subj_2sg"] .. " || " .. forms["past_subj_2sg"] .. [=[
|-
! [[third person|3rd]] [[singular]]
| ]=] .. forms["pres_subj_3sg"] .. " || " .. forms["past_subj_3sg"] .. [=[
|-
! [[first person|1st]] [[plural]]
| ]=] .. forms["pres_subj_1pl"] .. " || " .. forms["past_subj_1pl"] .. [=[
|-
! [[second person|2nd]] [[plural]]
| ]=] .. forms["pres_subj_2pl"] .. " || " .. forms["past_subj_2pl"] .. [=[
|-
! [[third person|3rd]] [[plural]]
| ]=] .. forms["pres_subj_3pl"] .. " || " .. forms["past_subj_3pl"] .. [=[
|-
! style="font-size:90%; background-color:#93C572" | [[imperative mood|imperative]]
! style="font-size:90%; background-color:#90EE90" |
! style="font-size:90%; background-color:#90EE90" |
|-
! [[singular]]
| ]=] .. forms["impr_2sg"] .. [=[
|-
! [[plural]]
| ]=] .. forms["impr_2pl"] .. [=[
|-
! style="font-size:90%; background-color:#93C572" | [[participle]]
! style="font-size:90%; background-color:#90EE90" | [[present tense|present]]
! style="font-size:90%; background-color:#90EE90" | [[past tense|past]]
|-
!
| ]=] .. forms["pres_ptc"] .. " || " .. forms["past_ptc"] .. [=[
|}</div></div>]=]
end
return export