local decl = {}
local lang = require("Module:languages").getByCode("txb")
local m_links = require("Module:links")
local m_utilities = require("Module:utilities")
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsubn = mw.ustring.gsub
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function glossary_link(anchor, text)
text = text or anchor
return "]"
end
local current_title = mw.title.getCurrentTitle().nsText
local NAMESPACE = current_title.nsText
local PAGENAME = current_title.text
local abl = "meṃ"
local all = "ś(c)"
local prl = "sa"
local loc = "ne"
local com = "mpa"
decl = function(data, args)
local stem = args
-- normal IV
-- need to check if ending is polysyllabic (i.e. multiple vowels)
-- if so, check to see if stem has ā or a, and change to a and ä resp.
data.forms = stem .. "cer"
data.forms = stem .. "tri"
data.forms = stem .. "tär"
data.forms = data.forms .. abl
data.forms = data.forms .. all
data.forms = data.forms .. prl
data.forms = data.forms .. loc
data.forms = data.forms .. com
data.forms = stem .. "cera"
data.forms = stem .. "tärnts"
data.forms = stem .. "cera"
data.forms = data.forms .. abl
data.forms = data.forms .. all
data.forms = data.forms .. prl
data.forms = data.forms .. loc
data.forms = data.forms .. com
end
decl = function(data, args)
local stem1 = args
local stem2 = args
-- normal 2nd
data.forms = stem1 .. "us"
data.forms = stem1 .. "ī"
data.forms = stem1 .. "ō"
data.forms = stem1 .. "um"
data.forms = stem1 .. "ō"
data.forms = stem1 .. "e"
data.forms = stem1 .. "ī"
data.forms = stem1 .. "ōrum"
data.forms = stem1 .. "īs"
data.forms = stem1 .. "ōs"
data.forms = stem1 .. "īs"
data.forms = stem1 .. "ī"
-- all neuter
if data.types.N then
table.insert(data.subtitles, "neuter")
data.forms = stem1 .. "um"
data.forms = stem1 .. "um"
data.forms = stem1 .. "a"
data.forms = stem1 .. "a"
data.forms = stem1 .. "a"
-- neuter ium
if data.types.ium then
data.forms = stem1 .. "ium"
data.forms = {stem1 .. "iī", stem1 .. "ī"}
data.forms = stem1 .. "iō"
data.forms = stem1 .. "ium"
data.forms = stem1 .. "iō"
data.forms = stem1 .. "ium"
data.forms = stem1 .. "ia"
data.forms = stem1 .. "iōrum"
data.forms = stem1 .. "iīs"
data.forms = stem1 .. "ia"
data.forms = stem1 .. "iīs"
data.forms = stem1 .. "ia"
data.notes = "Found in older Latin (until the Augustan Age)."
-- neuter us, plural a
elseif data.types.a then
table.insert(data.subtitles, "nominative/accusative/vocative plural in ''-a''")
data.forms = stem1 .. "us"
data.forms = stem1 .. "us"
data.forms = stem1 .. "us"
data.forms = stem1 .. "a"
data.forms = stem1 .. "a"
data.forms = stem1 .. "a"
-- -vom (aevom, etc.)
elseif data.types.vom then
table.insert(data.subtitles, "nominative singular in ''-om'' after ''v''")
data.forms = stem1 .. "om"
data.forms = stem1 .. "om"
data.forms = stem1 .. "om"
-- neuter Greek in -os (cētos)
elseif data.types.Greek and data.types.us then
table.insert(data.subtitles, "Greek-type")
table.insert(data.subtitles, "nominative/accusative/vocative in ''-os''")
data.forms = stem1 .. "os"
data.forms = stem1 .. "os"
data.forms = stem1 .. "os"
data.forms = stem1 .. "ē"
data.forms = stem1 .. "ōn"
data.forms = stem1 .. "ē"
data.forms = stem1 .. "ē"
-- neuter Greek
elseif data.types.Greek then
table.insert(data.subtitles, "Greek-type")
data.forms = stem1 .. "on"
data.forms = stem1 .. "on"
data.forms = stem1 .. "on"
-- neuter us
elseif data.types.us then
table.insert(data.subtitles, "nominative/accusative/vocative in ''-us''")
data.forms = stem1 .. "us"
data.forms = stem1 .. "us"
data.forms = stem1 .. "us"
data.forms = stem1 .. "ī"
data.forms = stem1 .. "ōs"
data.forms = stem1 .. "ī"
elseif data.types.not_Greek or data.types.not_us then
table.insert(data.subtitles, "nominative/accusative/vocative in ''-um''")
end
-- er
elseif data.types.er then
if mw.ustring.match(stem1, "r$") then
table.insert(data.subtitles, "nominative singular in ''-r''")
else
table.insert(data.subtitles, "nominative singular in ''-er''")
end
data.forms = stem1
data.forms = stem2 .. "ī"
data.forms = stem2 .. "ō"
data.forms = stem2 .. "um"
data.forms = stem2 .. "ō"
data.forms = stem1
data.forms = stem2 .. "ī"
data.forms = stem2 .. "ōrum"
data.forms = stem2 .. "īs"
data.forms = stem2 .. "ōs"
data.forms = stem2 .. "īs"
data.forms = stem2 .. "ī"
-- ius
elseif data.types.ius then
data.forms = stem1 .. "ius"
data.forms = {stem1 .. "iī", stem1 .. "ī"}
data.forms = stem1 .. "iō"
data.forms = stem1 .. "ium"
data.forms = stem1 .. "iō"
if data.types.voci then
-- Only for proper names and fīlius, genius
data.forms = stem1 .. "ī"
else
data.forms = stem1 .. "ie"
end
data.forms = stem1 .. "iī"
data.forms = stem1 .. "iōrum"
data.forms = stem1 .. "iīs"
data.forms = stem1 .. "iōs"
data.forms = stem1 .. "iīs"
data.forms = stem1 .. "iī"
data.notes = "Found in older Latin (until the Augustan Age)."
-- -vos (servos, etc.)
elseif data.types.vos then
table.insert(data.subtitles, "nominative singular in ''-os'' after ''v''")
data.forms = stem1 .. "os"
data.forms = stem1 .. "om"
-- Greek
elseif data.types.Greek then
table.insert(data.subtitles, "Greek-type")
data.forms = stem1 .. "os"
data.forms = {stem1 .. "on"}
elseif data.types.not_Greek then
table.insert(data.subtitles, "non-Greek-type")
end
-- with -um genitive plural
if data.types.genplum then
table.insert(data.subtitles, {"contracted", " genitive plural"})
data.notes = "Contraction found in poetry."
if data.types.ius or data.types.ium then
data.forms = {stem2 .. "iōrum", stem2 .. "ium"}
else
data.forms = {stem2 .. "ōrum", stem2 .. "um"}
end
elseif data.types.not_genplum then
table.insert(data.subtitles, {"normal", " genitive plural"})
end
end
local acc_sg_i_stem_subtypes = {
acc_im = {
-- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) ;
-- cannabis, senapis, sinapis
acc_sg = {"im"},
title = {"accusative singular in ''-im''"},
},
acc_im_in = {
-- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris ;
-- Baetis, Tigris
acc_sg = {"im", "in"},
title = {"accusative singular in ''-im'' or ''-in''"},
},
acc_im_in_em = {
-- e.g. tigris, river Līris
acc_sg = {"im", "in", "em"},
title = {"accusative singular in ''-im'', ''-in'' or ''-em''"},
},
acc_im_em = {
acc_sg = {"im", "em"},
title = {"accusative singular in ''-im'' or ''-em''"},
},
acc_im_occ_em = {
-- febris, pelvis, puppis, restis, securis, turris
acc_sg = {"im", "em"},
title = {"accusative singular in ''-im'' or occasionally ''-em''"},
},
acc_em_im = {
-- aqualis, clavis, lens, navis ;
-- cutis, restis
acc_sg = {"em", "im"},
title = {"accusative singular in ''-em'' or ''-im''"},
},
}
local abl_sg_i_stem_subtypes = {
abl_i = {
-- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) ;
-- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris ;
-- canalis "water pipe", months in -is or -er, nouns originally i-stem adjectives such as aedilis, affinis, bipennis, familiaris, sodalis, volucris, etc.
abl_sg = {"ī"},
title = {"ablative singular in ''-ī''"},
},
abl_i_e = {
-- febris, pelvis, puppis, restis, securis, turris
abl_sg = {"ī", "e"},
title = {"ablative singular in ''-ī'' or ''-e''"},
},
abl_e_i = {
-- cannabis, senapis, sinapis ;
-- Baetis, Tigris ;
-- aqualis, clavis, lens, navis ;
-- finis, mugilis, occiput, pugil, rus, supellex, vectis
abl_sg = {"e", "ī"},
title = {"ablative singular in ''-e'' or ''-ī''"},
},
abl_e_occ_i = {
-- amnis, anguis, avis, civis, classis, fustis, ignis, imber, orbis, pars, postis, sors, unguis, vesper
abl_sg = {"e", "ī"},
title = {"ablative singular in ''-e'' or occasionally ''-ī''"},
},
}
local function extract_stem(form, ending)
local base = rmatch(form, "^(.*)" .. ending .. "$")
if not base then
error("Form " .. form .. " should end in -" .. ending)
end
return base
end
decl = function(data, args)
local stem1 = args
local stem2 = args
local function parisyllabic_type()
local stem1_vowels = rsub(
require("Module:la-utilities").strip_macrons(stem1),
"", ""
)
local stem2_vowels = rsub(
require("Module:la-utilities").strip_macrons(stem2),
"", ""
)
return #stem1_vowels > #stem2_vowels and "parisyllabic" or "imparisyllabic"
end
local function non_i_stem_type()
return parisyllabic_type() .. " non-i-stem"
end
--normal 3rd
data.forms = stem1
data.forms = stem2 .. "is"
data.forms = stem2 .. "ī"
data.forms = stem2 .. "em"
data.forms = stem2 .. "e"
data.forms = stem1
data.forms = stem2 .. "ēs"
data.forms = stem2 .. "um"
data.forms = stem2 .. "ibus"
data.forms = stem2 .. "ēs"
data.forms = stem2 .. "ibus"
data.forms = stem2 .. "ēs"
local acc_sg_i_stem_subtype = false
local not_acc_sg_i_stem_subtype = false
for subtype, _ in pairs(data.types) do
if acc_sg_i_stem_subtypes then
acc_sg_i_stem_subtype = true
break
end
end
for acc_sg_subtype, _ in pairs(acc_sg_i_stem_subtypes) do
if data.types then
not_acc_sg_i_stem_subtype = true
break
end
end
local abl_sg_i_stem_subtype = false
local not_abl_sg_i_stem_subtype = false
for subtype, _ in pairs(data.types) do
if abl_sg_i_stem_subtypes then
abl_sg_i_stem_subtype = true
break
end
end
for abl_sg_subtype, _ in pairs(abl_sg_i_stem_subtypes) do
if data.types then
not_abl_sg_i_stem_subtype = true
break
end
end
-- all Greek
if data.types.Greek then
table.insert(data.subtitles, "Greek-type")
-- Greek er
if data.types.er then
table.insert(data.subtitles, "variant with nominative singular in ''-ēr''")
stem1 = extract_stem(stem1, "ēr")
data.forms = stem1 .. "ēr"
data.forms = stem1 .. "eris"
data.forms = stem1 .. "erī"
data.forms = {stem1 .. "era", stem1 .. "erem"}
data.forms = stem1 .. "ere"
data.forms = stem1 .. "ēr"
data.forms = stem1 .. "erēs"
data.forms = stem1 .. "erum"
data.forms = stem1 .. "eribus"
data.forms = stem1 .. "erēs"
data.forms = stem1 .. "eribus"
data.forms = stem1 .. "erēs"
-- Greek on
elseif data.types.on then
table.insert(data.subtitles, "variant with nominative singular in ''-ōn''")
stem1 = extract_stem(stem1, "ōn")
data.forms = stem1 .. "ōn"
data.forms = {stem1 .. "ontis", stem1 .. "ontos"}
data.forms = stem1 .. "ontī"
data.forms = stem1 .. "onta"
data.forms = stem1 .. "onte"
data.forms = stem1 .. "ōn"
data.forms = stem1 .. "ontēs"
data.forms = {stem1 .. "ontum", stem1 .. "ontium"}
data.forms = stem1 .. "ontibus"
data.forms = {stem1 .. "ontēs", stem1 .. "ontās"}
data.forms = stem1 .. "ontibus"
data.forms = stem1 .. "ontēs"
-- Greek i-stem
elseif data.types.I then
table.insert(data.subtitles, "i-stem")
data.forms = {stem2 .. "is", stem2 .. "eōs", stem2 .. "ios"}
data.forms = {stem2 .. "im", stem2 .. "in", stem2 .. "em"}
data.forms = {stem2 .. "ī", stem2 .. "e"}
data.forms = {stem2 .. "is", stem2 .. "i"}
data.notes = "Found sometimes in Medieval and New Latin."
data.notes = "Found sometimes in Medieval and New Latin."
data.forms = {stem2 .. "ēs", stem2 .. "eis"}
data.forms = {stem2 .. "ium", stem2 .. "eōn"}
data.forms = {stem2 .. "ēs", stem2 .. "eis"}
data.forms = {stem2 .. "ēs", stem2 .. "eis"}
if data.types.poetic_esi then
data.forms = {stem2 .. "ibus", stem2 .. "esi"}
data.forms = {stem2 .. "ibus", stem2 .. "esi"}
data.notes = "Primarily in poetry."
data.notes = "Primarily in poetry."
end
-- normal Greek
else
table.insert(data.subtitles, "normal variant")
data.forms = stem2 .. "os"
if stem2:find("y$") then
data.forms = stem2 .. "n"
else
data.forms = stem2 .. "a"
end
data.forms = stem2 .. "es"
data.forms = stem2 .. "as"
data.forms = stem2 .. "es"
if rfind(stem1, "s$") then
-- Per Hiley, words in -is and -ys have a poetic vocative
-- without the -s, but otherwise the vocative is the same
-- as the nominative.
data.forms = {stem1, rsub(stem1, "s", "")}
data.notes = "In poetry."
end
end
elseif data.types.not_Greek then
table.insert(data.subtitles, "non-Greek-type")
end
-- polis
if data.types.polis then
stem1 = extract_stem(stem1, "polis")
table.insert(data.subtitles, "i-stem, partially Greek-type")
data.forms = stem1 .. "polis"
data.forms = stem1 .. "polis"
data.forms = stem1 .. "polī"
data.forms = {stem1 .. "polim", stem1 .. "polin"}
data.forms = stem1 .. "polī"
data.forms = {stem1 .. "polis", stem1 .. "polī"}
elseif data.types.not_polis then
table.insert(data.subtitles, non_i_stem_type())
end
-- all neuter
if data.types.N then
table.insert(data.subtitles, "neuter")
data.forms = stem1
-- neuter I stem
if data.types.I then
-- pure variety
if data.types.pure then
table.insert(data.subtitles, "“pure” i-stem")
data.forms = stem2 .. "ī"
data.forms = stem2 .. "ia"
data.forms = stem2 .. "ium"
data.forms = stem2 .. "ia"
data.forms = stem2 .. "ia"
-- non-pure variety (rare)
else
table.insert(data.subtitles, "i-stem")
data.forms = stem2 .. "a"
data.forms = {stem2 .. "ium", stem2 .. "um"}
data.forms = stem2 .. "a"
data.forms = stem2 .. "a"
end
-- normal neuter
else
table.insert(data.subtitles, non_i_stem_type())
data.forms = stem2 .. "a"
data.forms = stem2 .. "a"
data.forms = stem2 .. "a"
end
-- I stem
elseif data.types.I or acc_sg_i_stem_subtype or abl_sg_i_stem_subtype then
if data.types.not_N then
table.insert(data.subtitles, "non-neuter i-stem")
else
table.insert(data.subtitles, "i-stem")
end
data.forms = stem2 .. "ium"
-- Per Allen and Greenough, Hiley and others, the acc_pl in -īs
-- applied originally to all i-stem nouns, and was current as an
-- alternative form up through Caesar.
data.forms = {stem2 .. "ēs", stem2 .. "īs"}
for subtype, _ in pairs(data.types) do
local acc_sg_i_stem_props = acc_sg_i_stem_subtypes
if acc_sg_i_stem_props then
data.forms = {}
for _, ending in ipairs(acc_sg_i_stem_props.acc_sg) do
table.insert(data.forms, stem2 .. ending)
end
if data.num ~= "pl" then
for _, t in ipairs(acc_sg_i_stem_props.title) do
table.insert(data.subtitles, t)
end
end
break
end
end
for subtype, _ in pairs(data.types) do
local abl_sg_i_stem_props = abl_sg_i_stem_subtypes
if abl_sg_i_stem_props then
data.forms = {}
for _, ending in ipairs(abl_sg_i_stem_props.abl_sg) do
table.insert(data.forms, stem2 .. ending)
end
if data.num ~= "pl" then
for _, t in ipairs(abl_sg_i_stem_props.title) do
table.insert(data.subtitles, t)
end
end
break
end
end
elseif data.types.not_N and data.types.not_I then
table.insert(data.subtitles, "non-neuter " .. non_i_stem_type())
elseif data.types.not_N then
table.insert(data.subtitles, "non-neuter")
elseif data.types.not_I then
table.insert(data.subtitles, non_i_stem_type())
end
end
decl = function(data, args)
local stem = args
-- normal 4th
data.forms = stem .. "us"
data.forms = stem .. "ūs"
data.forms = stem .. "uī"
data.forms = stem .. "um"
data.forms = stem .. "ū"
data.forms = stem .. "us"
data.forms = stem .. "ūs"
data.forms = stem .. "uum"
data.forms = stem .. "ibus"
data.forms = stem .. "ūs"
data.forms = stem .. "ibus"
data.forms = stem .. "ūs"
if data.types.echo then
table.insert(data.subtitles, "nominative/vocative singular in ''-ō''")
data.forms = stem .. "ō"
data.forms = stem .. "ō"
elseif data.types.argo then
table.insert(data.subtitles, "nominative/accusative/vocative singular in ''-ō'', ablative singular in ''-uī''")
data.forms = stem .. "ō"
data.forms = stem .. "ō"
data.forms = stem .. "uī"
data.forms = stem .. "ō"
elseif data.types.Callisto then
table.insert(data.subtitles, "all cases except the genitive singular in ''-ō''")
data.forms = stem .. "ō"
data.forms = stem .. "ō"
data.forms = stem .. "ō"
data.forms = stem .. "ō"
data.forms = stem .. "ō"
end
-- neuter
if data.types.N then
table.insert(data.subtitles, "neuter")
data.forms = stem .. "ū"
data.forms = stem .. "ū"
data.forms = stem .. "ū"
data.forms = stem .. "ū"
data.forms = stem .. "ua"
data.forms = stem .. "ua"
data.forms = stem .. "ua"
end
-- ubus
if data.types.ubus then
table.insert(data.subtitles, "dative/ablative plural in ''-ubus''")
data.forms = stem .. "ubus"
data.forms = stem .. "ubus"
elseif data.types.not_ubus then
table.insert(data.subtitles, "''-ibus''")
end
end
decl = function(data, args)
local stem = args
-- ies
if data.types.i then
stem = stem .. "i"
end
data.forms = stem .. "ēs"
data.forms = stem .. "eī"
data.forms = stem .. "eī"
data.forms = stem .. "em"
data.forms = stem .. "ē"
data.forms = stem .. "ēs"
data.forms = stem .. "ēs"
data.forms = stem .. "ērum"
data.forms = stem .. "ēbus"
data.forms = stem .. "ēs"
data.forms = stem .. "ēbus"
data.forms = stem .. "ēs"
-- ies
if data.types.i then
data.forms = stem .. "ēī"
data.forms = stem .. "ēī"
end
end
decl = function(data, args)
local stem = args
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
data.forms = stem
end
decl = function(data, args)
local title = {}
data.title = "Not declined; used only in the nominative and accusative singular"
local stem = args
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = stem
data.forms = stem
data.num = "sg"
end
decl = function(data, args)
local stem = args
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
data.forms = "-"
if stem == "bōs" then
data.forms = "bōs"
data.forms = "bovis"
data.forms = "bovī"
data.forms = "bovem"
data.forms = "bove"
data.forms = "bōs"
data.forms = "bovēs"
data.forms = "boum"
data.forms = {"bōbus", "būbus"}
data.forms = "bovēs"
data.forms = {"bōbus", "būbus"}
data.forms = "bovēs"
elseif stem == "cherub" then
data.title = "mostly " .. glossary_link("indeclinable")
table.insert(data.subtitles, "with a distinct plural")
data.forms = "cherub"
data.forms = "cherub"
data.forms = "cherub"
data.forms = "cherub"
data.forms = "cherub"
data.forms = "cherub"
data.forms = {"cherubim", "cherubin"}
data.forms = {"cherubim", "cherubin"}
data.forms = {"cherubim", "cherubin"}
data.forms = {"cherubim", "cherubin"}
data.forms = {"cherubim", "cherubin"}
data.forms = {"cherubim", "cherubin"}
elseif stem == "deus" then
data.forms = "deus"
data.forms = "deī"
data.forms = "deō"
data.forms = "deum"
data.forms = "deō"
data.forms = {"dee", "deus"}
data.forms = {"dī", "diī", "deī"}
data.forms = {"deōrum", "deûm", "divom"}
data.forms = {"dīs", "diīs", "deīs"}
data.forms = "deōs"
data.forms = {"dīs", "diīs", "deīs"}
data.forms = {"dī", "diī", "deī"}
elseif stem == "Deus" then
data.forms = "Deus"
data.forms = "Deī"
data.forms = "Deō"
data.forms = "Deum"
data.forms = "Deō"
data.forms = "Deus"
data.num = "sg"
elseif stem == "domus" then
data.title = "]/] noun"
data.forms = "domus"
data.forms = {"domūs", "domī"}
data.forms = {"domuī", "domō", "domū"}
data.forms = "domum"
data.forms = {"domū", "domō"}
data.forms = "domus"
data.forms = "domī"
data.forms = "domūs"
data.forms = {"domuum", "domōrum"}
data.forms = "domibus"
data.forms = {"domūs", "domōs"}
data.forms = "domibus"
data.forms = "domūs"
data.forms = "domibus"
data.loc = true
elseif stem == "Iēsus" or stem == "Iēsūs" then
table.insert(data.subtitles, "highly " .. glossary_link("irregular"))
ij = mw.ustring.sub(stem, 1, 1)
data.forms = stem
data.forms = ij .. "ēsū"
data.forms = ij .. "ēsū"
data.forms = ij .. "ēsum"
data.forms = ij .. "ēsū"
data.forms = ij .. "ēsū"
data.num = "sg"
elseif stem == "Jesus" then
table.insert(data.subtitles, "highly " .. glossary_link("irregular"))
ij = mw.ustring.sub(stem, 1, 1)
data.forms = stem
data.forms = ij .. "esu"
data.forms = ij .. "esu"
data.forms = ij .. "esum"
data.forms = ij .. "esu"
data.forms = ij .. "esu"
data.num = "sg"
elseif stem == "Jésus" then
table.insert(data.subtitles, "highly " .. glossary_link("irregular"))
ij = mw.ustring.sub(stem, 1, 1)
data.forms = stem
data.forms = ij .. "ésu"
data.forms = ij .. "ésu"
data.forms = ij .. "ésum"
data.forms = ij .. "ésu"
data.forms = ij .. "ésu"
data.num = "sg"
elseif stem == "iūgerum" or stem == "jūgerum" then
ij = stem == "iūgerum" and "i" or "j"
data.title = "]–] hybrid noun"
table.insert(data.subtitles, "neuter")
data.forms = ij .. "ūgerum"
data.forms = ij .. "ūgerī"
data.forms = ij .. "ūgerō"
data.forms = ij .. "ūgerum"
data.forms = ij .. "ūgerō"
data.forms = ij .. "ūgerum"
data.forms = ij .. "ūgera"
data.forms = ij .. "ūgerum"
data.forms = ij .. "ūgeribus"
data.forms = ij .. "ūgera"
data.forms = {ij .. "ūgeribus", ij .. "ūgerīs"}
data.forms = ij .. "ūgera"
data.notes = "Once only, in:<br/>M. Terentius Varro, ''Res Rusticae'', bk I, ch. x"
elseif stem == "sūs" then
data.forms = "sūs"
data.forms = "suis"
data.forms = "suī"
data.forms = "suem"
data.forms = "sue"
data.forms = "sūs"
data.forms = "suēs"
data.forms = "suum"
data.forms = {"suibus", "sūbus", "subus"}
data.forms = "suēs"
data.forms = {"suibus", "sūbus", "subus"}
data.forms = "suēs"
elseif stem == "ēthos" then
table.insert(data.subtitles, glossary_link("irregular"))
table.insert(data.subtitles, "Greek-type")
data.forms = "ēthos"
data.forms = "ētheos"
data.forms = "ēthos"
data.forms = "ēthos"
data.forms = {"ēthea", "ēthē"}
data.forms = {"ēthesi", "ēthesin"}
data.forms = {"ēthea", "ēthē"}
data.forms = {"ēthesi", "ēthesin"}
data.forms = {"ēthea", "ēthē"}
elseif stem == "lexis" then
table.insert(data.subtitles, glossary_link("irregular"))
table.insert(data.subtitles, "Greek-type")
data.forms = "lexis"
data.forms = "lexeōs"
data.forms = "lexeis"
elseif stem == "Athōs" then
table.insert(data.subtitles, "highly " .. glossary_link("irregular"))
table.insert(data.subtitles, "Greek-type")
data.forms = "Athōs"
data.forms = "Athō"
data.forms = "Athō"
data.forms = {"Athō", "Athōn"}
data.forms = "Athō"
data.forms = "Athōs"
data.num = "sg"
elseif stem == "Pammenēs" then
data.title = "Variably declined either according to ] or in a manner adapted from ]"
data.forms = "Pammenēs"
data.forms = {"Pammenis", "Pammenī"}
data.forms = {"Pammenī", "Pammenē"}
data.forms = {"Pammenem", "Pammenēn"}
data.forms = "Pammenē̆"
data.forms = {"Pammenēs", "Pammenē"}
data.num = "sg"
elseif stem == "vēnum" then
data.title = "]/] noun"
table.insert(data.subtitles, glossary_link("defective"))
data.forms = {"vēnuī", "vēnō"}
data.forms = "vēnum"
data.num = "sg"
elseif stem == "vīs" then
table.insert(data.subtitles, glossary_link("irregular"))
table.insert(data.subtitles, glossary_link("defective"))
data.forms = "vīs"
data.forms = "*vīs"
data.forms = "*vī"
data.forms = "vim"
data.forms = "vī"
data.forms = "vīs"
data.forms = "vīrēs"
data.forms = "vīrium"
data.forms = "vīribus"
data.forms = {"vīrēs", "vīrīs"}
data.forms = "vīribus"
data.forms = "vīrēs"
else
error("Stem " .. stem .. " not recognized.")
end
end
return decl
-- For Vim, so we get 4-space tabs
-- vim: set ts=4 sw=4 noet: