Module:gml-conj

local p = {} frame = mw.getCurrentFrame

-- Initial consonant (cluster) local arg1 = frame.args[1]

-- Vowels local arg2 = frame.args[2] local v1 = arg2 -- Infinitive; Present Indicative 1. Pers. Sing., Plur.; Optative Present; Present Participle; Imperative Plur. local v2 = arg2 -- Present Indicative 2. and 3. Pers. Sing. local v3 = arg2 -- Preterite Indicative 1. and 3. Pers. Sing. local v4 = arg2 -- Preterite Indicative 2. Pers. Sing., Plur. local v5 = arg2 -- Optative Preterite local v6 = arg2 -- Imperative Sing. local v7 = arg2 -- Past Participle local v8 = arg2 -- Syncopated present 2nd/3rd

--Verb class local class = "weak"

if arg2 == "1" then v1, v2, v3, v4, v5, v6, v7, v8, class = "î", "î", "ê", "ē", "ē", "î", "ē", "î", "class 1 strong" elseif arg2 == "2a" then v1, v2, v3, v4, v5, v6, v7, v8, class = "ê", "ü̂", "ô", "ō", "ȫ", "ê", "ō", "ü̂", "class 2a strong" elseif arg2 == "2b" then v1, v2, v3, v4, v5, v6, v7, v8, class = "û", "ü̂", "ô", "ō", "ȫ", "û", "ō", "ü̂", "class 2b strong" elseif arg2 == "3a" then v1, v2, v3, v4, v5, v6, v7, v8, class = "i", "i", "a", "u", "ü", "i", "u", "i", "class 3a strong" elseif arg2 == "3b" then v1, v2, v3, v4, v5, v6, v7, v8, class = "e", "e", "a", "u", "ü", "i", "u", "i", "class 3b strong" elseif arg2 == "3c" then v1, v2, v3, v4, v5, v6, v7, v8, class = "e", "e", "a", "o", "ö", "e", "o", "e", "class 3c strong" elseif arg2 == "4" then v1, v2, v3, v4, v5, v6, v7, v8, class = "ē", "ē", "a", "â", "ê", "i", "ō", "i", "class 4 strong" elseif arg2 == "5" then v1, v2, v3, v4, v5, v6, v7, v8, class = "ē", "ē", "a", "â", "ê", "i", "ē", "i", "class 5 strong" elseif arg2 == "6" then v1, v2, v3, v4, v5, v6, v7, v8, class = "ā", "ē", "ô", "ô", "ö̂", "a", "ā", "e", "class 6 strong" end

-- Consonants local arg3 = frame.args[3] local fod = arg3 -- Final Obstruent Devoicing local simp1 = "" -- Medial consonant (cluster) before /t/ local arg4 = frame.args[4] local unsep = arg4 -- Unseparable prefix local sep = "" -- Separable prefix local ppen = "et" -- Past participle ending

-- Stetting fod if tonumber(string.sub(arg2, 0, 1)) == nil then fod = arg3.."ede" elseif string.sub(fod, -1) == string.sub(fod, 0, 1)	then fod = string.sub(fod, -1) fod = string.gsub(fod, "d", "t") fod = string.gsub(fod, "g", "ch") fod = string.gsub(fod, "v", "f") ppen = "en" end

if string.sub(fod, -1) == "t" then simp1 = string.sub(fod, 0, -2) else simp1 = fod end

-- Setting for sep/unsep if arg4 == "af" or arg4 == "an" or arg4 == "āne" or arg4 == "dȫr" or arg4 == "dörch" or arg4 == "hin" or arg4 == "hen" or arg4 == "hēne" or arg4 == "hinder" or arg4 == "achter" or arg4 == "her" or arg4 == "mit" or arg4 == "mēde" or arg4 == "nâ" or arg4 == "nâch" or arg4 == "ût" or arg4 == "ûte" or arg4 == "up" or arg4 == "uppe" or arg4 == "under" or arg4 == "ünder" or arg4 == "ümme" or arg4 == "umme" or arg4 == "ȫver" or arg4 == "ōver" or arg4 == "āver" or arg4 == "vȫr" or arg4 == "tô" then unsep, sep = "", arg4 end

--Stems stem1 = unsep..arg1..v1..arg3 stem2 = unsep..arg1..v2..arg3 stem3 = unsep..arg1..v3..fod stem4 = unsep..arg1..v4..arg3 stem5 = unsep..arg1..v5..arg3 stem8 = unsep..arg1..v8

ppref = "ge" -- Past participle prefix if unsep ~= "" then ppref = unsep end

-- Alternative forms local impalt = "" -- Imperative if string.sub(arg2, 0, 1) == "2" then impalt = [=[ or ]=]..unsep..arg1..v2..fod.." "..sep end

local ppalt = "" -- Past participle if arg2 == "2a" or arg2 == "2b" or arg2 == "4" then ppalt = [=[ or ]=]..sep.." "..ppref..arg1.."ā"..arg3..[=[en]=] elseif arg2 == "3b" then ppalt = [=[ or ]=]..sep..ppref..arg1.."o"..arg3..[=[en]=] end

local pre3b2 = "" -- Alternative present for 2nd person present in class 3b if arg2 == "3b" then pre3b2 = " or "..stem8..arg3.."est "..sep.." or "..unsep..arg1..v2..fod.."st "..sep end

local pretalt2 = "" -- Preterite 2nd Pers. Sing. local pretaltp = "" -- Preterite Plur. if string.sub(arg2, 0, 1) == "2" then pretalt2, pretaltp = [=[ or ]=]..unsep..arg1.."ȫ"..arg3.."est "..sep, [=[ or ]=]..unsep..arg1.."ȫ"..arg3.."en "..sep elseif arg2 == "3a" or arg2 == "3b" then pretalt2, pretaltp = [=[ or ]=]..unsep..arg1.."ü"..arg3.."est "..sep, [=[ or ]=]..unsep..arg1.."ü"..arg3.."en "..sep elseif arg2 == "3c" then pretalt2, pretaltp = [=[ or ]=]..unsep..arg1.."ö"..arg3.."est "..sep, [=[ or ]=]..unsep..arg1.."ö"..arg3.."en "..sep elseif arg2 == "6" then pretalt2, pretaltp = [=[ or ]=]..unsep..arg1.."ö̂"..arg3.."est "..sep, [=[ or ]=]..unsep.. arg1.."ö̂"..arg3.."en "..sep end

scat = "" -- Supercategory for verb classes with several subclasses if string.sub(arg2, 0, 1) == "2" or string.sub(arg2, 0, 1) == "3" then scat = "" end function p.conj( frame ) return [=[ Conjugation of ]=]..mw.title.getCurrentTitle.text..[=[ as a ]=]..class..[=[ verb ]=]..scat..[=[ ]=]

end

function p.alt (frame) return [=[ Conjugation of end

return p