local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("nr")
local export = {}
function export.relative(frame)
local params = {
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "relative concord", categories = {}}
if args == "L" or args == "H" or args == "LH" or args == "HH" or args == "HHH" then
data.info = data.info .. ", tone " .. args
table.insert(data.categories, lang:getCanonicalName() .. " adjectives with tone " .. args)
elseif args then
error("The tone must be \"L\", \"H\", \"LH\", \"HH\" or \"HHH\".")
else
table.insert(data.categories, "Requests for tone in " .. lang:getCanonicalName() .. " relative entries")
end
local base = mw.title.getCurrentTitle().subpageText
data.forms = {"engi" .. base}
data.forms = {"o" .. base}
data.forms = {"esi" .. base}
data.forms = {"eni" .. base}
data.forms = {"o" .. base}
data.forms = {"aba" .. base}
data.forms = {"o" .. base}
data.forms = {"e" .. base}
data.forms = {"eli" .. base}
data.forms = {"a" .. base}
data.forms = {"esi" .. base}
data.forms = {"ezi" .. base}
data.forms = {"e" .. base}
data.forms = {"ezi" .. base}
data.forms = {"obu" .. base}
data.forms = {"oku" .. base}
data.forms = {"oku" .. base}
data.forms = {"ngi" .. base}
data.forms = {"u" .. base}
data.forms = {"si" .. base}
data.forms = {"ni" .. base}
data.forms = {"u" .. base}
data.forms = {"ba" .. base}
data.forms = {"u" .. base}
data.forms = {"i" .. base}
data.forms = {"li" .. base}
data.forms = {"a" .. base}
data.forms = {"si" .. base}
data.forms = {"zi" .. base}
data.forms = {"i" .. base}
data.forms = {"zi" .. base}
data.forms = {"bu" .. base}
data.forms = {"ku" .. base}
data.forms = {"ku" .. base}
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return mw.getContentLanguage():ucfirst(data.info or "")
end
local form = data.forms
if not form or #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform}))
end
return table.concat(ret, ", ")
end
local names = {
= "modifier",
= "copulative",
= "1st singular",
= "2nd singular",
= "1st plural",
= "2nd plural",
= "class 1",
= "class 2",
= "class 3",
= "class 4",
= "class 5",
= "class 6",
= "class 7",
= "class 8",
= "class 9",
= "class 10",
= "class 14",
= "class 15",
= "class 17",
}
local classes = {"c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c14", "c15", "c17"}
local columns = {"mod"}
if not data.simple then
table.insert(classes, 1, "1sg")
table.insert(classes, 2, "2sg")
table.insert(classes, 3, "1pl")
table.insert(classes, 4, "2pl")
table.insert(columns, "cop")
end
local wikicode = {}
table.insert(wikicode, mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = '{{{info}}}',
palette = 'brown',
tall = 'yes',
}
})
table.insert(wikicode, "! ")
for _, col in ipairs(columns) do
table.insert(wikicode, "! " .. names)
end
for _, class in ipairs(classes) do
table.insert(wikicode, "|- ")
table.insert(wikicode, "! " .. names)
for _, col in ipairs(columns) do
table.insert(wikicode, "| {{{" .. col .. "_" .. class .. "}}}")
end
end
table.insert(wikicode, mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' })
wikicode = table.concat(wikicode, "\n")
return mw.ustring.gsub(wikicode, "{{{(+)}}}", repl)
end
return export