Module:User:DanishtD/Sandbox
Jump to navigation
Jump to search
- This module lacks a documentation subpage. You may create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • user page • user talk page • userspace
This is a private module sandbox of DanishtD, for their own experimentation. Items in this module may be added and removed at DanishtD's discretion; do not rely on this module's stability.
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:User:DanishtD/Sandbox/data")
local lang = require("Module:languages").getByCode("liv")
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" style="width:450px">
<div class="NavHead" style="" >[[Appendix:Livonian declension|Declension]] of ]=]}
table.insert(ret, m_links.full_link({lang = lang, alt = data.forms.nom_sg[1]}, "term") .. " (Viitso type\n")
table.insert(ret, show_form({data.infl_type}) .. ")</div>\n")
table.insert(ret, [=[<div class="NavContent">
{| border="1px solid #000000" style="border-collapse:collapse; background:#F9F9F9; text-align:center; width:100%" class="inflection-table"
|-
! style="width:158px;background:#DEDEDE" |
! style="background:#DEDEDE" | singular <small>([[ikšlug]])</small>
! style="background:#DEDEDE" | plural <small>([[pǟgiņlug]])</small>
|-
! style="background:#EFEFEF" | nominative <small>([[nominatīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.nom_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.nom_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | genitive <small>([[genitīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.gen_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.gen_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | partitive <small>([[partitīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.par_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.par_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | dative <small>([[datīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.dat_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.dat_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | instrumental <small>([[instrumentāl]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.ins_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.ins_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | illative <small>([[illatīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.ill_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.ill_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | inessive <small>([[inesīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.ine_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.ine_pl) .. "\n")
table.insert(ret, [=[
|-
! style="background:#EFEFEF" | elative <small>([[elatīv]])</small>
]=])
table.insert(ret, "| " .. show_form(data.forms.ela_sg) .. "\n")
table.insert(ret, "| " .. show_form(data.forms.ela_pl) .. "\n")
table.insert(ret, [=[
|-
|}</div></div>]=])
return 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["decl"]
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
]]--
if (args[2] == "" or not args[2]) then args[2] = args[1] end
if not infl_type then
data.forms.nom_sg = {args["nom_sg"]}; if data.forms.nom_sg[1] == "" then data.forms.nom_sg = nil end
elseif m_infl[infl_type] then
m_infl[infl_type](args, data)
else
error("Noun type " .. infl_type .. " not supported.")
end
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
return export