Module:ast-conj
Appearance
- The following documentation is located at Module:ast-conj/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
local m_gen_num = require("Module:gender and number")
local m_links = require("Module:links")
local m_utilities = require("Module:utilities")
local m_infl = require("Module:ast-conj/data")
local lang = require("Module:languages").getByCode("ast")
local export = {}
-- Shows forms with links, or a dash if empty
local function show_form(subforms)
if not subforms then
return "—"
elseif type(subforms) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
elseif #subforms == 0 then
return "—"
end
local ret = {}
-- Go over each subform and insert links
for key, subform in ipairs(subforms) do
table.insert(ret, m_links.full_link({lang = lang, term = subform}))
end
return table.concat(ret, ", ")
end
-- Shows the table with the given forms
local function make_table(data)
local ret = {[=[<div class="NavFrame">
<div class="NavHead" align="center">Conjugation of ]=]}
table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.infinitive[1]}, "term") .. "</div>\n")
table.insert(ret, [=[<div class="NavContent" align="left">
{| class="roa-inflection-table" data-toggle-category="inflection"
|-
! class="roa-nonfinite-header" colspan="2" | infinitive
| colspan="6" | ]=])
table.insert(ret, show_form(data.forms.infinitive) .. "\n")
table.insert(ret, [=[|-
! class="roa-nonfinite-header" colspan="2" | gerund
| colspan="6" | ]=])
table.insert(ret, show_form(data.forms.gerund) .. "\n")
table.insert(ret, [=[|-
! class="roa-nonfinite-header" colspan="2" | past participle
| colspan="6" | ]=])
if not data.forms.part_all then
table.insert(ret, m_gen_num.format_list({"m"}) .. " " .. show_form(data.forms.part_m) .. ", ")
table.insert(ret, m_gen_num.format_list({"f"}) .. " " .. show_form(data.forms.part_f) .. ", ")
table.insert(ret, m_gen_num.format_list({"n"}) .. " " .. show_form(data.forms.part_n) .. ", ")
table.insert(ret, m_gen_num.format_list({"m-p"}) .. " " .. show_form(data.forms["part_m-p"]) .. ", ")
table.insert(ret, m_gen_num.format_list({"f-p"}) .. " " .. show_form(data.forms["part_f-p"]) .. "\n")
else
table.insert(ret, show_form(data.forms.part_all) .. "\n")
end
table.insert(ret, [=[
|- class="roa-person-number-header"
! colspan="2" | person
! style="width:12.5%" | first singular<br/>yo
! style="width:12.5%" | second singular<br/>tu
! style="width:12.5%" | third singular<br/>él/elli
! style="width:12.5%" | first plural<br/>nosotros/nós
! style="width:12.5%" | second plural<br/>vosotros/vós
! style="width:12.5%" | third plural<br/>ellos
|-
! class="roa-indicative-left-rail" rowspan="6" | indicative
! class="roa-indicative-left-rail" style="height:3em;" | present
]=])
table.insert(ret, "| " .. show_form(data.forms.pres_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-indicative-left-rail" style="height:3em;" | imperfect
]=])
table.insert(ret, "| " .. show_form(data.forms.impf_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-indicative-left-rail" style="height:3em;" | preterite
]=])
table.insert(ret, "| " .. show_form(data.forms.pret_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pret_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pret_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pret_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pret_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pret_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-indicative-left-rail" style="height:3em;" | pluperfect
]=])
table.insert(ret, "| " .. show_form(data.forms.plup_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.plup_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.plup_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.plup_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.plup_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.plup_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-indicative-left-rail" style="height:3em;" | future
]=])
table.insert(ret, "| " .. show_form(data.forms.futr_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.futr_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.futr_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.futr_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.futr_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.futr_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-indicative-left-rail" style="height:3em;" | conditional
]=])
table.insert(ret, "| " .. show_form(data.forms.cond_ind_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.cond_ind_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.cond_ind_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.cond_ind_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.cond_ind_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.cond_ind_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-subjunctive-left-rail" rowspan="2" | subjunctive
! class="roa-subjunctive-left-rail" style="height:3em;" | present
]=])
table.insert(ret, "| " .. show_form(data.forms.pres_sub_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_sub_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_sub_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_sub_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_sub_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.pres_sub_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-subjunctive-left-rail" style="height:3em;" | imperfect
]=])
table.insert(ret, "| " .. show_form(data.forms.impf_sub_1sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_sub_2sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_sub_3sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_sub_1pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_sub_2pl) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.impf_sub_3pl) .. "\n")
table.insert(ret, [=[
|-
! class="roa-imperative-left-rail" style="height:3em;" colspan="2" | imperative
| —
| ]=])
table.insert(ret, show_form(data.forms.impr_2sg) .. "\n")
table.insert(ret, [=[
| —
| —
| ]=])
table.insert(ret, show_form(data.forms.impr_2pl) .. "\n")
table.insert(ret, [=[
| —
|}
</div></div>]=])
return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. table.concat(ret)
end
-- Main entry point
function export.show(frame)
local args = frame:getParent().args
-- Create the forms
local data = {forms = {}, categories = {}, refl = false}
-- Find what type of verb is it (hard-coded in the template).
-- m_gen_numerate standard conjugated forms for each type of verb,
local infl_type = frame.args["conj"]
if not args[1] then args[1] = "{{{1}}}" end
--[[ Provisional code to prevent arg 2 from being blank, to avoid
the following forms from ending up as blank stems with their
inflectional endings in cases where this is invoked with only
args 1 and 3:
* 1st sg. ind. (would result in "o")
* 3rd sg. ind. (would result in "a")
* 2nd. sg. imp. (would result in "a")
]]--
if (args[2] == "" or not args[2]) then args[2] = args[1] end
if not infl_type then
data.forms.infinitive = {args["inf"]}; if data.forms.infinitive[1] == "" then data.forms.infinitive = nil end
elseif m_infl[infl_type] then
m_infl[infl_type](args, data)
else
error("Verb type " .. infl_type .. " not supported.")
end
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
return export