Module:la-verb: difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary |
m Reverted edits by CodeCat. If you think this rollback is in error, please leave a message on my talk page. |
||
Line 2,364: | Line 2,364: | ||
pagename = mw.ustring.gsub(pagename,"Latin/","") |
pagename = mw.ustring.gsub(pagename,"Latin/","") |
||
end |
end |
||
return [=[ |
return [=[<div class="NavFrame"> |
||
<div class="NavHead" style="text-align: left">Conjugation of ]=] .. m_links.full_link(nil, pagename, lang, nil, "term", nil, {}, false) .. (#data.title > 0 and " (" .. table.concat(data.title, ", ") .. ")" or "") .. [=[</div> |
|||
{| style="background: #EEE; border: 1px solid #AAA;" class="inflection-table vsSwitcher vsToggleCategory-inflection" |
|||
<div class="NavContent"> |
|||
⚫ | |||
{| style="background:#F0F0F0;width:100%" class="inflection-table"]=] .. make_indc_rows(data) .. make_subj_rows(data) .. make_impr_rows(data) .. make_nonfin_rows(data) .. [=[ |
|||
|- class="vsShow" |
|||
! style="background: #CCC" | present active indicative |
|||
| style="min-width: 12em;" | ]=] .. show_form(data.forms["1s_pres_actv_indc"]) .. [=[ |
|||
|- class="vsShow" |
|||
! style="background: #CCC" | present active infinitive |
|||
| ]=] .. show_form(data.forms["pres_actv_inf"]) .. [=[ |
|||
|- class="vsShow" |
|||
! style="background: #CCC" | perfect active indicative |
|||
| ]=] .. show_form(data.forms["1s_perf_actv_indc"]) .. [=[ |
|||
|- class="vsShow" |
|||
! style="background: #CCC" | perfect passive participle |
|||
| ]=] .. show_form(data.forms["perf_pasv_ptc"]) .. [=[ |
|||
]=] .. make_indc_rows(data) .. make_subj_rows(data) .. make_impr_rows(data) .. make_nonfin_rows(data) .. [=[ |
|||
|} |
|} |
||
</div></div>]=] |
|||
end |
end |
||
Line 2,428: | Line 2,411: | ||
if data.forms[t .. "_" .. v .. "_indc"] then |
if data.forms[t .. "_" .. v .. "_indc"] then |
||
row = "\n! colspan=\"6\" style=\"background: # |
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_indc"] |
||
nonempty = true |
nonempty = true |
||
notempty = true |
notempty = true |
||
Line 2,450: | Line 2,433: | ||
if nonempty and #group > 0 then |
if nonempty and #group > 0 then |
||
table.insert(indc, "\n|- |
table.insert(indc, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#c0cfe4\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-")) |
||
end |
end |
||
end |
end |
||
Line 2,457: | Line 2,440: | ||
[=[ |
[=[ |
||
⚫ | |||
|- class="vsHide" |
|||
! colspan="2" rowspan="2" style="background:#c0cfe4" | indicative |
! colspan="2" rowspan="2" style="background:#c0cfe4" | indicative |
||
! colspan="3" style="background:#c0cfe4" | ''singular'' |
! colspan="3" style="background:#c0cfe4" | ''singular'' |
||
! colspan="3" style="background:#c0cfe4" | ''plural'' |
! colspan="3" style="background:#c0cfe4" | ''plural'' |
||
|- |
|||
|- class="vsHide" |
|||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[first person|first]] |
||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[second person|second]] |
||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[third person|third]] |
||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[first person|first]] |
||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[second person|second]] |
||
! style="background:#c0cfe4; |
! style="background:#c0cfe4;width:12.5%" | [[third person|third]] |
||
]=] .. table.concat(indc) |
]=] .. table.concat(indc) |
||
Line 2,484: | Line 2,467: | ||
if data.forms[t .. "_" .. v .. "_subj"] then |
if data.forms[t .. "_" .. v .. "_subj"] then |
||
row = "\n! colspan=\"6\" style=\"background: # |
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_subj"] |
||
nonempty = true |
nonempty = true |
||
notempty = true |
notempty = true |
||
Line 2,506: | Line 2,489: | ||
if nonempty and #group > 0 then |
if nonempty and #group > 0 then |
||
table.insert(subj, "\n|- |
table.insert(subj, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#c0e4c0\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-")) |
||
end |
end |
||
end |
end |
||
Line 2,513: | Line 2,496: | ||
[=[ |
[=[ |
||
|- |
|||
|- class="vsHide" |
|||
! colspan="2" rowspan="2" style="background:#c0e4c0" | subjunctive |
! colspan="2" rowspan="2" style="background:#c0e4c0" | subjunctive |
||
! colspan="3" style="background:#c0e4c0" | ''singular'' |
! colspan="3" style="background:#c0e4c0" | ''singular'' |
||
! colspan="3" style="background:#c0e4c0" | ''plural'' |
! colspan="3" style="background:#c0e4c0" | ''plural'' |
||
|- |
|||
|- class="vsHide" |
|||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[first person|first]] |
||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[second person|second]] |
||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[third person|third]] |
||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[first person|first]] |
||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[second person|second]] |
||
! style="background:#c0e4c0; |
! style="background:#c0e4c0;width:12.5%" | [[third person|third]] |
||
]=] .. table.concat(subj) |
]=] .. table.concat(subj) |
||
Line 2,540: | Line 2,523: | ||
if data.forms[t .. "_" .. v .. "_impr"] then |
if data.forms[t .. "_" .. v .. "_impr"] then |
||
row = "\n! colspan=\"6\" style=\"background: # |
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_impr"] |
||
nonempty = true |
nonempty = true |
||
else |
else |
||
Line 2,559: | Line 2,542: | ||
if nonempty and #group > 0 then |
if nonempty and #group > 0 then |
||
has_impr = true |
has_impr = true |
||
table.insert(impr, "\n|- |
table.insert(impr, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#e4d4c0\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-")) |
||
end |
end |
||
end |
end |
||
Line 2,569: | Line 2,552: | ||
[=[ |
[=[ |
||
|- |
|||
|- class="vsHide" |
|||
! colspan="2" rowspan="2" style="background:#e4d4c0" | imperative |
! colspan="2" rowspan="2" style="background:#e4d4c0" | imperative |
||
! colspan="3" style="background:#e4d4c0" | ''singular'' |
! colspan="3" style="background:#e4d4c0" | ''singular'' |
||
! colspan="3" style="background:#e4d4c0" | ''plural'' |
! colspan="3" style="background:#e4d4c0" | ''plural'' |
||
|- |
|||
|- class="vsHide" |
|||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[first person|first]] |
||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[second person|second]] |
||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[third person|third]] |
||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[first person|first]] |
||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[second person|second]] |
||
! style="background:#e4d4c0; |
! style="background:#e4d4c0;width:12.5%" | [[third person|third]] |
||
]=] .. table.concat(impr) |
]=] .. table.concat(impr) |
||
end |
end |
||
Line 2,594: | Line 2,577: | ||
row = table.concat(row) |
row = table.concat(row) |
||
table.insert(nonfin, "\n|- |
table.insert(nonfin, "\n|-\n! style=\"background:#e2e4c0\" colspan=\"2\" | " .. nonfins[f] .. row) |
||
end |
end |
||
Line 2,600: | Line 2,583: | ||
[=[ |
[=[ |
||
|- |
|||
|- class="vsHide" |
|||
! colspan="2" rowspan="2" style="background:#e2e4c0" | non-finite forms |
! colspan="2" rowspan="2" style="background:#e2e4c0" | non-finite forms |
||
! colspan="3" style="background:#e2e4c0" | active |
! colspan="3" style="background:#e2e4c0" | active |
||
! colspan="3" style="background:#e2e4c0" | passive |
! colspan="3" style="background:#e2e4c0" | passive |
||
|- |
|||
|- class="vsHide" |
|||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | present |
||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | perfect |
||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | future |
||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | present |
||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | perfect |
||
! style="background:#e2e4c0; |
! style="background:#e2e4c0;width:13%" | future]=] .. table.concat(nonfin) |
||
end |
end |
Revision as of 07:38, 24 June 2015
- The following documentation is located at Module:la-verb/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module is used for the various Latin verb inflection tables.
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("la")
NAMESPACE = NAMESPACE or mw.title.getCurrentTitle().nsText
PAGENAME = PAGENAME or mw.title.getCurrentTitle().text
-- Conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb.
-- They are defined further down.
local conjugations = {}
-- Check if this verb is reconstructed
-- i.e. the pagename is Appendix:Latin/...
local reconstructed = (NAMESPACE == "Appendix") and mw.ustring.find(PAGENAME,"^Latin/")
-- 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
local subtype = frame.args["type"] or args["type"]; if subtype == nil then subtype = '' end
local sync_perf = args["sync_perf"]; if sync_perf == nil then sync_perf = '' end
NAMESPACE = mw.title.getCurrentTitle().nsText
if not conjugations[conj_type] then
error("Unknown conjugation type '" .. conj_type .. "'")
end
local data = {forms = {}, title = {}, categories = {}}
local typeinfo = {conj_type = conj_type, subtype = subtype, sync_perf = sync_perf}
-- Generate the verb forms
conjugations[conj_type](args, data, typeinfo)
-- Post-process the forms
postprocess(data, typeinfo)
-- Check if the links to the verb forms exist
checkexist(data)
-- Check if the verb is irregular
if not conj_type == 'irreg' then checkirregular(args, data) end
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
function postprocess(data, typeinfo)
-- Add information for the passive perfective forms
if data.forms["perf_pasv_ptc"] then
local ppplink = m_links.full_link(data.forms["perf_pasv_ptc"], nil, lang, nil, "term", nil, {}, false)
local sumlink = m_links.full_link("sum", nil, lang, nil, "term", nil, {}, false)
data.forms["perf_pasv_indc"] = ppplink .. " + present active indicative of " .. sumlink
data.forms["futp_pasv_indc"] = ppplink .. " + future active indicative of " .. sumlink
data.forms["plup_pasv_indc"] = ppplink .. " + imperfect active indicative of " .. sumlink
data.forms["perf_pasv_subj"] = ppplink .. " + present active subjunctive of " .. sumlink
data.forms["plup_pasv_subj"] = ppplink .. " + imperfect active subjunctive of " .. sumlink
end
-- Types of irregularity related primarily to the active.
-- These could in theory be combined with those related to the passive and imperative,
-- i.e. there's no reason there couldn't be an impersonal deponent verb with no imperatives.
if typeinfo.subtype == "impers" then
-- Impersonal verbs have only third-person singular forms.
table.insert(data.title, "[[impersonal]]")
table.insert(data.categories, "Latin impersonal verbs")
-- Remove all non-3sg forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") or key:find("3p") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "impers-nopass" then
-- Impersonal verbs have only third-person singular forms.
table.insert(data.title, "[[impersonal]]")
table.insert(data.title, "active only")
table.insert(data.categories, "Latin impersonal verbs")
table.insert(data.categories, "Latin active-only verbs")
-- Remove all non-3sg and passive forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") or key:find("3p") or key:find("pasv") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "impers-depon" then
-- Impersonal verbs have only third-person singular forms.
table.insert(data.title, "[[impersonal]]")
table.insert(data.title, "[[deponent]]")
table.insert(data.categories, "Latin impersonal verbs")
table.insert(data.categories, "Latin deponent verbs")
-- Remove all non-3sg and active forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") or key:find("3p") or key:find("actv") and key ~= "pres_actv_ptc" and key ~= "futr_actv_ptc" then
data.forms[key] = nil
end
end
-- Change passive to active
for key, form in pairs(data.forms) do
if key:find("pasv") and key ~= "pres_pasv_ptc" and key ~= "futr_pasv_ptc" then
data.forms[key:gsub("pasv", "actv")] = form
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "3only" then
table.insert(data.title, "[[impersonal]]")
table.insert(data.categories, "Latin impersonal verbs")
-- Remove all non-3sg forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "3only-nopass" then
table.insert(data.title, "[[impersonal]]")
table.insert(data.title, "active only")
table.insert(data.categories, "Latin impersonal verbs")
table.insert(data.categories, "Latin active-only verbs")
-- Remove all non-3sg and passive forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") or key:find("pasv") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "3only-depon" then
table.insert(data.title, "[[impersonal]]")
table.insert(data.title, "[[deponent]]")
table.insert(data.categories, "Latin impersonal verbs")
table.insert(data.categories, "Latin deponent verbs")
-- Remove all non-3sg and active forms
for key, form in pairs(data.forms) do
if key:find("[12][sp]") or key:find("actv") and key ~= "pres_actv_ptc" and key ~= "futr_actv_ptc" then
data.forms[key] = nil
end
end
-- Change passive to active
for key, form in pairs(data.forms) do
if key:find("pasv") and key ~= "pres_pasv_ptc" and key ~= "futr_pasv_ptc" then
data.forms[key:gsub("pasv", "actv")] = form
data.forms[key] = nil
end
end
end
-- Handle certain irregularities in the passive
if typeinfo.subtype == "depon" then
-- Deponent verbs use passive forms with active meaning
table.insert(data.title, "[[deponent]]")
table.insert(data.categories, "Latin deponent verbs")
-- Remove active forms
for key, form in pairs(data.forms) do
if key:find("actv") and key ~= "pres_actv_ptc" and key ~= "futr_actv_ptc" and key ~= "futr_actv_inf" then
data.forms[key] = nil
end
end
-- Change passive to active
for key, form in pairs(data.forms) do
if key:find("pasv") and key ~= "pres_pasv_ptc" and key ~= "futr_pasv_ptc" and key ~= "futr_pasv_inf" then
data.forms[key:gsub("pasv", "actv")] = form
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "semi-depon" then
-- Semi-deponent verbs use perfective passive forms with active meaning,
-- and have no imperfective passive
table.insert(data.title, "[[semi-deponent]]")
table.insert(data.categories, "Latin semi-deponent verbs")
-- Remove perfective active and imperfective passive forms
for key, form in pairs(data.forms) do
if key:find("perf_actv") or key:find("plup_actv") or key:find("futp_actv") or key:find("pres_pasv") or key:find("impf_pasv") or key:find("futr_pasv") then
data.forms[key] = nil
end
end
-- Change perfective passive to active
for key, form in pairs(data.forms) do
if key:find("perf_pasv") or key:find("plup_pasv") or key:find("futp_pasv") then
data.forms[key:gsub("pasv", "actv")] = form
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "depon-noperf" then --(e.g. calvor, -ī)
table.insert(data.title, "[[deponent]]")
table.insert(data.categories, "Latin deponent verbs")
table.insert(data.title, "[[defective verb|defective]]")
table.insert(data.categories, "Latin defective verbs")
-- Remove active forms
for key, form in pairs(data.forms) do
if key:find("actv") and key ~= "pres_actv_ptc" and key ~= "futr_actv_ptc" and key ~= "futr_actv_inf" then
data.forms[key] = nil
end
end
-- Change passive to active
for key, form in pairs(data.forms) do
if key:find("pasv") and key ~= "pres_pasv_ptc" and key ~= "futr_pasv_ptc" and key ~= "futr_pasv_inf" then
data.forms[key:gsub("pasv", "actv")] = form
data.forms[key] = nil
end
end
-- Remove all perfect forms
for key, form in pairs(data.forms) do
if key:find("perf") or key:find("plup") or key:find("futp") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "noperf" then
-- Some verbs have no perfect forms (e.g. inalbēscō, -ěre)
table.insert(data.title, "[[defective verb|defective]]")
table.insert(data.categories, "Latin defective verbs")
-- Remove all perfect forms
for key, form in pairs(data.forms) do
if key:find("perf") or key:find("plup") or key:find("futp") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "no-actv-perf" then
-- Some verbs have no active perfect forms (e.g. interstinguō, -ěre)
table.insert(data.title, "no active perfect forms")
table.insert(data.categories, "Latin defective verbs")
-- Remove all active perfect forms
for key, form in pairs(data.forms) do
if key:find("actv") and (key:find("perf") or key:find("plup") or key:find("futp")) then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "no-pasv-perf" then
-- Some verbs have no passive perfect forms (e.g. ārēscō, -ěre)
table.insert(data.title, "no passive perfect forms")
table.insert(data.categories, "Latin defective verbs")
-- Remove all passive perfect forms
for key, form in pairs(data.forms) do
if key:find("pasv") and (key:find("perf") or key:find("plup") or key:find("futp")) then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "nopass-noperf" then
-- Some verbs have no passive and no perfect forms (e.g. albēscō, -ěre)
table.insert(data.title, "[[defective verb|defective]]")
table.insert(data.title, "active only")
table.insert(data.categories, "Latin defective verbs")
table.insert(data.categories, "Latin active-only verbs")
-- Remove all passive and all perfect forms
for key, form in pairs(data.forms) do
if key:find("pasv") or key:find("perf") or key:find("plup") or key:find("futp") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "nopass" then
-- Some verbs have no passive forms (usually intransitive)
table.insert(data.title, "active only")
table.insert(data.categories, "Latin active-only verbs")
-- Remove all passive forms
for key, form in pairs(data.forms) do
if key:find("pasv") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "pass-3only" then
-- Some verbs have only third-person forms in the passive
table.insert(data.title, "only third-person forms in passive")
table.insert(data.categories, "Latin verbs with third-person passive")
-- Remove all non-3rd-person passive forms and all passive imperatives
for key, form in pairs(data.forms) do
if key:find("pasv") and (key:find("[12][sp]") or key:find("impr")) then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "pass-impers" then
-- Some verbs are impersonal in the passive
table.insert(data.title, "[[impersonal]] in passive")
table.insert(data.categories, "Latin verbs with impersonal passive")
-- Remove all non-3sg passive forms
for key, form in pairs(data.forms) do
if key:find("pasv") and (key:find("[12][sp]") or key:find("3p") or key:find("impr")) or key:find("futr_pasv_inf") then
data.forms[key] = nil
end
end
elseif typeinfo.subtype == "perf-as-pres" then
-- Perfect forms as present tense
table.insert(data.title, "active only")
table.insert(data.title, "[[perfect]] forms as present")
table.insert(data.title, "pluperfect as imperfect")
table.insert(data.title, "future perfect as future")
table.insert(data.categories, "Latin defective verbs")
table.insert(data.categories, "Latin active-only verbs")
-- Change perfect passive participle to perfect active participle
data.forms["perf_actv_ptc"] = data.forms["perf_pasv_ptc"]
-- Change perfect active infinitive to present active infinitive
data.forms["pres_actv_inf"] = data.forms["perf_actv_inf"]
-- Remove passive forms
-- Remove present active, imperfect active and future active forms
for key, form in pairs(data.forms) do
if key ~= "futr_actv_inf" and key ~= "futr_actv_ptc" and (key:find("pasv") or key:find("pres") and key ~= "pres_actv_inf" or key:find("impf") or key:find("futr")) then
data.forms[key] = nil
end
end
-- Change perfect forms to non-perfect forms
for key, form in pairs(data.forms) do
if key:find("perf") and key ~= "perf_actv_ptc" then
data.forms[key:gsub("perf", "pres")] = form
data.forms[key] = nil
elseif key:find("plup") then
data.forms[key:gsub("plup", "impf")] = form
data.forms[key] = nil
elseif key:find("futp") then
data.forms[key:gsub("futp", "futr")] = form
data.forms[key] = nil
end
end
data.forms["pres_actv_ptc"] = nil
elseif typeinfo.subtype == "memini" then
-- Perfect forms as present tense
table.insert(data.title, "active only")
table.insert(data.title, "[[perfect]] forms as present")
table.insert(data.title, "pluperfect as imperfect")
table.insert(data.title, "future perfect as future")
table.insert(data.categories, "Latin defective verbs")
-- Remove passive forms
-- Remove present active, imperfect active and future active forms
-- Except for future active imperatives
for key, form in pairs(data.forms) do
if key:find("pasv") or key:find("pres") or key:find("impf") or key:find("futr") or key:find("ptc") then
data.forms[key] = nil
end
end
-- Change perfect forms to non-perfect forms
for key, form in pairs(data.forms) do
if key:find("perf") and key ~= "perf_actv_ptc" then
data.forms[key:gsub("perf", "pres")] = form
data.forms[key] = nil
elseif key:find("plup") then
data.forms[key:gsub("plup", "impf")] = form
data.forms[key] = nil
elseif key:find("futp") then
data.forms[key:gsub("futp", "futr")] = form
data.forms[key] = nil
end
end
-- Add imperative forms
data.forms["2s_futr_actv_impr"] = "mementō"
data.forms["2p_futr_actv_impr"] = "mementōte"
end
-- Handle certain irregularities in the imperative
if typeinfo.subtype == "noimp" then
-- Some verbs have no imperatives
table.insert(data.title, "no [[imperative]]s")
end
-- Add the ancient future_passive_participle of certain verbs
if typeinfo.pres_stem == "lāb" then
data.forms["futr_pasv_ptc"] = "lābundus"
elseif typeinfo.pres_stem == "collāb" then
data.forms["futr_pasv_ptc"] = "collābundus"
elseif typeinfo.pres_stem == "illāb" then
data.forms["futr_pasv_ptc"] = "illābundus"
elseif typeinfo.pres_stem == "relāb" then
data.forms["futr_pasv_ptc"] = "relābundus"
end
end
--[=[
Conjugation functions
]=]--
function get_regular_stems(args, typeinfo)
-- Get the parameters
if typeinfo.subtype:find("depon") then
-- Deponent and semi-deponent verbs don't have the perfective principal part
typeinfo.pres_stem = args[1]; if typeinfo.pres_stem == "" then typeinfo.pres_stem = nil end
typeinfo.perf_stem = nil
typeinfo.supine_stem = args[2]; if typeinfo.supine_stem == "" then typeinfo.supine_stem = nil end
else
typeinfo.pres_stem = args[1]; if typeinfo.pres_stem == "" then typeinfo.pres_stem = nil end
typeinfo.perf_stem = args[2]; if typeinfo.perf_stem == "" then typeinfo.perf_stem = nil end
typeinfo.supine_stem = args[3]; if typeinfo.supine_stem == "" then typeinfo.supine_stem = nil end
end
if (typeinfo.subtype == "perf-as-pres" or typeinfo.subtype == "memini") and not typeinfo.pres_stem then typeinfo.pres_stem = "whatever" end
-- Prepare stems
if not typeinfo.pres_stem then
if NAMESPACE == "Template" then
typeinfo.pres_stem = "-"
else
error("Present stem has not been provided")
end
end
if not typeinfo.perf_stem and not typeinfo.subtype:find("depon") and not typeinfo.subtype:find("noperf") then
if typeinfo.conj_type == "1st" then
typeinfo.perf_stem = typeinfo.pres_stem .. "āv"
elseif NAMESPACE == "Template" then
typeinfo.perf_stem = "-"
else
error("Perfect stem has not been provided")
end
end
if not typeinfo.supine_stem and not typeinfo.subtype:find("nopass") and not typeinfo.subtype:find("noperf") and typeinfo.subtype ~= "no-pasv-perf" and typeinfo.subtype ~= "memini" and typeinfo.subtype ~= "pass-3only" then
if typeinfo.conj_type == "1st" then
typeinfo.supine_stem = typeinfo.pres_stem .. "āt"
elseif NAMESPACE == "Template" then
typeinfo.supine_stem = "-"
else
error("Supine stem has not been provided")
end
end
end
conjugations["1st"] = function(args, data, typeinfo)
get_regular_stems(args, typeinfo)
table.insert(data.title, "[[Appendix:Latin first conjugation|first conjugation]]")
table.insert(data.categories, "Latin first conjugation verbs")
if typeinfo.perf_stem then
if typeinfo.perf_stem == typeinfo.pres_stem .. "āv" then
table.insert(data.categories, "Latin first conjugation verbs with perfect in -av-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "u" then
table.insert(data.categories, "Latin first conjugation verbs with perfect in -u-")
elseif typeinfo.perf_stem == typeinfo.pres_stem then
table.insert(data.categories, "Latin first conjugation verbs with suffixless perfect")
else
table.insert(data.categories, "Latin first conjugation verbs with irregular perfect")
end
end
make_pres_1st(data, typeinfo.pres_stem)
make_perf(data, typeinfo.perf_stem)
make_supine(data, typeinfo.supine_stem)
end
conjugations["2nd"] = function(args, data, typeinfo)
get_regular_stems(args, typeinfo)
table.insert(data.title, "[[Appendix:Latin second conjugation|second conjugation]]")
table.insert(data.categories, "Latin second conjugation verbs")
if typeinfo.perf_stem then
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"qu","1")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"qu","1")
apocope = mw.ustring.gsub(typeinfo.pres_stem,"[bcdfghjklmnp1rstvwxz]+$","")
if typeinfo.perf_stem == typeinfo.pres_stem .. "ēv" then
table.insert(data.categories, "Latin second conjugation verbs with perfect in -ev-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "u" then
table.insert(data.categories, "Latin second conjugation verbs with perfect in -u-")
elseif typeinfo.perf_stem == typeinfo.pres_stem then
table.insert(data.categories, "Latin second conjugation verbs with suffixless perfect")
elseif typeinfo.perf_stem == apocope .. "x" or typeinfo.perf_stem == apocope .. "s" then
table.insert(data.categories, "Latin second conjugation verbs with perfect in -s- or -x-")
else
table.insert(data.categories, "Latin second conjugation verbs with irregular perfect")
end
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"1","qu")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"1","qu")
end
make_pres_2nd(data, typeinfo.pres_stem)
make_perf(data, typeinfo.perf_stem)
make_supine(data, typeinfo.supine_stem)
end
conjugations["3rd"] = function(args, data, typeinfo)
get_regular_stems(args, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]]")
table.insert(data.categories, "Latin third conjugation verbs")
if typeinfo.perf_stem then
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"qu","1")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"qu","1")
apocope = mw.ustring.gsub(typeinfo.pres_stem,"[bcdfghjklmnp1rstvwxz]+$","")
if typeinfo.perf_stem == typeinfo.pres_stem .. "āv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -av-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "ēv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -ev-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "īv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -iv-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "u" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -u-")
elseif typeinfo.perf_stem == typeinfo.pres_stem then
table.insert(data.categories, "Latin third conjugation verbs with suffixless perfect")
elseif typeinfo.perf_stem == apocope .. "x" or typeinfo.perf_stem == apocope .. "s" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -s- or -x-")
else
table.insert(data.categories, "Latin third conjugation verbs with irregular perfect")
end
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"1","qu")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"1","qu")
end
if typeinfo.pres_stem and mw.ustring.match(typeinfo.pres_stem,"[āēīōū]sc$") then
table.insert(data.categories, "Latin inchoative verbs")
end
make_pres_3rd(data, typeinfo.pres_stem)
make_perf(data, typeinfo.perf_stem)
make_supine(data, typeinfo.supine_stem)
end
conjugations["3rd-io"] = function(args, data, typeinfo)
get_regular_stems(args, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]] ''iō''-variant")
table.insert(data.categories, "Latin third conjugation verbs")
if typeinfo.perf_stem then
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"qu","1")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"qu","1")
apocope = mw.ustring.gsub(typeinfo.pres_stem,"[bcdfghjklmnp1rstvwxz]+$","")
if typeinfo.perf_stem == typeinfo.pres_stem .. "āv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -av-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "ēv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -ev-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "īv" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -iv-")
elseif typeinfo.perf_stem == typeinfo.pres_stem .. "u" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -u-")
elseif typeinfo.perf_stem == typeinfo.pres_stem then
table.insert(data.categories, "Latin third conjugation verbs with suffixless perfect")
elseif typeinfo.perf_stem == apocope .. "x" or typeinfo.perf_stem == apocope .. "s" then
table.insert(data.categories, "Latin third conjugation verbs with perfect in -s- or -x-")
else
table.insert(data.categories, "Latin third conjugation verbs with irregular perfect")
end
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"1","qu")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"1","qu")
end
make_pres_3rd_io(data, typeinfo.pres_stem)
make_perf(data, typeinfo.perf_stem)
make_supine(data, typeinfo.supine_stem)
end
conjugations["4th"] = function(args, data, typeinfo)
get_regular_stems(args, typeinfo)
table.insert(data.title, "[[Appendix:Latin fourth conjugation|fourth conjugation]]")
table.insert(data.categories, "Latin fourth conjugation verbs")
if typeinfo.perf_stem then
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"qu","1")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"qu","1")
apocope = mw.ustring.gsub(typeinfo.pres_stem,"[bcdfghjklmnp1rstvwxz]+$","")
clone = mw.ustring.gsub(typeinfo.perf_stem,"%.","")
if clone == typeinfo.pres_stem .. "īv" then
table.insert(data.categories, "Latin fourth conjugation verbs with perfect in -iv-")
elseif clone == typeinfo.pres_stem .. "u" then
table.insert(data.categories, "Latin fourth conjugation verbs with perfect in -u-")
elseif clone == typeinfo.pres_stem then
table.insert(data.categories, "Latin fourth conjugation verbs with suffixless perfect")
elseif clone == apocope .. "x" or clone == apocope .. "s" then
table.insert(data.categories, "Latin fourth conjugation verbs with perfect in -s- or -x-")
else
table.insert(data.categories, "Latin fourth conjugation verbs with irregular perfect")
end
typeinfo.pres_stem = mw.ustring.gsub(typeinfo.pres_stem,"1","qu")
typeinfo.perf_stem = mw.ustring.gsub(typeinfo.perf_stem,"1","qu")
end
make_pres_4th(data, typeinfo.pres_stem)
make_perf(data, typeinfo.perf_stem)
make_supine(data, typeinfo.supine_stem)
if data.forms["1s_pres_actv_indc"] == "serviō" or data.forms["1s_pres_actv_indc"] == "saeviō" then
data.forms["1s_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbam", typeinfo.pres_stem .. "ībam"}
data.forms["2s_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbās", typeinfo.pres_stem .. "ībās"}
data.forms["3s_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbat", typeinfo.pres_stem .. "ībat"}
data.forms["1p_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbāmus", typeinfo.pres_stem .. "ībāmus"}
data.forms["2p_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbātis", typeinfo.pres_stem .. "ībātis"}
data.forms["3p_impf_actv_indc"] = {typeinfo.pres_stem .. "iēbant", typeinfo.pres_stem .. "ībant"}
data.forms["1s_futr_actv_indc"] = {typeinfo.pres_stem .. "iam", typeinfo.pres_stem .. "ībō"}
data.forms["2s_futr_actv_indc"] = {typeinfo.pres_stem .. "iēs", typeinfo.pres_stem .. "ībis"}
data.forms["3s_futr_actv_indc"] = {typeinfo.pres_stem .. "iet", typeinfo.pres_stem .. "ībit"}
data.forms["1p_futr_actv_indc"] = {typeinfo.pres_stem .. "iēmus", typeinfo.pres_stem .. "ībimus"}
data.forms["2p_futr_actv_indc"] = {typeinfo.pres_stem .. "iētis", typeinfo.pres_stem .. "ībitis"}
data.forms["3p_futr_actv_indc"] = {typeinfo.pres_stem .. "ient", typeinfo.pres_stem .. "ībunt"}
end
if typeinfo.sync_perf == "y" then
for key,form in pairs(data.forms) do
if key~="3p_perf_actv_indc" and key:find("perf") or key:find("plup") or key:find("futp") then
form = mw.ustring.gsub(form,"%.īvī","iī")
form = mw.ustring.gsub(form,"%.īvi","ī")
form = mw.ustring.gsub(form,"%.īve","ī")
form = mw.ustring.gsub(form,"%.īvē","ē")
data.forms[key] = form
end
end
for index,form in pairs(data.forms["3p_perf_actv_indc"]) do
form = mw.ustring.gsub(form,"%.īvī","iī")
form = mw.ustring.gsub(form,"%.īvi","ī")
form = mw.ustring.gsub(form,"%.īve","ī")
form = mw.ustring.gsub(form,"%.īvē","ē")
data.forms["3p_perf_actv_indc"][index] = form
end
end
if typeinfo.sync_perf == "yn" then
for key,form in pairs(data.forms) do
if key~="3p_perf_actv_indc" and key:find("perf") or key:find("plup") or key:find("futp") then
sync = mw.ustring.gsub(form,"%.īvī","iī")
sync = mw.ustring.gsub(sync,"%.īvi","ī")
sync = mw.ustring.gsub(sync,"%.īve","ī")
sync = mw.ustring.gsub(sync,"%.īvē","ē")
form = mw.ustring.gsub(form,"%.","")
if form~=sync then data.forms[key] = {form,sync} end
end
end
temp = {}
for _,form in ipairs(data.forms["3p_perf_actv_indc"]) do
clone = mw.ustring.gsub(form,"%.","")
table.insert(temp,clone)
form = mw.ustring.gsub(form,"%.īvī","iī")
form = mw.ustring.gsub(form,"%.īvi","ī")
form = mw.ustring.gsub(form,"%.īve","ī")
form = mw.ustring.gsub(form,"%.īvē","ē")
table.insert(temp,form)
end
data.forms["3p_perf_actv_indc"] = temp
end
end
-- Irregular conjugations
local irreg_conjugations = {}
conjugations["irreg"] = function(args, data, typeinfo)
local verb = args[1]; if verb == "" then verb = nil end
local prefix = args[2]; if prefix == "" then prefix = nil end
if not verb then
if NAMESPACE == "Template" then
verb = "sum"
else
error("The verb to be conjugated has not been specified.")
end
end
if not irreg_conjugations[verb] then
error("The verb '" .. verb .. "' is not recognised as an irregular verb.")
end
typeinfo.verb = verb
typeinfo.prefix = prefix
-- Generate the verb forms
irreg_conjugations[verb](args, data, typeinfo)
end
irreg_conjugations["aio"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]] iō-variant")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.title, "active only")
table.insert(data.title, "highly [[defective verb|defective]]")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin active-only verbs")
table.insert(data.categories, "Latin defective verbs")
local prefix = typeinfo.prefix or ""
data.forms["1s_pres_actv_indc"] = {prefix .. "āiō", prefix .. "aiiō"}
data.forms["2s_pres_actv_indc"] = {prefix .. "āis", prefix .. "ais"}
data.forms["3s_pres_actv_indc"] = prefix .. "ait"
data.forms["3p_pres_actv_indc"] = {prefix .. "āiunt", prefix .. "aiiunt"}
data.forms["1s_impf_actv_indc"] = {prefix .. "aiēbam", prefix .. "āībam"}
data.forms["2s_impf_actv_indc"] = {prefix .. "aiēbās", prefix .. "āībās"}
data.forms["3s_impf_actv_indc"] = {prefix .. "aiēbat", prefix .. "āībat"}
data.forms["1p_impf_actv_indc"] = {prefix .. "aiēbāmus", prefix .. "āībāmus"}
data.forms["2p_impf_actv_indc"] = {prefix .. "aiēbātis", prefix .. "āībātis"}
data.forms["3p_impf_actv_indc"] = {prefix .. "aiēbant", prefix .. "āībant"}
data.forms["2s_perf_actv_indc"] = prefix .. "aistī"
data.forms["3s_perf_actv_indc"] = prefix .. "ait"
data.forms["2s_pres_actv_subj"] = prefix .. "āiās"
data.forms["3s_pres_actv_subj"] = prefix .. "āiat"
data.forms["3p_pres_actv_subj"] = prefix .. "āiant"
data.forms["2s_pres_actv_impr"] = prefix .. "aï"
data.forms["pres_actv_inf"] = prefix .. "āiere"
data.forms["pres_actv_ptc"] = prefix .. "aiēns"
end
irreg_conjugations["dico"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]]")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]] short imperative")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
local prefix = typeinfo.prefix or ""
make_pres_3rd(data, prefix .. "dīc")
make_perf(data, prefix .. "dīx")
make_supine(data, prefix .. "dict")
data.forms["2s_pres_actv_impr"] = {prefix .. "dīc", data.forms["2s_pres_actv_impr"]}
end
irreg_conjugations["do"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin first conjugation|first conjugation]]")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]] short ''a'' in most forms except " .. m_links.full_link(nil, "dās", lang, nil, "term", nil, {}, false) .. " and " .. m_links.full_link(nil, "dā", lang, nil, "term", nil, {}, false))
table.insert(data.categories, "Latin first conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
local prefix = typeinfo.prefix or ""
make_perf(data, prefix .. "ded")
make_supine(data, prefix .. "dat")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = prefix .. "dō"
data.forms["2s_pres_actv_indc"] = prefix .. "dās"
data.forms["3s_pres_actv_indc"] = prefix .. "dat"
data.forms["1p_pres_actv_indc"] = prefix .. "damus"
data.forms["2p_pres_actv_indc"] = prefix .. "datis"
data.forms["3p_pres_actv_indc"] = prefix .. "dant"
data.forms["1s_impf_actv_indc"] = prefix .. "dabam"
data.forms["2s_impf_actv_indc"] = prefix .. "dabās"
data.forms["3s_impf_actv_indc"] = prefix .. "dabat"
data.forms["1p_impf_actv_indc"] = prefix .. "dabāmus"
data.forms["2p_impf_actv_indc"] = prefix .. "dabātis"
data.forms["3p_impf_actv_indc"] = prefix .. "dabant"
data.forms["1s_futr_actv_indc"] = prefix .. "dabō"
data.forms["2s_futr_actv_indc"] = prefix .. "dabis"
data.forms["3s_futr_actv_indc"] = prefix .. "dabit"
data.forms["1p_futr_actv_indc"] = prefix .. "dabimus"
data.forms["2p_futr_actv_indc"] = prefix .. "dabitis"
data.forms["3p_futr_actv_indc"] = prefix .. "dabunt"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = prefix .. "dor"
data.forms["2s_pres_pasv_indc"] = {prefix .. "daris", prefix .. "dare"}
data.forms["3s_pres_pasv_indc"] = prefix .. "datur"
data.forms["1p_pres_pasv_indc"] = prefix .. "damur"
data.forms["2p_pres_pasv_indc"] = prefix .. "daminī"
data.forms["3p_pres_pasv_indc"] = prefix .. "dantur"
data.forms["1s_impf_pasv_indc"] = prefix .. "dabar"
data.forms["2s_impf_pasv_indc"] = {prefix .. "dabāris", prefix .. "dabāre"}
data.forms["3s_impf_pasv_indc"] = prefix .. "dabātur"
data.forms["1p_impf_pasv_indc"] = prefix .. "dabāmur"
data.forms["2p_impf_pasv_indc"] = prefix .. "dabāminī"
data.forms["3p_impf_pasv_indc"] = prefix .. "dabantur"
data.forms["1s_futr_pasv_indc"] = prefix .. "dabor"
data.forms["2s_futr_pasv_indc"] = {prefix .. "daberis", prefix .. "dabere"}
data.forms["3s_futr_pasv_indc"] = prefix .. "dabitur"
data.forms["1p_futr_pasv_indc"] = prefix .. "dabimur"
data.forms["2p_futr_pasv_indc"] = prefix .. "dabiminī"
data.forms["3p_futr_pasv_indc"] = prefix .. "dabuntur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = prefix .. "dem"
data.forms["2s_pres_actv_subj"] = prefix .. "dēs"
data.forms["3s_pres_actv_subj"] = prefix .. "det"
data.forms["1p_pres_actv_subj"] = prefix .. "dēmus"
data.forms["2p_pres_actv_subj"] = prefix .. "dētis"
data.forms["3p_pres_actv_subj"] = prefix .. "dent"
data.forms["1s_impf_actv_subj"] = prefix .. "darem"
data.forms["2s_impf_actv_subj"] = prefix .. "darēs"
data.forms["3s_impf_actv_subj"] = prefix .. "daret"
data.forms["1p_impf_actv_subj"] = prefix .. "darēmus"
data.forms["2p_impf_actv_subj"] = prefix .. "darētis"
data.forms["3p_impf_actv_subj"] = prefix .. "darent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = prefix .. "der"
data.forms["2s_pres_pasv_subj"] = {prefix .. "dēris", prefix .. "dēre"}
data.forms["3s_pres_pasv_subj"] = prefix .. "dētur"
data.forms["1p_pres_pasv_subj"] = prefix .. "dēmur"
data.forms["2p_pres_pasv_subj"] = prefix .. "dēminī"
data.forms["3p_pres_pasv_subj"] = prefix .. "dentur"
data.forms["1s_impf_pasv_subj"] = prefix .. "darer"
data.forms["2s_impf_pasv_subj"] = {prefix .. "darēris", prefix .. "darēre"}
data.forms["3s_impf_pasv_subj"] = prefix .. "darētur"
data.forms["1p_impf_pasv_subj"] = prefix .. "darēmur"
data.forms["2p_impf_pasv_subj"] = prefix .. "darēminī"
data.forms["3p_impf_pasv_subj"] = prefix .. "darentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = prefix .. "dā"
data.forms["2p_pres_actv_impr"] = prefix .. "date"
data.forms["2s_futr_actv_impr"] = prefix .. "datō"
data.forms["3s_futr_actv_impr"] = prefix .. "datō"
data.forms["2p_futr_actv_impr"] = prefix .. "datōte"
data.forms["3p_futr_actv_impr"] = prefix .. "dantō"
data.forms["2s_pres_pasv_impr"] = prefix .. "dare"
data.forms["2p_pres_pasv_impr"] = prefix .. "daminī"
data.forms["2s_futr_pasv_impr"] = prefix .. "dator"
data.forms["3s_futr_pasv_impr"] = prefix .. "dator"
-- no form
data.forms["3p_futr_pasv_impr"] = prefix .. "dantor"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix .. "dare"
data.forms["pres_pasv_inf"] = prefix .. "darī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = prefix .. "dāns"
data.forms["futr_pasv_ptc"] = prefix .. "dandus"
end
irreg_conjugations["duco"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]]")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]] short imperative")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
local prefix = typeinfo.prefix or ""
make_pres_3rd(data, prefix .. "dūc")
make_perf(data, prefix .. "dūx")
make_supine(data, prefix .. "duct")
data.forms["2s_pres_actv_impr"] = {prefix .. "dūc", data.forms["2s_pres_actv_impr"]}
end
irreg_conjugations["edo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]]")
table.insert(data.title, "some [[Appendix:Latin irregular verbs|irregular]] alternative forms")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
make_pres_3rd(data, "ed")
make_perf(data, "ēd")
make_supine(data, "ēs")
-- Active imperfective indicative
data.forms["2s_pres_actv_indc"] = {data.forms["2s_pres_actv_indc"], "ēs"}
data.forms["3s_pres_actv_indc"] = {data.forms["3s_pres_actv_indc"], "ēst"}
data.forms["2p_pres_actv_indc"] = {data.forms["2p_pres_actv_indc"], "ēstis"}
-- Passive imperfective indicative
data.forms["3s_pres_pasv_indc"] = {data.forms["3s_pres_pasv_indc"], "ēstur"}
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = {data.forms["1s_pres_actv_subj"], "edim"}
data.forms["2s_pres_actv_subj"] = {data.forms["2s_pres_actv_subj"], "edīs"}
data.forms["3s_pres_actv_subj"] = {data.forms["3s_pres_actv_subj"], "edit"}
data.forms["1p_pres_actv_subj"] = {data.forms["1p_pres_actv_subj"], "edīmus"}
data.forms["2p_pres_actv_subj"] = {data.forms["2p_pres_actv_subj"], "edītis"}
data.forms["3p_pres_actv_subj"] = {data.forms["3p_pres_actv_subj"], "edint"}
data.forms["1s_impf_actv_subj"] = {data.forms["1s_impf_actv_subj"], "ēssem"}
data.forms["2s_impf_actv_subj"] = {data.forms["2s_impf_actv_subj"], "ēssēs"}
data.forms["3s_impf_actv_subj"] = {data.forms["3s_impf_actv_subj"], "ēsset"}
data.forms["1p_impf_actv_subj"] = {data.forms["1p_impf_actv_subj"], "ēssēmus"}
data.forms["2p_impf_actv_subj"] = {data.forms["2p_impf_actv_subj"], "ēssētis"}
data.forms["3p_impf_actv_subj"] = {data.forms["3p_impf_actv_subj"], "ēssent"}
-- Active imperative
data.forms["2s_pres_actv_impr"] = {data.forms["2s_pres_actv_impr"], "ēs"}
data.forms["2p_pres_actv_impr"] = {data.forms["2p_pres_actv_impr"], "ēste"}
data.forms["2s_futr_actv_impr"] = {data.forms["2s_futr_actv_impr"], "ēstō"}
data.forms["3s_futr_actv_impr"] = {data.forms["3s_futr_actv_impr"], "ēstō"}
data.forms["2p_futr_actv_impr"] = {data.forms["2p_futr_actv_impr"], "ēstōte"}
-- Present infinitives
data.forms["pres_actv_inf"] = {data.forms["pres_actv_inf"], "ēsse"}
end
irreg_conjugations["eo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.categories, "Latin irregular verbs")
local prefix = typeinfo.prefix or ""
make_perf(data, prefix .. "i")
make_supine(data, prefix .. "it")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = prefix .. "eō"
data.forms["2s_pres_actv_indc"] = prefix .. "īs"
data.forms["3s_pres_actv_indc"] = prefix .. "it"
data.forms["1p_pres_actv_indc"] = prefix .. "īmus"
data.forms["2p_pres_actv_indc"] = prefix .. "ītis"
data.forms["3p_pres_actv_indc"] = prefix .. "eunt"
if prefix == "prōd" then data.forms["3p_pres_actv_indc"] = {"prōdeunt","prōdīnunt"} end
data.forms["1s_impf_actv_indc"] = prefix .. "ībam"
data.forms["2s_impf_actv_indc"] = prefix .. "ībās"
data.forms["3s_impf_actv_indc"] = prefix .. "ībat"
data.forms["1p_impf_actv_indc"] = prefix .. "ībāmus"
data.forms["2p_impf_actv_indc"] = prefix .. "ībātis"
data.forms["3p_impf_actv_indc"] = prefix .. "ībant"
data.forms["1s_futr_actv_indc"] = prefix .. "ībō"
data.forms["2s_futr_actv_indc"] = prefix .. "ībis"
data.forms["3s_futr_actv_indc"] = prefix .. "ībit"
data.forms["1p_futr_actv_indc"] = prefix .. "ībimus"
data.forms["2p_futr_actv_indc"] = prefix .. "ībitis"
data.forms["3p_futr_actv_indc"] = prefix .. "ībunt"
-- Active perfective indicative
data.forms["1s_perf_actv_indc"] = {data.forms["1s_perf_actv_indc"], prefix .. "īvī"}
data.forms["2s_perf_actv_indc"] = {prefix .. "istī", prefix .. "ivistī"}
data.forms["3s_perf_actv_indc"] = {data.forms["3s_perf_actv_indc"], prefix .. "ivit"}
data.forms["2p_perf_actv_indc"] = prefix .. "istis"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = prefix .. "eor"
data.forms["2s_pres_pasv_indc"] = {prefix .. "īris", prefix .. "īre"}
data.forms["3s_pres_pasv_indc"] = prefix .. "ītur"
data.forms["1p_pres_pasv_indc"] = prefix .. "īmur"
data.forms["2p_pres_pasv_indc"] = prefix .. "īminī"
data.forms["3p_pres_pasv_indc"] = prefix .. "euntur"
data.forms["1s_impf_pasv_indc"] = prefix .. "ībar"
data.forms["2s_impf_pasv_indc"] = {prefix .. "ībāris", prefix .. "ībāre"}
data.forms["3s_impf_pasv_indc"] = prefix .. "ībātur"
data.forms["1p_impf_pasv_indc"] = prefix .. "ībāmur"
data.forms["2p_impf_pasv_indc"] = prefix .. "ībāminī"
data.forms["3p_impf_pasv_indc"] = prefix .. "ībantur"
data.forms["1s_futr_pasv_indc"] = prefix .. "ībor"
data.forms["2s_futr_pasv_indc"] = {prefix .. "īberis", prefix .. "ībere"}
data.forms["3s_futr_pasv_indc"] = prefix .. "ībitur"
data.forms["1p_futr_pasv_indc"] = prefix .. "ībimur"
data.forms["2p_futr_pasv_indc"] = prefix .. "ībiminī"
data.forms["3p_futr_pasv_indc"] = prefix .. "ībuntur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = prefix .. "eam"
data.forms["2s_pres_actv_subj"] = prefix .. "eās"
data.forms["3s_pres_actv_subj"] = prefix .. "eat"
data.forms["1p_pres_actv_subj"] = prefix .. "eāmus"
data.forms["2p_pres_actv_subj"] = prefix .. "eātis"
data.forms["3p_pres_actv_subj"] = prefix .. "eant"
data.forms["1s_impf_actv_subj"] = prefix .. "īrem"
data.forms["2s_impf_actv_subj"] = prefix .. "īrēs"
data.forms["3s_impf_actv_subj"] = prefix .. "īret"
data.forms["1p_impf_actv_subj"] = prefix .. "īrēmus"
data.forms["2p_impf_actv_subj"] = prefix .. "īrētis"
data.forms["3p_impf_actv_subj"] = prefix .. "īrent"
-- Active perfective subjunctive
data.forms["1s_plup_actv_subj"] = prefix .. "issem"
data.forms["2s_plup_actv_subj"] = prefix .. "issēs"
data.forms["3s_plup_actv_subj"] = prefix .. "isset"
data.forms["1p_plup_actv_subj"] = prefix .. "issēmus"
data.forms["2p_plup_actv_subj"] = prefix .. "issētis"
data.forms["3p_plup_actv_subj"] = prefix .. "issent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = prefix .. "ear"
data.forms["2s_pres_pasv_subj"] = {prefix .. "eāris", prefix .. "eāre"}
data.forms["3s_pres_pasv_subj"] = prefix .. "eātur"
data.forms["1p_pres_pasv_subj"] = prefix .. "eāmur"
data.forms["2p_pres_pasv_subj"] = prefix .. "eāminī"
data.forms["3p_pres_pasv_subj"] = prefix .. "eantur"
data.forms["1s_impf_pasv_subj"] = prefix .. "īrer"
data.forms["2s_impf_pasv_subj"] = {prefix .. "īrēris", prefix .. "īrēre"}
data.forms["3s_impf_pasv_subj"] = prefix .. "īrētur"
data.forms["1p_impf_pasv_subj"] = prefix .. "īrēmur"
data.forms["2p_impf_pasv_subj"] = prefix .. "īrēminī"
data.forms["3p_impf_pasv_subj"] = prefix .. "īrentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = prefix .. "ī"
data.forms["2p_pres_actv_impr"] = prefix .. "īte"
data.forms["2s_futr_actv_impr"] = prefix .. "ītō"
data.forms["3s_futr_actv_impr"] = prefix .. "ītō"
data.forms["2p_futr_actv_impr"] = prefix .. "ītōte"
data.forms["3p_futr_actv_impr"] = prefix .. "euntō"
data.forms["2s_pres_pasv_impr"] = prefix .. "īre"
data.forms["2p_pres_pasv_impr"] = prefix .. "īminī"
data.forms["2s_futr_pasv_impr"] = prefix .. "ītor"
data.forms["3s_futr_pasv_impr"] = prefix .. "ītor"
-- no form
data.forms["3p_futr_pasv_impr"] = prefix .. "euntor"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix .. "īre"
data.forms["pres_pasv_inf"] = prefix .. "īrī"
-- Perfect/future infinitives
data.forms["perf_actv_inf"] = prefix .. "isse"
-- Imperfective participles
data.forms["pres_actv_ptc"] = prefix .. "iēns"
data.forms["futr_pasv_ptc"] = prefix .. "eundus"
end
irreg_conjugations["facio"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]] ''iō''-variant")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]] and [[suppletive]] in the passive")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin suppletive verbs")
table.insert(data.categories,'Latin stem-changing verbs')
local prefix = typeinfo.prefix or ""
make_pres_3rd_io(data, prefix .. "fac")
make_perf(data, prefix .. "fēc")
make_supine(data, prefix .. "fact")
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = prefix .. "fīō"
data.forms["2s_pres_pasv_indc"] = prefix .. "fīs"
data.forms["3s_pres_pasv_indc"] = prefix .. "fit"
data.forms["1p_pres_pasv_indc"] = prefix .. "fīmus"
data.forms["2p_pres_pasv_indc"] = prefix .. "fītis"
data.forms["3p_pres_pasv_indc"] = prefix .. "fīunt"
data.forms["1s_impf_pasv_indc"] = prefix .. "fīēbam"
data.forms["2s_impf_pasv_indc"] = prefix .. "fīēbās"
data.forms["3s_impf_pasv_indc"] = prefix .. "fīēbat"
data.forms["1p_impf_pasv_indc"] = prefix .. "fīēbāmus"
data.forms["2p_impf_pasv_indc"] = prefix .. "fīēbātis"
data.forms["3p_impf_pasv_indc"] = prefix .. "fīēbant"
data.forms["1s_futr_pasv_indc"] = prefix .. "fīam"
data.forms["2s_futr_pasv_indc"] = prefix .. "fīēs"
data.forms["3s_futr_pasv_indc"] = prefix .. "fīet"
data.forms["1p_futr_pasv_indc"] = prefix .. "fīēmus"
data.forms["2p_futr_pasv_indc"] = prefix .. "fīētis"
data.forms["3p_futr_pasv_indc"] = prefix .. "fīent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = prefix .. "fīam"
data.forms["2s_pres_pasv_subj"] = prefix .. "fīās"
data.forms["3s_pres_pasv_subj"] = prefix .. "fīat"
data.forms["1p_pres_pasv_subj"] = prefix .. "fīāmus"
data.forms["2p_pres_pasv_subj"] = prefix .. "fīātis"
data.forms["3p_pres_pasv_subj"] = prefix .. "fīant"
data.forms["1s_impf_pasv_subj"] = prefix .. "fierem"
data.forms["2s_impf_pasv_subj"] = prefix .. "fierēs"
data.forms["3s_impf_pasv_subj"] = prefix .. "fieret"
data.forms["1p_impf_pasv_subj"] = prefix .. "fierēmus"
data.forms["2p_impf_pasv_subj"] = prefix .. "fierētis"
data.forms["3p_impf_pasv_subj"] = prefix .. "fierent"
-- Active imperative
data.forms["2s_pres_actv_impr"] = (prefix == "" and {prefix .. "fac", data.forms["2s_pres_actv_impr"]} or data.forms["2s_pres_actv_impr"])
-- Passive imperative
data.forms["2s_pres_pasv_impr"] = prefix .. "fī"
data.forms["2p_pres_pasv_impr"] = prefix .. "fīte"
data.forms["2s_futr_pasv_impr"] = prefix .. "fītō"
data.forms["3s_futr_pasv_impr"] = prefix .. "fītō"
data.forms["2p_futr_pasv_impr"] = prefix .. "fītōte"
data.forms["3p_futr_pasv_impr"] = prefix .. "fīuntō"
-- Present infinitives
data.forms["pres_pasv_inf"] = prefix .. "fierī"
end
irreg_conjugations["fero"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]]")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.title, "[[suppletive]]")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin suppletive verbs")
table.insert(data.categories,'Latin stem-changing verbs')
local prefix_pres = typeinfo.prefix or ""
local prefix_perf = args[3]; if prefix_perf == "" then prefix_perf = nil end
local prefix_supine = args[4]; if prefix_supine == "" then prefix_supine = nil end
prefix_perf = prefix_perf or prefix_pres
prefix_supine = prefix_supine or prefix_pres
make_pres_3rd(data, prefix_pres .. "fer")
make_perf(data, prefix_perf .. "tul")
make_supine(data, prefix_supine .. "lāt")
-- Active imperfective indicative
data.forms["2s_pres_actv_indc"] = prefix_pres .. "fers"
data.forms["3s_pres_actv_indc"] = prefix_pres .. "fert"
data.forms["2p_pres_actv_indc"] = prefix_pres .. "fertis"
-- Passive imperfective indicative
data.forms["3s_pres_pasv_indc"] = prefix_pres .. "fertur"
-- Active imperfective subjunctive
data.forms["1s_impf_actv_subj"] = prefix_pres .. "ferrem"
data.forms["2s_impf_actv_subj"] = prefix_pres .. "ferrēs"
data.forms["3s_impf_actv_subj"] = prefix_pres .. "ferret"
data.forms["1p_impf_actv_subj"] = prefix_pres .. "ferrēmus"
data.forms["2p_impf_actv_subj"] = prefix_pres .. "ferrētis"
data.forms["3p_impf_actv_subj"] = prefix_pres .. "ferrent"
-- Passive present indicative
data.forms["2s_pres_pasv_indc"] = {prefix_pres .. "ferris", prefix_pres .. "ferre"}
-- Passive imperfective subjunctive
data.forms["1s_impf_pasv_subj"] = prefix_pres .. "ferrer"
data.forms["2s_impf_pasv_subj"] = {prefix_pres .. "ferrēris", prefix_pres .. "ferrēre"}
data.forms["3s_impf_pasv_subj"] = prefix_pres .. "ferrētur"
data.forms["1p_impf_pasv_subj"] = prefix_pres .. "ferrēmur"
data.forms["2p_impf_pasv_subj"] = prefix_pres .. "ferrēminī"
data.forms["3p_impf_pasv_subj"] = prefix_pres .. "ferrentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = prefix_pres .. "fer"
data.forms["2p_pres_actv_impr"] = prefix_pres .. "ferte"
data.forms["2s_futr_actv_impr"] = prefix_pres .. "fertō"
data.forms["3s_futr_actv_impr"] = prefix_pres .. "fertō"
data.forms["2p_futr_actv_impr"] = prefix_pres .. "fertōte"
data.forms["2s_pres_pasv_impr"] = prefix_pres .. "ferre"
data.forms["2s_futr_pasv_impr"] = prefix_pres .. "fertor"
data.forms["3s_futr_pasv_impr"] = prefix_pres .. "fertor"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix_pres .. "ferre"
data.forms["pres_pasv_inf"] = prefix_pres .. "ferrī"
end
irreg_conjugations["fio"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin third conjugation|third conjugation]] ''iō''-variant")
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]] long ''ī''")
table.insert(data.title, "[[suppletive]] in the supine stem")
table.insert(data.categories, "Latin third conjugation verbs")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin suppletive verbs")
table.insert(data.categories,'Latin stem-changing verbs')
local prefix = typeinfo.prefix or ""
typeinfo.subtype = "semi-depon"
make_pres_3rd(data, prefix .. "fī")
make_supine(data, prefix .. "fact")
-- Active imperfective indicative
data.forms["2s_pres_actv_indc"] = prefix .. "fīs"
data.forms["3s_pres_actv_indc"] = prefix .. "fit"
data.forms["1p_pres_actv_indc"] = prefix .. "fīmus"
data.forms["2p_pres_actv_indc"] = prefix .. "fītis"
-- Active imperfective subjunctive
data.forms["1s_impf_actv_subj"] = prefix .. "fierem"
data.forms["2s_impf_actv_subj"] = prefix .. "fierēs"
data.forms["3s_impf_actv_subj"] = prefix .. "fieret"
data.forms["1p_impf_actv_subj"] = prefix .. "fierēmus"
data.forms["2p_impf_actv_subj"] = prefix .. "fierētis"
data.forms["3p_impf_actv_subj"] = prefix .. "fierent"
-- Imperative
data.forms["2s_pres_actv_impr"] = prefix .. "fī"
data.forms["2p_pres_actv_impr"] = prefix .. "fīte"
data.forms["2s_futr_actv_impr"] = prefix .. "fītō"
data.forms["3s_futr_actv_impr"] = prefix .. "fītō"
data.forms["2p_futr_actv_impr"] = prefix .. "fītōte"
data.forms["3p_futr_actv_impr"] = prefix .. "fīuntō"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix .. "fierī"
-- Perfect/future infinitives
data.forms["futr_actv_inf"] = data.forms["futr_pasv_inf"]
-- Imperfective participles
data.forms["pres_actv_ptc"] = nil
data.forms["futr_actv_ptc"] = nil
end
irreg_conjugations["inquam"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.title, "highly [[defective verb|defective]]")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin defective verbs")
prefix = typeinfo.prefix or ""
data.forms["1s_pres_actv_indc"] = "inquam"
data.forms["2s_pres_actv_indc"] = "inquis"
data.forms["3s_pres_actv_indc"] = "inquit"
data.forms["1p_pres_actv_indc"] = "inquimus"
data.forms["2p_pres_actv_indc"] = "inquitis"
data.forms["3p_pres_actv_indc"] = "inquiunt"
data.forms["2s_futr_actv_indc"] = "inquiēs"
data.forms["3s_futr_actv_indc"] = "inquiet"
data.forms["3s_impf_actv_indc"] = "inquiēbat"
data.forms["1s_perf_actv_indc"] = "inquiī"
data.forms["2s_perf_actv_indc"] = "inquistī"
data.forms["3s_perf_actv_indc"] = "inquit"
data.forms["3s_pres_actv_subj"] = "inquiat"
data.forms["2s_pres_actv_impr"] = "inque"
data.forms["2s_futr_actv_impr"] = "inquitō"
data.forms["3s_futr_actv_impr"] = "inquitō"
data.forms["pres_actv_ptc"] = "inquiēns"
end
irreg_conjugations["libet"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin second conjugation|second conjugation]]")
table.insert(data.title, "mostly [[impersonal]]")
table.insert(data.categories, "Latin second conjugation verbs")
table.insert(data.categories, "Latin impersonal verbs")
typeinfo.subtype = "nopass"
prefix = typeinfo.prefix or ""
-- Active imperfective indicative
data.forms["3s_pres_actv_indc"] = prefix .. "libet"
data.forms["3s_impf_actv_indc"] = prefix .. "libēbat"
data.forms["3s_futr_actv_indc"] = prefix .. "libēbit"
-- Active perfective indicative
data.forms["3s_perf_actv_indc"] = {prefix .. "libuit", "[[" .. prefix .. "libitum]] [[est]]"}
data.forms["3s_plup_actv_indc"] = {prefix .. "libuerat", "[[" .. prefix .. "libitum]] [[erat]]"}
data.forms["3s_futp_actv_indc"] = {prefix .. "libuerit", "[[" .. prefix .. "libitum]] [[erit]]"}
-- Active imperfective subjunctive
data.forms["3s_pres_actv_subj"] = prefix .. "libeat"
data.forms["3s_impf_actv_subj"] = prefix .. "libēret"
-- Active perfective subjunctive
data.forms["3s_perf_actv_subj"] = {prefix .. "libuerit", "[[" .. prefix .. "libitum]] [[sit]]"}
data.forms["3s_plup_actv_subj"] = {prefix .. "libuisset", "[[" .. prefix .. "libitum]] [[esset]]"}
data.forms["3p_plup_actv_subj"] = prefix .. "libuissent"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix .. "libēre"
-- Perfect infinitive
data.forms["perf_actv_inf"] = {prefix .. "libuisse", "[[" .. prefix .. "libitum]] [[esse]]"}
-- Imperfective participles
data.forms["pres_actv_ptc"] = prefix .. "libēns"
data.forms["perf_actv_ptc"] = prefix .. "libitum"
end
irreg_conjugations["licet"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin second conjugation|second conjugation]]")
table.insert(data.title, "mostly [[impersonal]]")
table.insert(data.categories, "Latin second conjugation verbs")
table.insert(data.categories, "Latin impersonal verbs")
typeinfo.subtype = "nopass"
-- Active imperfective indicative
data.forms["3s_pres_actv_indc"] = "licet"
data.forms["3p_pres_actv_indc"] = "licent"
data.forms["3s_impf_actv_indc"] = "licēbat"
data.forms["3p_impf_actv_indc"] = "licēbant"
data.forms["3s_futr_actv_indc"] = "licēbit"
-- Active perfective indicative
data.forms["3s_perf_actv_indc"] = {"licuit", "[[licitum]] [[est]]"}
data.forms["3s_plup_actv_indc"] = {"licuerat", "[[licitum]] [[erat]]"}
data.forms["3s_futp_actv_indc"] = {"licuerit", "[[licitum]] [[erat]]"}
-- Active imperfective subjunctive
data.forms["3s_pres_actv_subj"] = "liceat"
data.forms["3p_pres_actv_subj"] = "liceant"
data.forms["3s_impf_actv_subj"] = "licēret"
-- Perfective subjunctive
data.forms["3s_perf_actv_subj"] = {"licuerit", "[[licitum]] [[erit]]"}
data.forms["3s_plup_actv_subj"] = {"licuisset", "[[licitum]] [[esset]]"}
-- Imperative
data.forms["2s_futr_actv_impr"] = "licētō"
data.forms["3s_futr_actv_impr"] = "licētō"
-- Infinitives
data.forms["pres_actv_inf"] = "licēre"
data.forms["perf_actv_inf"] = {"licuisse", "[[licitum]] [[esse]]"}
data.forms["futr_actv_inf"] = "[[licitūrum]] [[esse]]"
-- Participles
data.forms["pres_actv_ptc"] = "licēns"
data.forms["perf_actv_ptc"] = "licitus"
data.forms["futr_actv_ptc"] = "licitūrus"
end
irreg_conjugations["lubet"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin second conjugation|second conjugation]]")
table.insert(data.title, "mostly [[impersonal]]")
table.insert(data.categories, "Latin second conjugation verbs")
table.insert(data.categories, "Latin impersonal verbs")
typeinfo.subtype = "nopass"
-- Active imperfective indicative
data.forms["3s_pres_actv_indc"] = "lubet"
data.forms["3s_impf_actv_indc"] = "lubēbat"
data.forms["3s_futr_actv_indc"] = "lubēbit"
-- Active perfective indicative
data.forms["3s_perf_actv_indc"] = {"lubuit", "[[lubitum]] [[est]]"}
data.forms["3s_plup_actv_indc"] = {"lubuerat", "[[lubitum]] [[erat]]"}
data.forms["3s_futp_actv_indc"] = {"lubuerit", "[[lubitum]] [[erit]]"}
-- Active imperfective subjunctive
data.forms["3s_pres_actv_subj"] = "libeat"
data.forms["3s_impf_actv_subj"] = "libēret"
-- Active perfective subjunctive
data.forms["3s_perf_actv_subj"] = {"lubuerit", "[[lubitum]] [[sit]]"}
data.forms["3s_plup_actv_subj"] = {"lubuisset", "[[lubitum]] [[esset]]"}
data.forms["3p_plup_actv_subj"] = "lubuissent"
-- Present infinitives
data.forms["pres_actv_inf"] = "lubēre"
-- Perfect infinitive
data.forms["perf_actv_inf"] = {"lubuisse", "[[lubitum]] [[esse]]"}
-- Imperfective participles
data.forms["pres_actv_ptc"] = "lubēns"
data.forms["perf_actv_ptc"] = "lubitum"
end
irreg_conjugations["malo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.categories, "Latin irregular verbs")
typeinfo.subtype = "nopass"
typeinfo.subtype = "noimp"
make_perf(data, "mālu")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = "mālō"
data.forms["2s_pres_actv_indc"] = "māvīs"
data.forms["3s_pres_actv_indc"] = "māvult"
data.forms["1p_pres_actv_indc"] = "mālumus"
data.forms["2p_pres_actv_indc"] = "māvultis"
data.forms["3p_pres_actv_indc"] = "mālunt"
data.forms["1s_impf_actv_indc"] = "mālēbam"
data.forms["2s_impf_actv_indc"] = "mālēbās"
data.forms["3s_impf_actv_indc"] = "mālēbat"
data.forms["1p_impf_actv_indc"] = "mālēbāmus"
data.forms["2p_impf_actv_indc"] = "mālēbātis"
data.forms["3p_impf_actv_indc"] = "mālēbant"
data.forms["1s_futr_actv_indc"] = "mālam"
data.forms["2s_futr_actv_indc"] = "mālēs"
data.forms["3s_futr_actv_indc"] = "mālet"
data.forms["1p_futr_actv_indc"] = "mālēmus"
data.forms["2p_futr_actv_indc"] = "mālētis"
data.forms["3p_futr_actv_indc"] = "mālent"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = "mālim"
data.forms["2s_pres_actv_subj"] = "mālīs"
data.forms["3s_pres_actv_subj"] = "mālit"
data.forms["1p_pres_actv_subj"] = "mālīmus"
data.forms["2p_pres_actv_subj"] = "mālītis"
data.forms["3p_pres_actv_subj"] = "mālint"
data.forms["1s_impf_actv_subj"] = "māllem"
data.forms["2s_impf_actv_subj"] = "māllēs"
data.forms["3s_impf_actv_subj"] = "māllet"
data.forms["1p_impf_actv_subj"] = "māllēmus"
data.forms["2p_impf_actv_subj"] = "māllētis"
data.forms["3p_impf_actv_subj"] = "māllent"
-- Present infinitives
data.forms["pres_actv_inf"] = "mālle"
end
irreg_conjugations["nolo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.categories, "Latin irregular verbs")
typeinfo.subtype = "nopass"
make_perf(data, "nōlu")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = "nōlō"
data.forms["2s_pres_actv_indc"] = "nōn vīs"
data.forms["3s_pres_actv_indc"] = "nōn vult"
data.forms["1p_pres_actv_indc"] = "nōlumus"
data.forms["2p_pres_actv_indc"] = "nōn vultis"
data.forms["3p_pres_actv_indc"] = "nōlunt"
data.forms["1s_impf_actv_indc"] = "nōlēbam"
data.forms["2s_impf_actv_indc"] = "nōlēbās"
data.forms["3s_impf_actv_indc"] = "nōlēbat"
data.forms["1p_impf_actv_indc"] = "nōlēbāmus"
data.forms["2p_impf_actv_indc"] = "nōlēbātis"
data.forms["3p_impf_actv_indc"] = "nōlēbant"
data.forms["1s_futr_actv_indc"] = "nōlam"
data.forms["2s_futr_actv_indc"] = "nōlēs"
data.forms["3s_futr_actv_indc"] = "nōlet"
data.forms["1p_futr_actv_indc"] = "nōlēmus"
data.forms["2p_futr_actv_indc"] = "nōlētis"
data.forms["3p_futr_actv_indc"] = "nōlent"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = "nōlim"
data.forms["2s_pres_actv_subj"] = "nōlīs"
data.forms["3s_pres_actv_subj"] = "nōlit"
data.forms["1p_pres_actv_subj"] = "nōlīmus"
data.forms["2p_pres_actv_subj"] = "nōlītis"
data.forms["3p_pres_actv_subj"] = "nōlint"
data.forms["1s_impf_actv_subj"] = "nōllem"
data.forms["2s_impf_actv_subj"] = "nōllēs"
data.forms["3s_impf_actv_subj"] = "nōllet"
data.forms["1p_impf_actv_subj"] = "nōllēmus"
data.forms["2p_impf_actv_subj"] = "nōllētis"
data.forms["3p_impf_actv_subj"] = "nōllent"
-- Imperative
data.forms["2s_pres_actv_impr"] = "nōlī"
data.forms["2p_pres_actv_impr"] = "nōlīte"
data.forms["2s_futr_actv_impr"] = "nōlitō"
data.forms["3s_futr_actv_impr"] = "nōlitō"
data.forms["2p_futr_actv_impr"] = "nōlitōte"
data.forms["3p_futr_actv_impr"] = "nōluntō"
-- Present infinitives
data.forms["pres_actv_inf"] = "nōlle"
-- Imperfective participles
data.forms["pres_actv_ptc"] = "nōlēns"
end
irreg_conjugations["possum"] = function(args, data, typeinfo)
table.insert(data.title, "highly [[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.title, "[[suppletive]]")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin suppletive verbs")
table.insert(data.categories,'Latin stem-changing verbs')
typeinfo.subtype = "nopass"
make_perf(data, "potu")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = "possum"
data.forms["2s_pres_actv_indc"] = "potes"
data.forms["3s_pres_actv_indc"] = "potest"
data.forms["1p_pres_actv_indc"] = "possumus"
data.forms["2p_pres_actv_indc"] = "potestis"
data.forms["3p_pres_actv_indc"] = "possunt"
data.forms["1s_impf_actv_indc"] = "poteram"
data.forms["2s_impf_actv_indc"] = "poterās"
data.forms["3s_impf_actv_indc"] = "poterat"
data.forms["1p_impf_actv_indc"] = "poterāmus"
data.forms["2p_impf_actv_indc"] = "poterātis"
data.forms["3p_impf_actv_indc"] = "poterant"
data.forms["1s_futr_actv_indc"] = "poterō"
data.forms["2s_futr_actv_indc"] = {"poteris", "potere"}
data.forms["3s_futr_actv_indc"] = "poterit"
data.forms["1p_futr_actv_indc"] = "poterimus"
data.forms["2p_futr_actv_indc"] = "poteritis"
data.forms["3p_futr_actv_indc"] = "poterunt"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = "possim"
data.forms["2s_pres_actv_subj"] = "possīs"
data.forms["3s_pres_actv_subj"] = "possit"
data.forms["1p_pres_actv_subj"] = "possīmus"
data.forms["2p_pres_actv_subj"] = "possītis"
data.forms["3p_pres_actv_subj"] = "possint"
data.forms["1s_impf_actv_subj"] = "possem"
data.forms["2s_impf_actv_subj"] = "possēs"
data.forms["3s_impf_actv_subj"] = "posset"
data.forms["1p_impf_actv_subj"] = "possēmus"
data.forms["2p_impf_actv_subj"] = "possētis"
data.forms["3p_impf_actv_subj"] = "possent"
-- Present infinitives
data.forms["pres_actv_inf"] = "posse"
-- Imperfective participles
data.forms["pres_actv_ptc"] = "potēns"
end
irreg_conjugations["soleo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin second conjugation|second conjugation]]")
table.insert(data.title, "[[semi-deponent]]")
table.insert(data.title, "no [[future]]")
table.insert(data.categories, "Latin second conjugation verbs")
table.insert(data.categories, "Latin semi-deponent verbs")
table.insert(data.categories, "Latin defective verbs")
prefix = typeinfo.prefix or ""
local ppplink = m_links.full_link(prefix .. "solitus", nil, lang, nil, "term", nil, {}, false)
local sumlink = m_links.full_link("sum", nil, lang, nil, "term", nil, {}, false)
data.forms["1s_pres_actv_indc"] = prefix .. "soleō"
data.forms["2s_pres_actv_indc"] = prefix .. "solēs"
data.forms["3s_pres_actv_indc"] = prefix .. "solet"
data.forms["1p_pres_actv_indc"] = prefix .. "solēmus"
data.forms["2p_pres_actv_indc"] = prefix .. "solētis"
data.forms["3p_pres_actv_indc"] = prefix .. "solent"
data.forms["1s_impf_actv_indc"] = prefix .. "solēbam"
data.forms["2s_impf_actv_indc"] = prefix .. "solēbās"
data.forms["3s_impf_actv_indc"] = prefix .. "solēbat"
data.forms["1p_impf_actv_indc"] = prefix .. "solēbāmus"
data.forms["2p_impf_actv_indc"] = prefix .. "solēbātis"
data.forms["3p_impf_actv_indc"] = prefix .. "solēbant"
data.forms["perf_pasv_indc"] = ppplink .. " + present active indicative of " .. sumlink
data.forms["plup_pasv_indc"] = ppplink .. " + imperfect active indicative of " .. sumlink
data.forms["1s_pres_actv_subj"] = prefix .. "soleam"
data.forms["2s_pres_actv_subj"] = prefix .. "soleās"
data.forms["3s_pres_actv_subj"] = prefix .. "soleat"
data.forms["1p_pres_actv_subj"] = prefix .. "soleāmus"
data.forms["2p_pres_actv_subj"] = prefix .. "soleātis"
data.forms["3p_pres_actv_subj"] = prefix .. "soleant"
data.forms["1s_impf_actv_subj"] = prefix .. "solērem"
data.forms["2s_impf_actv_subj"] = prefix .. "solērēs"
data.forms["3s_impf_actv_subj"] = prefix .. "solēret"
data.forms["1p_impf_actv_subj"] = prefix .. "solērēmus"
data.forms["2p_impf_actv_subj"] = prefix .. "solērētis"
data.forms["3p_impf_actv_subj"] = prefix .. "solērent"
data.forms["perf_pasv_subj"] = ppplink .. " + present active subjunctive of " .. sumlink
data.forms["plup_pasv_subj"] = ppplink .. " + imperfect active subjunctive of " .. sumlink
data.forms["pres_actv_inf"] = prefix .. "solēre"
data.forms["perf_actv_inf"] = "[[" .. prefix .. "solitus]] [[esse]]"
data.forms["pres_actv_ptc"] = prefix .. "solēns"
data.forms["perf_actv_ptc"] = prefix .. "solitus"
end
irreg_conjugations["sum"] = function(args, data, typeinfo)
table.insert(data.title, "highly [[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.title, "[[suppletive]]")
table.insert(data.categories, "Latin irregular verbs")
table.insert(data.categories, "Latin suppletive verbs")
table.insert(data.categories,'Latin stem-changing verbs')
local prefix = typeinfo.prefix or ""
local prefix_d = args[3]; if prefix_d == "" then prefix_d = nil end
prefix_d = prefix_d or prefix
local prefix_f = args[4]; if prefix_f == "" then prefix_f = nil end
prefix_f = prefix_f or prefix
-- The vowel of the prefix is lengthened if it ends in -n and the next word begins with f- or s-.
local prefix_long = prefix:gsub("([aeiou]n)$", {["an"] = "ān", ["en"] = "ēn", ["in"] = "īn", ["on"] = "ōn", ["un"] = "ūn"})
local prefix_f_long = prefix_f:gsub("([aeiou]n)$", {["an"] = "ān", ["en"] = "ēn", ["in"] = "īn", ["on"] = "ōn", ["un"] = "ūn"})
typeinfo.subtype = "nopass"
make_perf(data, prefix_f_long .. "fu")
make_supine(data, prefix_f_long .. "fut")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = prefix_long .. "sum"
data.forms["2s_pres_actv_indc"] = prefix_d .. "es"
data.forms["3s_pres_actv_indc"] = prefix_d .. "est"
data.forms["1p_pres_actv_indc"] = prefix_long .. "sumus"
data.forms["2p_pres_actv_indc"] = prefix_d .. "estis"
data.forms["3p_pres_actv_indc"] = prefix_long .. "sunt"
data.forms["1s_impf_actv_indc"] = prefix_d .. "eram"
data.forms["2s_impf_actv_indc"] = prefix_d .. "erās"
data.forms["3s_impf_actv_indc"] = prefix_d .. "erat"
data.forms["1p_impf_actv_indc"] = prefix_d .. "erāmus"
data.forms["2p_impf_actv_indc"] = prefix_d .. "erātis"
data.forms["3p_impf_actv_indc"] = prefix_d .. "erant"
data.forms["1s_futr_actv_indc"] = prefix_d .. "erō"
data.forms["2s_futr_actv_indc"] = {prefix_d .. "eris", prefix_d .. "ere"}
data.forms["3s_futr_actv_indc"] = prefix_d .. "erit"
data.forms["1p_futr_actv_indc"] = prefix_d .. "erimus"
data.forms["2p_futr_actv_indc"] = prefix_d .. "eritis"
data.forms["3p_futr_actv_indc"] = prefix_d .. "erunt"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = prefix_long .. "sim"
data.forms["2s_pres_actv_subj"] = prefix_long .. "sīs"
data.forms["3s_pres_actv_subj"] = prefix_long .. "sit"
data.forms["1p_pres_actv_subj"] = prefix_long .. "sīmus"
data.forms["2p_pres_actv_subj"] = prefix_long .. "sītis"
data.forms["3p_pres_actv_subj"] = prefix_long .. "sint"
data.forms["1s_impf_actv_subj"] = {prefix_d .. "essem", prefix_f .. "forem"}
data.forms["2s_impf_actv_subj"] = {prefix_d .. "essēs", prefix_f .. "forēs"}
data.forms["3s_impf_actv_subj"] = {prefix_d .. "esset", prefix_f .. "foret"}
data.forms["1p_impf_actv_subj"] = {prefix_d .. "essēmus", prefix_f .. "forēmus"}
data.forms["2p_impf_actv_subj"] = {prefix_d .. "essētis", prefix_f .. "forētis"}
data.forms["3p_impf_actv_subj"] = {prefix_d .. "essent", prefix_f .. "forent"}
-- Imperative
data.forms["2s_pres_actv_impr"] = prefix_d .. "es"
data.forms["2p_pres_actv_impr"] = prefix_d .. "este"
data.forms["2s_futr_actv_impr"] = prefix_d .. "estō"
data.forms["3s_futr_actv_impr"] = prefix_d .. "estō"
data.forms["2p_futr_actv_impr"] = prefix_d .. "estōte"
data.forms["3p_futr_actv_impr"] = prefix_long .. "suntō"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix_d .. "esse"
--Imperfective participles
if prefix == "ab" then
data.forms["pres_actv_ptc"] = "absēns"
elseif prefix == "prae" then
data.forms["pres_actv_ptc"] = "praesēns"
end
end
irreg_conjugations["volo"] = function(args, data, typeinfo)
table.insert(data.title, "[[Appendix:Latin irregular verbs|irregular]]")
table.insert(data.categories, "Latin irregular verbs")
local prefix = typeinfo.prefix or ""
typeinfo.subtype = "nopass"
typeinfo.subtype = "noimp"
make_perf(data, prefix .. "volu")
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = prefix .. "volō"
data.forms["2s_pres_actv_indc"] = prefix .. "vīs"
data.forms["3s_pres_actv_indc"] = prefix ~= "" and prefix .. "vult" or {"vult", "volt"}
data.forms["1p_pres_actv_indc"] = prefix .. "volumus"
data.forms["2p_pres_actv_indc"] = prefix ~= "" and prefix .. "vultis" or {"vultis", "voltis"}
data.forms["3p_pres_actv_indc"] = prefix .. "volunt"
data.forms["1s_impf_actv_indc"] = prefix .. "volēbam"
data.forms["2s_impf_actv_indc"] = prefix .. "volēbās"
data.forms["3s_impf_actv_indc"] = prefix .. "volēbat"
data.forms["1p_impf_actv_indc"] = prefix .. "volēbāmus"
data.forms["2p_impf_actv_indc"] = prefix .. "volēbātis"
data.forms["3p_impf_actv_indc"] = prefix .. "volēbant"
data.forms["1s_futr_actv_indc"] = prefix .. "volam"
data.forms["2s_futr_actv_indc"] = prefix .. "volēs"
data.forms["3s_futr_actv_indc"] = prefix .. "volet"
data.forms["1p_futr_actv_indc"] = prefix .. "volēmus"
data.forms["2p_futr_actv_indc"] = prefix .. "volētis"
data.forms["3p_futr_actv_indc"] = prefix .. "volent"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = prefix .. "velim"
data.forms["2s_pres_actv_subj"] = prefix .. "velīs"
data.forms["3s_pres_actv_subj"] = prefix .. "velit"
data.forms["1p_pres_actv_subj"] = prefix .. "velīmus"
data.forms["2p_pres_actv_subj"] = prefix .. "velītis"
data.forms["3p_pres_actv_subj"] = prefix .. "velint"
data.forms["1s_impf_actv_subj"] = prefix .. "vellem"
data.forms["2s_impf_actv_subj"] = prefix .. "vellēs"
data.forms["3s_impf_actv_subj"] = prefix .. "vellet"
data.forms["1p_impf_actv_subj"] = prefix .. "vellēmus"
data.forms["2p_impf_actv_subj"] = prefix .. "vellētis"
data.forms["3p_impf_actv_subj"] = prefix .. "vellent"
-- Present infinitives
data.forms["pres_actv_inf"] = prefix .. "velle"
-- Imperfective participles
data.forms["pres_actv_ptc"] = prefix .. "volēns"
end
-- Form-generating functions
function make_pres_1st(data, pres_stem)
if not pres_stem then
return
end
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = pres_stem .. "ō"
data.forms["2s_pres_actv_indc"] = pres_stem .. "ās"
data.forms["3s_pres_actv_indc"] = pres_stem .. "at"
data.forms["1p_pres_actv_indc"] = pres_stem .. "āmus"
data.forms["2p_pres_actv_indc"] = pres_stem .. "ātis"
data.forms["3p_pres_actv_indc"] = pres_stem .. "ant"
data.forms["1s_impf_actv_indc"] = pres_stem .. "ābam"
data.forms["2s_impf_actv_indc"] = pres_stem .. "ābās"
data.forms["3s_impf_actv_indc"] = pres_stem .. "ābat"
data.forms["1p_impf_actv_indc"] = pres_stem .. "ābāmus"
data.forms["2p_impf_actv_indc"] = pres_stem .. "ābātis"
data.forms["3p_impf_actv_indc"] = pres_stem .. "ābant"
data.forms["1s_futr_actv_indc"] = pres_stem .. "ābō"
data.forms["2s_futr_actv_indc"] = pres_stem .. "ābis"
data.forms["3s_futr_actv_indc"] = pres_stem .. "ābit"
data.forms["1p_futr_actv_indc"] = pres_stem .. "ābimus"
data.forms["2p_futr_actv_indc"] = pres_stem .. "ābitis"
data.forms["3p_futr_actv_indc"] = pres_stem .. "ābunt"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = pres_stem .. "or"
data.forms["2s_pres_pasv_indc"] = {pres_stem .. "āris", pres_stem .. "āre"}
data.forms["3s_pres_pasv_indc"] = pres_stem .. "ātur"
data.forms["1p_pres_pasv_indc"] = pres_stem .. "āmur"
data.forms["2p_pres_pasv_indc"] = pres_stem .. "āminī"
data.forms["3p_pres_pasv_indc"] = pres_stem .. "antur"
data.forms["1s_impf_pasv_indc"] = pres_stem .. "ābar"
data.forms["2s_impf_pasv_indc"] = {pres_stem .. "ābāris", pres_stem .. "ābāre"}
data.forms["3s_impf_pasv_indc"] = pres_stem .. "ābātur"
data.forms["1p_impf_pasv_indc"] = pres_stem .. "ābāmur"
data.forms["2p_impf_pasv_indc"] = pres_stem .. "ābāminī"
data.forms["3p_impf_pasv_indc"] = pres_stem .. "ābantur"
data.forms["1s_futr_pasv_indc"] = pres_stem .. "ābor"
data.forms["2s_futr_pasv_indc"] = {pres_stem .. "āberis", pres_stem .. "ābere"}
data.forms["3s_futr_pasv_indc"] = pres_stem .. "ābitur"
data.forms["1p_futr_pasv_indc"] = pres_stem .. "ābimur"
data.forms["2p_futr_pasv_indc"] = pres_stem .. "ābiminī"
data.forms["3p_futr_pasv_indc"] = pres_stem .. "ābuntur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = pres_stem .. "em"
data.forms["2s_pres_actv_subj"] = pres_stem .. "ēs"
data.forms["3s_pres_actv_subj"] = pres_stem .. "et"
data.forms["1p_pres_actv_subj"] = pres_stem .. "ēmus"
data.forms["2p_pres_actv_subj"] = pres_stem .. "ētis"
data.forms["3p_pres_actv_subj"] = pres_stem .. "ent"
data.forms["1s_impf_actv_subj"] = pres_stem .. "ārem"
data.forms["2s_impf_actv_subj"] = pres_stem .. "ārēs"
data.forms["3s_impf_actv_subj"] = pres_stem .. "āret"
data.forms["1p_impf_actv_subj"] = pres_stem .. "ārēmus"
data.forms["2p_impf_actv_subj"] = pres_stem .. "ārētis"
data.forms["3p_impf_actv_subj"] = pres_stem .. "ārent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = pres_stem .. "er"
data.forms["2s_pres_pasv_subj"] = {pres_stem .. "ēris", pres_stem .. "ēre"}
data.forms["3s_pres_pasv_subj"] = pres_stem .. "ētur"
data.forms["1p_pres_pasv_subj"] = pres_stem .. "ēmur"
data.forms["2p_pres_pasv_subj"] = pres_stem .. "ēminī"
data.forms["3p_pres_pasv_subj"] = pres_stem .. "entur"
data.forms["1s_impf_pasv_subj"] = pres_stem .. "ārer"
data.forms["2s_impf_pasv_subj"] = {pres_stem .. "ārēris", pres_stem .. "ārēre"}
data.forms["3s_impf_pasv_subj"] = pres_stem .. "ārētur"
data.forms["1p_impf_pasv_subj"] = pres_stem .. "ārēmur"
data.forms["2p_impf_pasv_subj"] = pres_stem .. "ārēminī"
data.forms["3p_impf_pasv_subj"] = pres_stem .. "ārentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = pres_stem .. "ā"
data.forms["2p_pres_actv_impr"] = pres_stem .. "āte"
data.forms["2s_futr_actv_impr"] = pres_stem .. "ātō"
data.forms["3s_futr_actv_impr"] = pres_stem .. "ātō"
data.forms["2p_futr_actv_impr"] = pres_stem .. "ātōte"
data.forms["3p_futr_actv_impr"] = pres_stem .. "antō"
data.forms["2s_pres_pasv_impr"] = pres_stem .. "āre"
data.forms["2p_pres_pasv_impr"] = pres_stem .. "āminī"
data.forms["2s_futr_pasv_impr"] = pres_stem .. "ātor"
data.forms["3s_futr_pasv_impr"] = pres_stem .. "ātor"
-- no form
data.forms["3p_futr_pasv_impr"] = pres_stem .. "antor"
-- Present infinitives
data.forms["pres_actv_inf"] = pres_stem .. "āre"
data.forms["pres_pasv_inf"] = pres_stem .. "ārī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = pres_stem .. "āns"
data.forms["futr_pasv_ptc"] = pres_stem .. "andus"
end
function make_pres_2nd(data, pres_stem)
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = pres_stem .. "eō"
data.forms["2s_pres_actv_indc"] = pres_stem .. "ēs"
data.forms["3s_pres_actv_indc"] = pres_stem .. "et"
data.forms["1p_pres_actv_indc"] = pres_stem .. "ēmus"
data.forms["2p_pres_actv_indc"] = pres_stem .. "ētis"
data.forms["3p_pres_actv_indc"] = pres_stem .. "ent"
data.forms["1s_impf_actv_indc"] = pres_stem .. "ēbam"
data.forms["2s_impf_actv_indc"] = pres_stem .. "ēbās"
data.forms["3s_impf_actv_indc"] = pres_stem .. "ēbat"
data.forms["1p_impf_actv_indc"] = pres_stem .. "ēbāmus"
data.forms["2p_impf_actv_indc"] = pres_stem .. "ēbātis"
data.forms["3p_impf_actv_indc"] = pres_stem .. "ēbant"
data.forms["1s_futr_actv_indc"] = pres_stem .. "ēbō"
data.forms["2s_futr_actv_indc"] = pres_stem .. "ēbis"
data.forms["3s_futr_actv_indc"] = pres_stem .. "ēbit"
data.forms["1p_futr_actv_indc"] = pres_stem .. "ēbimus"
data.forms["2p_futr_actv_indc"] = pres_stem .. "ēbitis"
data.forms["3p_futr_actv_indc"] = pres_stem .. "ēbunt"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = pres_stem .. "eor"
data.forms["2s_pres_pasv_indc"] = {pres_stem .. "ēris", pres_stem .. "ēre"}
data.forms["3s_pres_pasv_indc"] = pres_stem .. "ētur"
data.forms["1p_pres_pasv_indc"] = pres_stem .. "ēmur"
data.forms["2p_pres_pasv_indc"] = pres_stem .. "ēminī"
data.forms["3p_pres_pasv_indc"] = pres_stem .. "entur"
data.forms["1s_impf_pasv_indc"] = pres_stem .. "ēbar"
data.forms["2s_impf_pasv_indc"] = {pres_stem .. "ēbāris", pres_stem .. "ēbāre"}
data.forms["3s_impf_pasv_indc"] = pres_stem .. "ēbātur"
data.forms["1p_impf_pasv_indc"] = pres_stem .. "ēbāmur"
data.forms["2p_impf_pasv_indc"] = pres_stem .. "ēbāminī"
data.forms["3p_impf_pasv_indc"] = pres_stem .. "ēbantur"
data.forms["1s_futr_pasv_indc"] = pres_stem .. "ēbor"
data.forms["2s_futr_pasv_indc"] = {pres_stem .. "ēberis", pres_stem .. "ēbere"}
data.forms["3s_futr_pasv_indc"] = pres_stem .. "ēbitur"
data.forms["1p_futr_pasv_indc"] = pres_stem .. "ēbimur"
data.forms["2p_futr_pasv_indc"] = pres_stem .. "ēbiminī"
data.forms["3p_futr_pasv_indc"] = pres_stem .. "ēbuntur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = pres_stem .. "eam"
data.forms["2s_pres_actv_subj"] = pres_stem .. "eās"
data.forms["3s_pres_actv_subj"] = pres_stem .. "eat"
data.forms["1p_pres_actv_subj"] = pres_stem .. "eāmus"
data.forms["2p_pres_actv_subj"] = pres_stem .. "eātis"
data.forms["3p_pres_actv_subj"] = pres_stem .. "eant"
data.forms["1s_impf_actv_subj"] = pres_stem .. "ērem"
data.forms["2s_impf_actv_subj"] = pres_stem .. "ērēs"
data.forms["3s_impf_actv_subj"] = pres_stem .. "ēret"
data.forms["1p_impf_actv_subj"] = pres_stem .. "ērēmus"
data.forms["2p_impf_actv_subj"] = pres_stem .. "ērētis"
data.forms["3p_impf_actv_subj"] = pres_stem .. "ērent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = pres_stem .. "ear"
data.forms["2s_pres_pasv_subj"] = {pres_stem .. "eāris", pres_stem .. "eāre"}
data.forms["3s_pres_pasv_subj"] = pres_stem .. "eātur"
data.forms["1p_pres_pasv_subj"] = pres_stem .. "eāmur"
data.forms["2p_pres_pasv_subj"] = pres_stem .. "eāminī"
data.forms["3p_pres_pasv_subj"] = pres_stem .. "eantur"
data.forms["1s_impf_pasv_subj"] = pres_stem .. "ērer"
data.forms["2s_impf_pasv_subj"] = {pres_stem .. "ērēris", pres_stem .. "ērēre"}
data.forms["3s_impf_pasv_subj"] = pres_stem .. "ērētur"
data.forms["1p_impf_pasv_subj"] = pres_stem .. "ērēmur"
data.forms["2p_impf_pasv_subj"] = pres_stem .. "ērēminī"
data.forms["3p_impf_pasv_subj"] = pres_stem .. "ērentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = pres_stem .. "ē"
data.forms["2p_pres_actv_impr"] = pres_stem .. "ēte"
data.forms["2s_futr_actv_impr"] = pres_stem .. "ētō"
data.forms["3s_futr_actv_impr"] = pres_stem .. "ētō"
data.forms["2p_futr_actv_impr"] = pres_stem .. "ētōte"
data.forms["3p_futr_actv_impr"] = pres_stem .. "entō"
data.forms["2s_pres_pasv_impr"] = pres_stem .. "ēre"
data.forms["2p_pres_pasv_impr"] = pres_stem .. "ēminī"
data.forms["2s_futr_pasv_impr"] = pres_stem .. "ētor"
data.forms["3s_futr_pasv_impr"] = pres_stem .. "ētor"
-- no form
data.forms["3p_futr_pasv_impr"] = pres_stem .. "entor"
-- Present infinitives
data.forms["pres_actv_inf"] = pres_stem .. "ēre"
data.forms["pres_pasv_inf"] = pres_stem .. "ērī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = pres_stem .. "ēns"
data.forms["futr_pasv_ptc"] = pres_stem .. "endus"
end
function make_pres_3rd(data, pres_stem)
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = pres_stem .. "ō"
data.forms["2s_pres_actv_indc"] = pres_stem .. "is"
data.forms["3s_pres_actv_indc"] = pres_stem .. "it"
data.forms["1p_pres_actv_indc"] = pres_stem .. "imus"
data.forms["2p_pres_actv_indc"] = pres_stem .. "itis"
data.forms["3p_pres_actv_indc"] = pres_stem .. "unt"
data.forms["1s_impf_actv_indc"] = pres_stem .. "ēbam"
data.forms["2s_impf_actv_indc"] = pres_stem .. "ēbās"
data.forms["3s_impf_actv_indc"] = pres_stem .. "ēbat"
data.forms["1p_impf_actv_indc"] = pres_stem .. "ēbāmus"
data.forms["2p_impf_actv_indc"] = pres_stem .. "ēbātis"
data.forms["3p_impf_actv_indc"] = pres_stem .. "ēbant"
data.forms["1s_futr_actv_indc"] = pres_stem .. "am"
data.forms["2s_futr_actv_indc"] = pres_stem .. "ēs"
data.forms["3s_futr_actv_indc"] = pres_stem .. "et"
data.forms["1p_futr_actv_indc"] = pres_stem .. "ēmus"
data.forms["2p_futr_actv_indc"] = pres_stem .. "ētis"
data.forms["3p_futr_actv_indc"] = pres_stem .. "ent"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = pres_stem .. "or"
data.forms["2s_pres_pasv_indc"] = {pres_stem .. "eris", pres_stem .. "ere"}
data.forms["3s_pres_pasv_indc"] = pres_stem .. "itur"
data.forms["1p_pres_pasv_indc"] = pres_stem .. "imur"
data.forms["2p_pres_pasv_indc"] = pres_stem .. "iminī"
data.forms["3p_pres_pasv_indc"] = pres_stem .. "untur"
data.forms["1s_impf_pasv_indc"] = pres_stem .. "ēbar"
data.forms["2s_impf_pasv_indc"] = {pres_stem .. "ēbāris", pres_stem .. "ēbāre"}
data.forms["3s_impf_pasv_indc"] = pres_stem .. "ēbātur"
data.forms["1p_impf_pasv_indc"] = pres_stem .. "ēbāmur"
data.forms["2p_impf_pasv_indc"] = pres_stem .. "ēbāminī"
data.forms["3p_impf_pasv_indc"] = pres_stem .. "ēbantur"
data.forms["1s_futr_pasv_indc"] = pres_stem .. "ar"
data.forms["2s_futr_pasv_indc"] = {pres_stem .. "ēris", pres_stem .. "ēre"}
data.forms["3s_futr_pasv_indc"] = pres_stem .. "ētur"
data.forms["1p_futr_pasv_indc"] = pres_stem .. "ēmur"
data.forms["2p_futr_pasv_indc"] = pres_stem .. "ēminī"
data.forms["3p_futr_pasv_indc"] = pres_stem .. "entur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = pres_stem .. "am"
data.forms["2s_pres_actv_subj"] = pres_stem .. "ās"
data.forms["3s_pres_actv_subj"] = pres_stem .. "at"
data.forms["1p_pres_actv_subj"] = pres_stem .. "āmus"
data.forms["2p_pres_actv_subj"] = pres_stem .. "ātis"
data.forms["3p_pres_actv_subj"] = pres_stem .. "ant"
data.forms["1s_impf_actv_subj"] = pres_stem .. "erem"
data.forms["2s_impf_actv_subj"] = pres_stem .. "erēs"
data.forms["3s_impf_actv_subj"] = pres_stem .. "eret"
data.forms["1p_impf_actv_subj"] = pres_stem .. "erēmus"
data.forms["2p_impf_actv_subj"] = pres_stem .. "erētis"
data.forms["3p_impf_actv_subj"] = pres_stem .. "erent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = pres_stem .. "ar"
data.forms["2s_pres_pasv_subj"] = {pres_stem .. "āris", pres_stem .. "āre"}
data.forms["3s_pres_pasv_subj"] = pres_stem .. "ātur"
data.forms["1p_pres_pasv_subj"] = pres_stem .. "āmur"
data.forms["2p_pres_pasv_subj"] = pres_stem .. "āminī"
data.forms["3p_pres_pasv_subj"] = pres_stem .. "antur"
data.forms["1s_impf_pasv_subj"] = pres_stem .. "erer"
data.forms["2s_impf_pasv_subj"] = {pres_stem .. "erēris", pres_stem .. "erēre"}
data.forms["3s_impf_pasv_subj"] = pres_stem .. "erētur"
data.forms["1p_impf_pasv_subj"] = pres_stem .. "erēmur"
data.forms["2p_impf_pasv_subj"] = pres_stem .. "erēminī"
data.forms["3p_impf_pasv_subj"] = pres_stem .. "erentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = pres_stem .. "e"
data.forms["2p_pres_actv_impr"] = pres_stem .. "ite"
data.forms["2s_futr_actv_impr"] = pres_stem .. "itō"
data.forms["3s_futr_actv_impr"] = pres_stem .. "itō"
data.forms["2p_futr_actv_impr"] = pres_stem .. "itōte"
data.forms["3p_futr_actv_impr"] = pres_stem .. "untō"
data.forms["2s_pres_pasv_impr"] = pres_stem .. "ere"
data.forms["2p_pres_pasv_impr"] = pres_stem .. "iminī"
data.forms["2s_futr_pasv_impr"] = pres_stem .. "itor"
data.forms["3s_futr_pasv_impr"] = pres_stem .. "itor"
-- no form
data.forms["3p_futr_pasv_impr"] = pres_stem .. "untor"
-- Present infinitives
data.forms["pres_actv_inf"] = pres_stem .. "ere"
data.forms["pres_pasv_inf"] = pres_stem .. "ī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = pres_stem .. "ēns"
data.forms["futr_pasv_ptc"] = pres_stem .. "endus"
end
function make_pres_3rd_io(data, pres_stem)
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = pres_stem .. "iō"
data.forms["2s_pres_actv_indc"] = pres_stem .. "is"
data.forms["3s_pres_actv_indc"] = pres_stem .. "it"
data.forms["1p_pres_actv_indc"] = pres_stem .. "imus"
data.forms["2p_pres_actv_indc"] = pres_stem .. "itis"
data.forms["3p_pres_actv_indc"] = pres_stem .. "iunt"
data.forms["1s_impf_actv_indc"] = pres_stem .. "iēbam"
data.forms["2s_impf_actv_indc"] = pres_stem .. "iēbās"
data.forms["3s_impf_actv_indc"] = pres_stem .. "iēbat"
data.forms["1p_impf_actv_indc"] = pres_stem .. "iēbāmus"
data.forms["2p_impf_actv_indc"] = pres_stem .. "iēbātis"
data.forms["3p_impf_actv_indc"] = pres_stem .. "iēbant"
data.forms["1s_futr_actv_indc"] = pres_stem .. "iam"
data.forms["2s_futr_actv_indc"] = pres_stem .. "iēs"
data.forms["3s_futr_actv_indc"] = pres_stem .. "iet"
data.forms["1p_futr_actv_indc"] = pres_stem .. "iēmus"
data.forms["2p_futr_actv_indc"] = pres_stem .. "iētis"
data.forms["3p_futr_actv_indc"] = pres_stem .. "ient"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = pres_stem .. "ior"
data.forms["2s_pres_pasv_indc"] = {pres_stem .. "eris", pres_stem .. "ere"}
data.forms["3s_pres_pasv_indc"] = pres_stem .. "itur"
data.forms["1p_pres_pasv_indc"] = pres_stem .. "imur"
data.forms["2p_pres_pasv_indc"] = pres_stem .. "iminī"
data.forms["3p_pres_pasv_indc"] = pres_stem .. "iuntur"
data.forms["1s_impf_pasv_indc"] = pres_stem .. "iēbar"
data.forms["2s_impf_pasv_indc"] = {pres_stem .. "iēbāris", pres_stem .. "iēbāre"}
data.forms["3s_impf_pasv_indc"] = pres_stem .. "iēbātur"
data.forms["1p_impf_pasv_indc"] = pres_stem .. "iēbāmur"
data.forms["2p_impf_pasv_indc"] = pres_stem .. "iēbāminī"
data.forms["3p_impf_pasv_indc"] = pres_stem .. "iēbantur"
data.forms["1s_futr_pasv_indc"] = pres_stem .. "iar"
data.forms["2s_futr_pasv_indc"] = {pres_stem .. "iēris", pres_stem .. "iēre"}
data.forms["3s_futr_pasv_indc"] = pres_stem .. "iētur"
data.forms["1p_futr_pasv_indc"] = pres_stem .. "iēmur"
data.forms["2p_futr_pasv_indc"] = pres_stem .. "iēminī"
data.forms["3p_futr_pasv_indc"] = pres_stem .. "ientur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = pres_stem .. "iam"
data.forms["2s_pres_actv_subj"] = pres_stem .. "iās"
data.forms["3s_pres_actv_subj"] = pres_stem .. "iat"
data.forms["1p_pres_actv_subj"] = pres_stem .. "iāmus"
data.forms["2p_pres_actv_subj"] = pres_stem .. "iātis"
data.forms["3p_pres_actv_subj"] = pres_stem .. "iant"
data.forms["1s_impf_actv_subj"] = pres_stem .. "erem"
data.forms["2s_impf_actv_subj"] = pres_stem .. "erēs"
data.forms["3s_impf_actv_subj"] = pres_stem .. "eret"
data.forms["1p_impf_actv_subj"] = pres_stem .. "erēmus"
data.forms["2p_impf_actv_subj"] = pres_stem .. "erētis"
data.forms["3p_impf_actv_subj"] = pres_stem .. "erent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = pres_stem .. "iar"
data.forms["2s_pres_pasv_subj"] = {pres_stem .. "iāris", pres_stem .. "iāre"}
data.forms["3s_pres_pasv_subj"] = pres_stem .. "iātur"
data.forms["1p_pres_pasv_subj"] = pres_stem .. "iāmur"
data.forms["2p_pres_pasv_subj"] = pres_stem .. "iāminī"
data.forms["3p_pres_pasv_subj"] = pres_stem .. "iantur"
data.forms["1s_impf_pasv_subj"] = pres_stem .. "erer"
data.forms["2s_impf_pasv_subj"] = {pres_stem .. "erēris", pres_stem .. "erēre"}
data.forms["3s_impf_pasv_subj"] = pres_stem .. "erētur"
data.forms["1p_impf_pasv_subj"] = pres_stem .. "erēmur"
data.forms["2p_impf_pasv_subj"] = pres_stem .. "erēminī"
data.forms["3p_impf_pasv_subj"] = pres_stem .. "erentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = pres_stem .. "e"
data.forms["2p_pres_actv_impr"] = pres_stem .. "ite"
data.forms["2s_futr_actv_impr"] = pres_stem .. "itō"
data.forms["3s_futr_actv_impr"] = pres_stem .. "itō"
data.forms["2p_futr_actv_impr"] = pres_stem .. "itōte"
data.forms["3p_futr_actv_impr"] = pres_stem .. "iuntō"
data.forms["2s_pres_pasv_impr"] = pres_stem .. "ere"
data.forms["2p_pres_pasv_impr"] = pres_stem .. "iminī"
data.forms["2s_futr_pasv_impr"] = pres_stem .. "itor"
data.forms["3s_futr_pasv_impr"] = pres_stem .. "itor"
-- no form
data.forms["3p_futr_pasv_impr"] = pres_stem .. "iuntor"
-- Present infinitives
data.forms["pres_actv_inf"] = pres_stem .. "ere"
data.forms["pres_pasv_inf"] = pres_stem .. "ī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = pres_stem .. "iēns"
data.forms["futr_pasv_ptc"] = pres_stem .. "iendus"
end
function make_pres_4th(data, pres_stem)
-- Active imperfective indicative
data.forms["1s_pres_actv_indc"] = pres_stem .. "iō"
data.forms["2s_pres_actv_indc"] = pres_stem .. "īs"
data.forms["3s_pres_actv_indc"] = pres_stem .. "it"
data.forms["1p_pres_actv_indc"] = pres_stem .. "īmus"
data.forms["2p_pres_actv_indc"] = pres_stem .. "ītis"
data.forms["3p_pres_actv_indc"] = pres_stem .. "iunt"
data.forms["1s_impf_actv_indc"] = pres_stem .. "iēbam"
data.forms["2s_impf_actv_indc"] = pres_stem .. "iēbās"
data.forms["3s_impf_actv_indc"] = pres_stem .. "iēbat"
data.forms["1p_impf_actv_indc"] = pres_stem .. "iēbāmus"
data.forms["2p_impf_actv_indc"] = pres_stem .. "iēbātis"
data.forms["3p_impf_actv_indc"] = pres_stem .. "iēbant"
data.forms["1s_futr_actv_indc"] = pres_stem .. "iam"
data.forms["2s_futr_actv_indc"] = pres_stem .. "iēs"
data.forms["3s_futr_actv_indc"] = pres_stem .. "iet"
data.forms["1p_futr_actv_indc"] = pres_stem .. "iēmus"
data.forms["2p_futr_actv_indc"] = pres_stem .. "iētis"
data.forms["3p_futr_actv_indc"] = pres_stem .. "ient"
-- Passive imperfective indicative
data.forms["1s_pres_pasv_indc"] = pres_stem .. "ior"
data.forms["2s_pres_pasv_indc"] = {pres_stem .. "īris", pres_stem .. "īre"}
data.forms["3s_pres_pasv_indc"] = pres_stem .. "ītur"
data.forms["1p_pres_pasv_indc"] = pres_stem .. "īmur"
data.forms["2p_pres_pasv_indc"] = pres_stem .. "īminī"
data.forms["3p_pres_pasv_indc"] = pres_stem .. "iuntur"
data.forms["1s_impf_pasv_indc"] = pres_stem .. "iēbar"
data.forms["2s_impf_pasv_indc"] = {pres_stem .. "iēbāris", pres_stem .. "iēbāre"}
data.forms["3s_impf_pasv_indc"] = pres_stem .. "iēbātur"
data.forms["1p_impf_pasv_indc"] = pres_stem .. "iēbāmur"
data.forms["2p_impf_pasv_indc"] = pres_stem .. "iēbāminī"
data.forms["3p_impf_pasv_indc"] = pres_stem .. "iēbantur"
data.forms["1s_futr_pasv_indc"] = pres_stem .. "iar"
data.forms["2s_futr_pasv_indc"] = {pres_stem .. "iēris", pres_stem .. "iēre"}
data.forms["3s_futr_pasv_indc"] = pres_stem .. "iētur"
data.forms["1p_futr_pasv_indc"] = pres_stem .. "iēmur"
data.forms["2p_futr_pasv_indc"] = pres_stem .. "iēminī"
data.forms["3p_futr_pasv_indc"] = pres_stem .. "ientur"
-- Active imperfective subjunctive
data.forms["1s_pres_actv_subj"] = pres_stem .. "iam"
data.forms["2s_pres_actv_subj"] = pres_stem .. "iās"
data.forms["3s_pres_actv_subj"] = pres_stem .. "iat"
data.forms["1p_pres_actv_subj"] = pres_stem .. "iāmus"
data.forms["2p_pres_actv_subj"] = pres_stem .. "iātis"
data.forms["3p_pres_actv_subj"] = pres_stem .. "iant"
data.forms["1s_impf_actv_subj"] = pres_stem .. "īrem"
data.forms["2s_impf_actv_subj"] = pres_stem .. "īrēs"
data.forms["3s_impf_actv_subj"] = pres_stem .. "īret"
data.forms["1p_impf_actv_subj"] = pres_stem .. "īrēmus"
data.forms["2p_impf_actv_subj"] = pres_stem .. "īrētis"
data.forms["3p_impf_actv_subj"] = pres_stem .. "īrent"
-- Passive imperfective subjunctive
data.forms["1s_pres_pasv_subj"] = pres_stem .. "iar"
data.forms["2s_pres_pasv_subj"] = {pres_stem .. "iāris", pres_stem .. "iāre"}
data.forms["3s_pres_pasv_subj"] = pres_stem .. "iātur"
data.forms["1p_pres_pasv_subj"] = pres_stem .. "iāmur"
data.forms["2p_pres_pasv_subj"] = pres_stem .. "iāminī"
data.forms["3p_pres_pasv_subj"] = pres_stem .. "iantur"
data.forms["1s_impf_pasv_subj"] = pres_stem .. "īrer"
data.forms["2s_impf_pasv_subj"] = {pres_stem .. "īrēris", pres_stem .. "īrēre"}
data.forms["3s_impf_pasv_subj"] = pres_stem .. "īrētur"
data.forms["1p_impf_pasv_subj"] = pres_stem .. "īrēmur"
data.forms["2p_impf_pasv_subj"] = pres_stem .. "īrēminī"
data.forms["3p_impf_pasv_subj"] = pres_stem .. "īrentur"
-- Imperative
data.forms["2s_pres_actv_impr"] = pres_stem .. "ī"
data.forms["2p_pres_actv_impr"] = pres_stem .. "īte"
data.forms["2s_futr_actv_impr"] = pres_stem .. "ītō"
data.forms["3s_futr_actv_impr"] = pres_stem .. "ītō"
data.forms["2p_futr_actv_impr"] = pres_stem .. "ītōte"
data.forms["3p_futr_actv_impr"] = pres_stem .. "iuntō"
data.forms["2s_pres_pasv_impr"] = pres_stem .. "īre"
data.forms["2p_pres_pasv_impr"] = pres_stem .. "īminī"
data.forms["2s_futr_pasv_impr"] = pres_stem .. "ītor"
data.forms["3s_futr_pasv_impr"] = pres_stem .. "ītor"
-- no form
data.forms["3p_futr_pasv_impr"] = pres_stem .. "iuntor"
-- Present infinitives
data.forms["pres_actv_inf"] = pres_stem .. "īre"
data.forms["pres_pasv_inf"] = pres_stem .. "īrī"
-- Imperfective participles
data.forms["pres_actv_ptc"] = pres_stem .. "iēns"
data.forms["futr_pasv_ptc"] = pres_stem .. "iendus"
end
function make_perf(data, perf_stem)
if not perf_stem then
return
end
-- Perfective indicative
data.forms["1s_perf_actv_indc"] = perf_stem .. "ī"
data.forms["2s_perf_actv_indc"] = perf_stem .. "istī"
data.forms["3s_perf_actv_indc"] = perf_stem .. "it"
data.forms["1p_perf_actv_indc"] = perf_stem .. "imus"
data.forms["2p_perf_actv_indc"] = perf_stem .. "istis"
data.forms["3p_perf_actv_indc"] = {perf_stem .. "ērunt", perf_stem .. "ēre"}
data.forms["1s_plup_actv_indc"] = perf_stem .. "eram"
data.forms["2s_plup_actv_indc"] = perf_stem .. "erās"
data.forms["3s_plup_actv_indc"] = perf_stem .. "erat"
data.forms["1p_plup_actv_indc"] = perf_stem .. "erāmus"
data.forms["2p_plup_actv_indc"] = perf_stem .. "erātis"
data.forms["3p_plup_actv_indc"] = perf_stem .. "erant"
data.forms["1s_futp_actv_indc"] = perf_stem .. "erō"
data.forms["2s_futp_actv_indc"] = perf_stem .. "eris"
data.forms["3s_futp_actv_indc"] = perf_stem .. "erit"
data.forms["1p_futp_actv_indc"] = perf_stem .. "erimus"
data.forms["2p_futp_actv_indc"] = perf_stem .. "eritis"
data.forms["3p_futp_actv_indc"] = perf_stem .. "erint"
-- Perfective subjunctive
data.forms["1s_perf_actv_subj"] = perf_stem .. "erim"
data.forms["2s_perf_actv_subj"] = perf_stem .. "erīs"
data.forms["3s_perf_actv_subj"] = perf_stem .. "erit"
data.forms["1p_perf_actv_subj"] = perf_stem .. "erīmus"
data.forms["2p_perf_actv_subj"] = perf_stem .. "erītis"
data.forms["3p_perf_actv_subj"] = perf_stem .. "erint"
data.forms["1s_plup_actv_subj"] = perf_stem .. "issem"
data.forms["2s_plup_actv_subj"] = perf_stem .. "issēs"
data.forms["3s_plup_actv_subj"] = perf_stem .. "isset"
data.forms["1p_plup_actv_subj"] = perf_stem .. "issēmus"
data.forms["2p_plup_actv_subj"] = perf_stem .. "issētis"
data.forms["3p_plup_actv_subj"] = perf_stem .. "issent"
-- Perfect infinitive
data.forms["perf_actv_inf"] = perf_stem .. "isse"
end
function make_supine(data, supine_stem)
if not supine_stem then
return
end
-- Perfect/future infinitives
if reconstructed then
data.forms["futr_actv_inf"] = "[[Appendix:Latin/" .. supine_stem .. "ūrus|" .. supine_stem .. "ūrus]] [[esse]]"
data.forms["perf_pasv_inf"] = "[[Appendix:Latin/" .. supine_stem .. "us|" .. supine_stem .. "us]] [[esse]]"
data.forms["futr_pasv_inf"] = "[[Appendix:Latin/" .. supine_stem .. "um|" .. supine_stem .. "um]] [[īrī]]"
else
data.forms["futr_actv_inf"] = "[[" .. supine_stem .. "ūrus]] [[esse]]"
data.forms["perf_pasv_inf"] = "[[" .. supine_stem .. "us]] [[esse]]"
data.forms["futr_pasv_inf"] = "[[" .. supine_stem .. "um]] [[īrī]]"
end
-- Perfect/future participles
data.forms["futr_actv_ptc"] = supine_stem .. "ūrus"
data.forms["perf_pasv_ptc"] = supine_stem .. "us"
--Exceptions
if supine_stem == "mortu" then
data.forms["futr_actv_ptc"] = "moritūrus"
elseif supine_stem == "praemortu" then
data.forms["futr_actv_ptc"] = "praemoritūrus"
elseif supine_stem == "ort" then
data.forms["futr_actv_ptc"] = "oritūrus"
elseif supine_stem == "abort" then
data.forms["futr_actv_ptc"] = "aboritūrus"
elseif supine_stem == "adort" then
data.forms["futr_actv_ptc"] = "adoritūrus"
elseif supine_stem == "coort" then
data.forms["futr_actv_ptc"] = "cooritūrus"
end
end
-- Functions for generating the inflection table
function show_form(form)
if not form then
return "—"
end
if type(form) == "table" then
for key, subform in ipairs(form) do
if reconstructed and not mw.ustring.find(subform,"Appendix:Latin/")then
form[key] = m_links.full_link("Appendix:Latin/"..subform, subform, lang, nil, nil, nil, {}, false)
else
form[key] = m_links.full_link(subform, nil, lang, nil, nil, nil, {}, false)
end
end
return table.concat(form, ", ")
else
if reconstructed and not mw.ustring.find(form,"Appendix:Latin/") then
return m_links.full_link("Appendix:Latin/"..form, form, lang, nil, nil, nil, {}, false)
else
return m_links.full_link(form, nil, lang, nil, nil, nil, {}, false)
end
end
end
-- Make the table
function make_table(data)
pagename = mw.title.getCurrentTitle().text
if reconstructed then
pagename = mw.ustring.gsub(pagename,"Latin/","")
end
return [=[<div class="NavFrame">
<div class="NavHead" style="text-align: left">Conjugation of ]=] .. m_links.full_link(nil, pagename, lang, nil, "term", nil, {}, false) .. (#data.title > 0 and " (" .. table.concat(data.title, ", ") .. ")" or "") .. [=[</div>
<div class="NavContent">
{| style="background:#F0F0F0;width:100%" class="inflection-table"]=] .. make_indc_rows(data) .. make_subj_rows(data) .. make_impr_rows(data) .. make_nonfin_rows(data) .. [=[
|}
</div></div>]=]
end
local tenses = {
["pres"] = "present",
["impf"] = "imperfect",
["futr"] = "future",
["perf"] = "perfect",
["plup"] = "pluperfect",
["futp"] = "future perfect",
}
local voices = {
["actv"] = "active",
["pasv"] = "passive",
}
local moods = {
["indc"] = "indicative",
["subj"] = "subjunctive",
["impr"] = "imperative",
}
local nonfins = {
["inf"] = "infinitives",
["ptc"] = "participles",
}
function make_indc_rows(data)
local indc = {}
for _, v in ipairs({"actv", "pasv"}) do
local group = {}
local nonempty = false
for _, t in ipairs({"pres", "impf", "futr", "perf", "plup", "futp"}) do
local row = {}
local notempty = false
if data.forms[t .. "_" .. v .. "_indc"] then
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_indc"]
nonempty = true
notempty = true
else
for col, p in ipairs({"1s", "2s", "3s", "1p", "2p", "3p"}) do
row[col] = "\n| " .. show_form(data.forms[p .. "_" .. t .. "_" .. v .. "_indc"])
if data.forms[p .. "_" .. t .. "_" .. v .. "_indc"] then
nonempty = true
notempty = true
end
end
row = table.concat(row)
end
if notempty then
table.insert(group, "\n! style=\"background:#c0cfe4\" | " .. tenses[t] .. row)
end
end
if nonempty and #group > 0 then
table.insert(indc, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#c0cfe4\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-"))
end
end
return
[=[
|-
! colspan="2" rowspan="2" style="background:#c0cfe4" | indicative
! colspan="3" style="background:#c0cfe4" | ''singular''
! colspan="3" style="background:#c0cfe4" | ''plural''
|-
! style="background:#c0cfe4;width:12.5%" | [[first person|first]]
! style="background:#c0cfe4;width:12.5%" | [[second person|second]]
! style="background:#c0cfe4;width:12.5%" | [[third person|third]]
! style="background:#c0cfe4;width:12.5%" | [[first person|first]]
! style="background:#c0cfe4;width:12.5%" | [[second person|second]]
! style="background:#c0cfe4;width:12.5%" | [[third person|third]]
]=] .. table.concat(indc)
end
function make_subj_rows(data)
local subj = {}
for _, v in ipairs({"actv", "pasv"}) do
local group = {}
local nonempty = false
for _, t in ipairs({"pres", "impf", "perf", "plup"}) do
local row = {}
local notempty = false
if data.forms[t .. "_" .. v .. "_subj"] then
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_subj"]
nonempty = true
notempty = true
else
for col, p in ipairs({"1s", "2s", "3s", "1p", "2p", "3p"}) do
row[col] = "\n| " .. show_form(data.forms[p .. "_" .. t .. "_" .. v .. "_subj"])
if data.forms[p .. "_" .. t .. "_" .. v .. "_subj"] then
nonempty = true
notempty = true
end
end
row = table.concat(row)
end
if notempty then
table.insert(group, "\n! style=\"background:#c0e4c0\" | " .. tenses[t] .. row)
end
end
if nonempty and #group > 0 then
table.insert(subj, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#c0e4c0\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-"))
end
end
return
[=[
|-
! colspan="2" rowspan="2" style="background:#c0e4c0" | subjunctive
! colspan="3" style="background:#c0e4c0" | ''singular''
! colspan="3" style="background:#c0e4c0" | ''plural''
|-
! style="background:#c0e4c0;width:12.5%" | [[first person|first]]
! style="background:#c0e4c0;width:12.5%" | [[second person|second]]
! style="background:#c0e4c0;width:12.5%" | [[third person|third]]
! style="background:#c0e4c0;width:12.5%" | [[first person|first]]
! style="background:#c0e4c0;width:12.5%" | [[second person|second]]
! style="background:#c0e4c0;width:12.5%" | [[third person|third]]
]=] .. table.concat(subj)
end
function make_impr_rows(data)
local impr = {}
local has_impr = false
for _, v in ipairs({"actv", "pasv"}) do
local group = {}
local nonempty = false
for _, t in ipairs({"pres", "futr"}) do
local row = {}
if data.forms[t .. "_" .. v .. "_impr"] then
row = "\n! colspan=\"6\" style=\"background: #C0C0C0\" |" .. data.forms[t .. "_" .. v .. "_impr"]
nonempty = true
else
for col, p in ipairs({"1s", "2s", "3s", "1p", "2p", "3p"}) do
row[col] = "\n| " .. show_form(data.forms[p .. "_" .. t .. "_" .. v .. "_impr"])
if data.forms[p .. "_" .. t .. "_" .. v .. "_impr"] then
nonempty = true
end
end
row = table.concat(row)
end
table.insert(group, "\n! style=\"background:#e4d4c0\" | " .. tenses[t] .. row)
end
if nonempty and #group > 0 then
has_impr = true
table.insert(impr, "\n|-\n! rowspan=\"" .. tostring(#group) .. "\" style=\"background:#e4d4c0\" | " .. voices[v] .. "\n" .. table.concat(group, "\n|-"))
end
end
if not has_impr then
return ""
end
return
[=[
|-
! colspan="2" rowspan="2" style="background:#e4d4c0" | imperative
! colspan="3" style="background:#e4d4c0" | ''singular''
! colspan="3" style="background:#e4d4c0" | ''plural''
|-
! style="background:#e4d4c0;width:12.5%" | [[first person|first]]
! style="background:#e4d4c0;width:12.5%" | [[second person|second]]
! style="background:#e4d4c0;width:12.5%" | [[third person|third]]
! style="background:#e4d4c0;width:12.5%" | [[first person|first]]
! style="background:#e4d4c0;width:12.5%" | [[second person|second]]
! style="background:#e4d4c0;width:12.5%" | [[third person|third]]
]=] .. table.concat(impr)
end
function make_nonfin_rows(data)
local nonfin = {}
for _, f in ipairs({"inf", "ptc"}) do
local row = {}
for col, t in ipairs({"pres_actv", "perf_actv", "futr_actv", "pres_pasv", "perf_pasv", "futr_pasv"}) do
row[col] = "\n| " .. show_form(data.forms[t .. "_" .. f])
end
row = table.concat(row)
table.insert(nonfin, "\n|-\n! style=\"background:#e2e4c0\" colspan=\"2\" | " .. nonfins[f] .. row)
end
return
[=[
|-
! colspan="2" rowspan="2" style="background:#e2e4c0" | non-finite forms
! colspan="3" style="background:#e2e4c0" | active
! colspan="3" style="background:#e2e4c0" | passive
|-
! style="background:#e2e4c0;width:13%" | present
! style="background:#e2e4c0;width:13%" | perfect
! style="background:#e2e4c0;width:13%" | future
! style="background:#e2e4c0;width:13%" | present
! style="background:#e2e4c0;width:13%" | perfect
! style="background:#e2e4c0;width:13%" | future]=] .. table.concat(nonfin)
end
function checkexist(data)
if NAMESPACE ~= '' then return end
local result = {}
for verb_form,conjugation in pairs(data.forms) do
if conjugation and type(conjugation) == 'string' and not mw.ustring.find(conjugation," ") then
title = lang:makeEntryName(conjugation)
local t = mw.title.new(title)
if t and not t.exists then
table.insert(data.categories,'Latin verbs having red links in their conjugation table')
end
end
end
end
function checkirregular(args,data)
local apocopic = mw.ustring.sub(args[1],1,-2)
apocopic = mw.ustring.gsub(apocopic,'[^aeiouyāēīōūȳ]+$','')
if args[1] and args[2] and not mw.ustring.find(args[2],'^'..apocopic) then
table.insert(data.categories,'Latin stem-changing verbs')
end
end
return export